1. Trang chủ
  2. » Luận Văn - Báo Cáo

THỰC HIỆN bộ lọc FIR TRÊN CHÍP FPGA

65 316 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 65
Dung lượng 829 KB

Nội dung

Ketnooi.com Kho tài liệu miễn phí lớn VN MỤC LỤC BẢNG KÝ HIỆU VIẾT TẮT Ký Hiệu Diễn Giải ASIC Application Specific Integrated Circuit ADC Analog to Digital Converter ALU Arithmetic Logic Unit ASM Auto Senquencing Memory CPLD Complex Programmable Logic Device CPU Central Processing Unit DSP Digital Signal Processing DAC Digital to Analog Converter DPU Data Processing Unit FIR Finite Impulse Response FPGA Field Programmable Gate Array HDL Hardware Description Language IC Integrated Circuit IEEE Institute of Electrical and Electronics Engineers JTAG Joint Test Action Group LED Light Emitting Diode LUT Look Up Table LMS Least Mean Square PAL Programmable Array Logic PLA Programmable Logic Array PCI Peripheral Component Interconnect Nguyễn Anh Cường Ketnooi.com Kho tài liệu miễn phí lớn VN PE Process Element RAM Random Access Memory ROM Read Only Memory RS232 Recommended Standard 232 SoC System on chip SRAM Static Random Access Memory SPLD Simple Programable Logic Device USB Universal Serial Bus VHDL Very High Speed Itergrated Circuit Hardware Description Language VHSIC Very High Speed Itergrated Circuit Nguyễn Anh Cường Ketnooi.com Kho tài liệu miễn phí lớn VN LỜI MỞ ĐẦU Ngày nay, xử lý tín hiệu lọc số một ngành phát triển mạnh me, các công nghệ, thuật toán ngày được đổi mới tối ưu hoá nhằm nâng cao tính hiệu quả Tuy nhiên, công nghệ phát triển cao thì đòi hỏi phần cứng phải đủ nhanh để xử lý Các mạch lọc tương tự trước không đủ khả để đáp ứng yêu cầu Vì vậy, FPGA đời một giải pháp cung cấp môi trường làm việc hiệu quả cho các ứng dụng thực tế Tính linh động cao quá trình thiết kế cho phép FPGA giải toán phức tạp mà trước thực nhờ phần mềm máy tính Ngoài ra, nhờ mật độ cổng logic cao, FPGA được ứng dụng cho toán đòi hỏi khối lượng tính toán lớn dùng các hệ thống làm việc theo thời gian thực Những ứng dụng thực tế FPGA rất rộng rãi, bao gồm: các hệ thống hàng không, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC(ASIC prototyping), các hệ thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học, mô hình phần cứng máy tính Đặc biệt, với khả tái lập trình, người sử dụng thay đổi lại thiết kế mình vài giờ Chính vì tính thiết thực mà FPGA mang lại, em định chọn FPGA làm hướng nghiên cứu mình Trong khoá luận này, em xin trình bày một ứng dụng cụ thể FPGA xử lý tín hiệu số “Thực lọc FIR thích nghi dùng thuật toán LMS” Đề tài được thực tại phòng thí nghiệm mục tiêu “Các hệ tích hợp thông minh ( SIS LAB)” trực thuộc trường Đại học Công nghệ - ĐHQG HN Em xin chân thành cảm ơn các thầy cô giáo đặc biệt PGS.TS Trần Quang Vinh Th.S Nguyễn Kiêm Hùng tận tình hướng dẫn giúp đỡ em để hoàn thành bản luận văn một cách tốt đẹp Do thời gian kiến thức có hạn nên công trình tránh khỏi sai sót, vì em rất mong nhận được các ý kiến đóng góp các thầy cô các bạn Em xin chân thành cảm ơn ! Hà Nội, Ngày 27 Tháng Năm 2008 Nguyễn Anh Cường Nguyễn Anh Cường Ketnooi.com Kho tài liệu miễn phí lớn VN Chương TỔNG QUAN VỀ FPGA VÀ NGÔN NGỮ VHDL 1.1 TỔNG QUAN VỀ FPGA 1.1.1 Lịch sử đời FPGA FPGA được thiết kế Ross Freeman, người sáng lập công ty Xilinx vào năm 1984, kiến trúc mới FPGA cho phép tích hợp số lượng tương đối lớn các phần tử bán dẫn vào vi mạch so với kiến trúc trước CPLD FPGA có khả chứa tới từ 100.000 đến hàng vài tỷ cổng logic, CPLD chứa từ 10.000 đến 100.000 cổng logic; số đối với PAL, PLA thấp đạt vài nghìn đến 10.000 CPLD được cấu trúc từ số lượng nhất định các khối SPLD (Simple programable logic device) thuật ngữ chung PAL, PLA SPLD thường một mảng logic AND/OR lập trình được có kích thước xác định chứa một số lượng hạn chế các phần tử nhớ đồng bộ (clocked register) Cấu trúc hạn chế khả thực hàm phức tạp thông thường hiệu suất làm việc vi mạch phụ thuộc vào cấu trúc cụ thể vi mạch vào yêu cầu toán Kiến trúc FPGA kiến trúc mảng các khối logic, khối nhỏ nhiều đem so sánh với một khối SPLD, ưu điểm giúp FPGA chứa nhiều các phần tử logic phát huy tối đa khả lập trình các phần tử logic hệ thống mạch kết nối, để đạt được mục đích thì kiến trúc FPGA phức tạp nhiều so với CPLD Một điểm khác biệt với CPLD FPGA đại được tích hợp nhiều bộ logic số học được tối ưu hóa, hỗ trợ RAM, ROM, tốc độ cao, hay các bộ nhân, cộng dùng cho ứng dụng xử lý tín hiệu số Ngoài khả cấu trúc lại vi mạch mức toàn cục, một số FPGA đại hỗ trợ cấu trúc lại mức cục bộ, tức khả cấu trúc lại một bộ phận riêng lẻ đảm bảo hoạt động bình thường cho các bộ phận khác Nguyễn Anh Cường Ketnooi.com Kho tài liệu miễn phí lớn VN 1.1.2 Khái niệm cấu trúc FPGA FPGA (Field-programmable gate array) vi mạch dùng cấu trúc mảng phần tử logic mà người dùng lập trình được Chữ field muốn đến khả tái lập trình “bên ngoài” tuỳ theo mục đích ứng dụng người sử dụng, không phụ thuộc vào dây chuyền sản xuất phức tạp nhà máy bán dẫn Kiến trúc tổng quan FPGA được mô tả hình 1: Hình 1: Kiến trúc tổng quan FPGA Nguyễn Anh Cường Ketnooi.com Kho tài liệu miễn phí lớn VN Vi mạch FPGA được cấu thành từ các bộ phận: • Các khối logic lập trình (logic block) Phần tử FPGA các khối logic (logic block) Khối logic được cấu thành từ LUT một phần tử nhớ đồng bộ flip-flop LUT (Look up table) khối logic thực bất kì hàm logic từ đầu vào, kết quả hàm tùy vào mục đích mà gửi khối logic trực tiếp hay thông qua phần tử nhớ flip-flop Khối logic được mô tả hình 2: Hình 2: Khối logic lập trình được FPGA Trong tài liệu hướng dẫn các dòng FPGA Xilinx sử dụng khái niệm SLICE, Slice gồm khối logic tạo thành, số lượng các Slices thay đổi từ vài nghìn đến vài chục nghìn tùy theo loại FPGA • Hệ thống mạch liên kết lập trình Mạng liên kết FPGA được cấu thành từ các đường kết nối theo hai phương ngang đứng, tùy theo loại FPGA mà các đường kết nối được chia thành các nhóm khác nhau, ví dụ XC4000 Xilinx có loại kết nối: ngắn, dài rất dài Các đường kết nối được nối với thông qua các khối chuyển mạch lập trình được (programable switch), một khối chuyển mạch chứa một số lượng nút chuyển lập trình được, đảm bảo cho các dạng liên kết phức tạp khác • Khối vào/ra (IO Pads) Khối vào/ra nhiều hay tuỳ thuộc vào loại FPGA Chúng được kết nối với các thiết bị bên LED, USB, RS232, RAM tuỳ theo mục đích sử dụng • Các phần tử tích hợp sẵn Ngoài các khối logic, tùy theo các loại FPGA khác mà có các phần tử tích hợp thêm khác nhau, ví dụ để thiết kế ứng dụng SoC, dòng Virtex Nguyễn Anh Cường Ketnooi.com Kho tài liệu miễn phí lớn VN 4, Xilinx có chứa nhân xử lý PowerPC, hay cho ứng dụng xử lý tín hiệu số FPGA được tích hợp các DSP Slice bộ nhân, cộng tốc độ cao, thực hàm A*B+C, ví dụ dòng Virtex Xilinx chứa từ vài chục đến hàng trăm DSP slices với A, B, C 18-bit 1.1.3 Các ứng dụng FPGA Ứng dụng FPGA bao gồm: xử lý tín hiệu số, các hệ thống hàng không, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC(ASIC prototyping), các hệ thống điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học, mô hình phần cứng máy tính Do tính linh động cao quá trình thiết kế cho phép FPGA giải lớp toán phức tạp mà trước thực nhờ phần mềm máy tính, nhờ mật độ cổng logic lớn FPGA được ứng dụng cho toán đòi hỏi khối lượng tính toán lớn dùng các hệ thống làm việc theo thời gian thực 1.2 TỔNG QUAN VỀ NGÔN NGỮ VHDL Thiết kế hay lập trình cho FPGA được thực chủ yếu bằng các ngôn ngữ mô tả phần cứng HDL VHDL, Verilog các hãng sản xuất FPGA lớn Xilinx, Altera thường cung cấp các gói phần mềm thiết bị phụ trợ cho quá trình thiết kế, có một số các hãng thứ ba cung cấp các gói phần mềm kiểu Synopsys, Synplify Các gói phần mềm có khả thực tất cả các bước toàn bộ quy trình thiết kế IC chuẩn với đầu vào mã thiết kế HDL (còn gọi mã RTL) Trong Luận văn này, có sử dụng ngôn ngữ mô tả phần cứng VHDL, ta tập chung tìm hiểu ngôn ngữ VHDL 1.2.1 Giới thiệu ngôn ngữ mô tả phần cứng VHDL VHDL ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ rất cao, một loại ngôn ngữ mô tả phần cứng được phát triển dùng cho trương trình VHSIC( Very High Speed Itergrated Circuit) bộ quốc phòng Mỹ Mục tiêu việc phát triển VHDL có được một ngôn ngữ mô phần cứng tiêu chuẩn thống nhất cho phép thử nghiệm các hệ thống số nhanh cho phép dễ dàng đưa các hệ thống vào ứng dụng thực tế Ngôn ngữ VHDL được ba công ty Intermetics, IBM Texas Instruments bắt đầu nghiên cứu phát triển vào tháng năm 1983 Phiên bản được công bố vào tháng 8-1985 Sau VHDL được đề xuất để tổ chức Nguyễn Anh Cường Ketnooi.com Kho tài liệu miễn phí lớn VN IEEE xem xét thành một tiêu chuẩn chung Năm 1987 đưa tiêu chuẩn VHDL( tiêu chuẩn IEEE-1076-1987) VHDL được phát triển để giải các khó khăn việc phát triển, thay đổi lập tài liệu cho các hệ thống số Như ta biết, một hệ thống số có rất nhiều tài liệu mô tả Để vận hành bảo trì sửa chữa một hệ thống ta cần tìm hiểu kỹ lưỡng tài liệu Với một ngôn ngữ mô phần cứng tốt việc xem xét các tài liệu mô tả trở nên dễ dàng vì bộ tài liệu được thực thi để mô hoạt động hệ thống Như ta xem xét toàn bộ các phần tử hệ thống hoạt động một mô hình thống nhất VHDL được phát triển một ngôn ngữ độc lập không gắn với bất kỳ một phương pháp thiết kế, một bộ mô tả hay công nghệ phần cứng Người thiết kế tự lựa chọn công nghệ, phương pháp thiết kế sử dụng một ngôn ngữ nhất Và đem so sánh với các ngôn ngữ mô phần cứng khác kể ta thấy VHDL có một số ưu điểm hẳn các ngôn ngữ khác: - Thứ tính công cộng: VHDL được phát triển dưới bảo trợ phủ Mỹ một tiêu chuẩn IEEE VHDL được hỗ trợ nhiều nhà sản xuất thiết bị nhiều nhà cung cấp công cụ thiết kế mô hệ thống - Thứ hai khả hỗ trợ nhiều công nghệ phương pháp thiết kế VHDL cho phép thiết kế bằng nhiều phương pháp, ví dụ phương pháp thiết kế từ xuống, hay từ dưới lên dựa vào các thư viện sẵn có VHDL hỗ trợ cho nhiều loại công cụ xây dựng mạch sử dụng công nghệ đồng bộ hay không đồng bộ, sử dụng ma trận lập trình được hay sử dụng mảng ngẫu nhiên - Thứ ba tính độc lập với công nghệ: VHDL hoàn toàn độc lập với công nghệ chế tạo phần cứng Một mô tả hệ thống dùng VHDL thiết kế mức cổng được chuyển thành các bản tổng hợp mạch khác tuỳ thuộc công nghệ chế tạo phần cứng mới đời được áp dụng cho các hệ thống thiết kế - Thứ tư khả mô tả mở rộng: VHDL cho phép mô tả hoạt động phần cứng từ mức hệ thống số mức cổng VHDL có khả mô tả hoạt động hệ thống nhiều mức sử dụng một cú pháp chặt che thống nhất cho mức Như ta mô một bản thiết kế bao gồm cả các hệ được mô tả chi tiết Nguyễn Anh Cường Ketnooi.com Kho tài liệu miễn phí lớn VN - Thứ năm khả trao đổi kết quả: Vì VHDL một tiêu chuẩn được chấp nhận, nên một mô hình VHDL chạy bộ mô tả đáp ứng được tiêu chuẩn VHDL Các kết quả mô tả hệ thống được trao đổi các nhà thiết kế sử dụng công cụ thiết kế khác tuân theo tiêu chuẩn VHDL Cũng một nhóm thiết kế trao đổi mô tả mức cao các hệ thống một hệ thống lớn (trong các hệ được thiết kế độc lập) - Thứ sáu khả hỗ trợ thiết kế mức lớn khả sử dụng lại các thiết kế: VHDL được phát triển một ngôn ngữ lập trình bậc cao, vì được sử dụng để thiết kế một hệ thống lớn với tham gia một nhóm nhiều người Bên ngôn ngữ VHDL có nhiều tính hỗ trợ việc quản lý, thử nghiệm chia sẻ thiết kế Và cho phép dùng lại các phần có sẵn 1.2.2 Cấu trúc mô hình hệ thống mô tả ngôn ngữ VHDL Mục đích phần se nhằm giới thiệu sơ qua cấu trúc khung bản VHDL mô tả cho một mô hình thiết kế thực Thông thường một mô hình VHDL bao gồm ba phần: thực thể, kiến trúc các cấu hình Đôi ta xử dụng các gói (packages) mô hình kiểm tra hoạt động hệ thống (testbench) + Thực thể (entity): Khai báo thực thể VHDL phần định nghĩa các tiêu phía một phần tử hay một hệ thống Thực chất việc khai báo thực thể khai báo giao diện hệ thống với bên Ta có tất cả các thông tin để kết nối mạch vào mạch khác hoạc thiết kế tác nhân đầu vào phục vụ cho mục đích thử nghiệm Tuy nhiên hoạt động thật mạch không nằm phần khai báo + Kiến trúc (Architecture): Phần thứ mô hình VHDL khai báo kiến trúc Mỗi một khai báo thực thể phải kèm với nhất một kiến trúc tương ứng VHDL cho phép tạo một kiến trúc cho một thực thể Phần khai báo kiến trúc bao gồm các khai báo các tín hiệu bên trong, các phần tử bên hệ thống, hay các hàm thủ tục mô tả hoạt động hệ thống Tên kiến trúc nhãn được đặt tuỳ theo người sử dụng Có hai cách mô tả kiến trúc một phần tử ( hệ thống) mô hình hoạt động (Behaviour) hay mô tả theo mô hình cấu trúc (Structure) Tuy nhiên một hệ thống bao gồm cả mô tả theo mô hình hoạt động mô tả theo mô hình cấu trúc Nguyễn Anh Cường Ketnooi.com Kho tài liệu miễn phí lớn VN + Mô tả kiến trúc theo mô hình hoạt động: Mô hình hoạt động mô tả các hoạt động hệ thống ( hệ thống đáp ứng với các tín hiệu vào đưa kết quả gì đầu ra) dưới dạng các cấu trúc ngôn ngữ lập trình bậc cao Cấu trúc PROCESS, WAIT, IF, CASE, FOR-LOOP… + Mô tả kiến trúc theo mô hình cấu trúc: Mô hình cấu trúc một phần tử (hoặc hệ thống) bao gồm nhiều cấp cấu trúc một cổng logic đơn giản đến xây dựng mô tả cho một hệ thống hoàn thiện Thực chất việc mô tả theo mô hình cấu trúc mô tả các phần tử bên hệ thống kết nối các phần tử Như với ví dụ mô tả mô hình cấu trúc một flip-flop RS gồm hai cổng NAND mô tả cổng NAND được định nghĩa tương tự ví dụ với cổng NOT, sau mô tả sơ đồ móc nối các phần tử NAND tạo thành trigơ RS + Cấu trúc Process: Process khối bản việc mô tả theo hoạt động Process được xét đến một chuỗi các hành động đơn suốt quá trình dịch Cấu trúc tổng quát: [tên nhãn]: process [(danh sách yếu tố kích thích hoạt động)] [khai báo biến] begin [các câu lệnh] end process; + Môi trường kiểm tra (testbench): Một các nhiệm vụ rất quan trọng kiểm tra bản mô tả thiết kế Kiểm tra một mô hình VHDL được thực bằng cách quan sát hoạt động mô các giá trị thu được đem so sánh với yêu cầu thiết kế Môi trường kiểm tra hiểu một mạch kiểm tra ảo Môi trường kiểm tra sinh các tác động lên bản thiết kế cho phép quan sát so sánh kết quả hoạt động bản mô tả thiết kế Thông thường thì các bản mô tả cung cấp chương trình thử Nhưng ta tự xây dựng chương trình thử (testbench) Mạch thử thực chất kết hợp tổng hợp nhiều thành phần Nó gồm ba thành phần: mô hình VHDL qua kiểm tra, nguồn liệu bộ quan sát Hoạt động mô hình VHDL được kích thích các nguồn liệu kiểm tra tính đắn thông qua bộ quan sát 10 Nguyễn Anh Cường Ketnooi.com Kho tài liệu miễn phí lớn VN use IEEE.STD_LOGIC_UNSIGNED.all; entity Toplevel is port ( main clock input from oscilator CLK1_FB : in std_logic; main reset input from mb RESETl : in std_logic; configuration done signal CONFIG_DONE : out std_logic; dac 14 bit data outputs DAC1_D : out std_logic_vector(13 downto 0); DAC2_D : out std_logic_vector(13 downto 0); adc 14 bit data inputs ADC1_D : in std_logic_vector(13 downto 0); ADC2_D : in std_logic_vector(13 downto 0); dac reset signals DAC1_RESET : out std_logic; DAC2_RESET : out std_logic; dac setup DAC1_MOD0 : out std_logic; DAC1_MOD1 : out std_logic; DAC2_MOD0 : out std_logic; DAC2_MOD1 : out std_logic; dac clock divider setup DAC1_DIV0 : out std_logic; DAC1_DIV1 : out std_logic; DAC2_DIV0 : out std_logic; DAC2_DIV1 : out std_logic; led flash signals LED1_Red : out std_logic; LED2_Red : out std_logic; LED1_Green : out std_logic; LED2_Green : out std_logic ); end Toplevel; architecture Behavioral of Toplevel is clock components component BUFG port ( I : in std_logic; O : out std_logic ); end component; component IBUFG port ( I : in std_logic; O : out std_logic ); end component; component DCM generic ( DLL_FREQUENCY_MODE : string := "LOW"; DUTY_CYCLE_CORRECTION : string := "TRUE"; STARTUP_WAIT : string := "FALSE" ); port ( CLKIN : in std_logic; 51 Nguyễn Anh Cường Ketnooi.com Kho tài liệu miễn phí lớn VN CLKFB : in std_logic; DSSEN : in std_logic; PSINCDEC : in std_logic; PSEN : in std_logic; PSCLK : in std_logic; RST : in std_logic; CLK0 : out std_logic; CLK90 : out std_logic; CLK180 : out std_logic; CLK270 : out std_logic; CLK2X : out std_logic; CLK2X180 : out std_logic; CLKDV : out std_logic; CLKFX : out std_logic; CLKFX180 : out std_logic; LOCKED : out std_logic; PSDONE : out std_logic; STATUS : out std_logic_vector(7 downto 0) ); end component; end of clock components internal clock and reset signals Component FIR_Filter Generic(n: integer :=14; width of data m: integer := 51); order of FIR Port ( Xin: in std_logic_vector(n-1 downto 0); clk,reset: in std_logic; Yout: out std_logic_vector(n-1 downto 0) ); end Component; component chiatan port( clk_i : in sochia clk_o : ); std_logic; : in integer; out std_logic end component; signal CLKIN_OSC, CLKFB_OSC, CLK_OSC, RESET, RSTl : std_logic; temporary registers signal ADC1, ADC2 : std_logic_vector(13 downto 0); signal DAC1 :std_logic_vector(13 downto 0); signal DAC2 :std_logic_vector(13 downto 0); signal data :std_logic_vector(13 downto 0); common ground signal GND : std_logic; signal clk:std_logic; begin GND CLKIN_OSC ); BUFG Instantiation for CLKFB U0_BUFG : BUFG port map ( I => CLKFB_OSC, O => CLK_OSC ); DCM Instantiation for internal deskew of CLK0 U0_DCM : DCM port map ( CLKIN => CLKIN_OSC, CLKFB => CLK_OSC, DSSEN => GND, PSINCDEC => GND, PSEN => GND, PSCLK => GND, RST => RESET, CLK0 => CLKFB_OSC, LOCKED => RSTl ); -end of clock deskew module configured CONFIG_DONE =j) then i:=0;temp:=not(temp); ;j:=j+1; if(j>=sochia) then j:=0; temp:=not(temp); end if; end if; end if; clk_o Interface GENERIC (W1 : INTEGER := 8; Input bit width W2 : INTEGER := 16; Multiplier bit width 2*W1 L : INTEGER := Filter length ); PORT ( clk : IN STD_LOGIC; x_in : IN STD_LOGIC_VECTOR(W1-1 DOWNTO 0); d_in : IN STD_LOGIC_VECTOR(W1-1 DOWNTO 0); e_out : OUT STD_LOGIC_VECTOR(W2-1 DOWNTO 0); y_out :OUT STD_LOGIC_VECTOR(W2-1 DOWNTO 0) ); END component; component chiatan port( clk_i sochia clk_o ); : : : in std_logic; in integer; out std_logic end component; signal CLKIN_OSC, CLKFB_OSC, CLK_OSC, RESET, RSTl : std_logic; temporary registers signal ADC1, ADC2 : std_logic_vector(7 downto 0); signal DAC1 :std_logic_vector(13 downto 0); signal DAC2 :std_logic_vector(13 downto 0); signal data :std_logic_vector(13 downto 0); common ground signal GND : std_logic; signal clk:std_logic; signal e,y: std_logic_vector(15 downto 0); begin GND CLKIN_OSC 60 Nguyễn Anh Cường Ketnooi.com Kho tài liệu miễn phí lớn VN ); BUFG Instantiation for CLKFB U0_BUFG : BUFG port map ( I => CLKFB_OSC, O => CLK_OSC ); DCM Instantiation for internal deskew of CLK0 U0_DCM : DCM port map ( CLKIN => CLKIN_OSC, CLKFB => CLK_OSC, DSSEN => GND, PSINCDEC => GND, PSEN => GND, PSCLK => GND, RST => RESET, CLK0 => CLKFB_OSC, LOCKED => RSTl ); -end of clock deskew module configured CONFIG_DONE [...]... VN Lưu đồ tiến hành thực hiện bộ lọc FIR truyền thống như hình 15: Dao động ký Máy phát ADC FPGA DAC Hình 15: Lưu đồ thực hiện bộ lọc FIR truyền thống Sau khi qua biến đổi ADC, dữ liệu được biểu diễn dưới dạng số bù hai se được đưa vào FPGA để xử lý FPGA có nhiệm vụ thực hiện thuật toán lọc theo yêu cầu của người lập trình Sơ đồ thực hiện thuật toán đối với bộ lọc FIR được trình bày...Ketnooi.com Kho tài liệu miễn phí lớn nhất VN Chương 2 BỘ LỌC FIR 2.1 BỘ LỌC FIR TRUYỀN THỐNG Bộ lọc FIR là bộ lọc có đáp ứng xung chiều dài hữu hạn, tức là đáp ứng xung chỉ khác không trong một khoảng có chiều dài hữu hạn N (từ 0 đến N-1) Bộ lọc FIR với bậc của bộ lọc là N được biểu diễn như hình 3: Hình 3: Cấu trúc của bộ lọc FIR truyền thống Trong đó: x[n]: là tín hiệu lối vào của... trúc của một PE của bộ lọc FIR SYSTOLIC được trình bày như trong hình 6 Hình 6: Cấu trúc của một PE Như vậy, cấu trúc của bộ lọc FIR Systolic với bậc bộ lọc là N, gồm N+1 PE được trình bày như hình 7 13 Nguyễn Anh Cường Ketnooi.com Kho tài liệu miễn phí lớn nhất VN Yin xin + + … x aN yout x ao xout … Hình 7: Cấu trúc bộ lọc FIR systolic bậc N Khác với bộ lọc FIR thông thường, đầu... hạn) thì bộ lọc se không còn được tối ưu nữa Hay nói cách khác, ta không thu được tín hiệu mong muốn Để khắc phục nhược điểm trên, người ta đưa ra một bộ lọc FIR có cấu trúc mới, mà trong đó, các hệ số của bộ lọc có thể thay đổi được để có thể thích ứng với sự thay đổi bất ngờ của các yếu tố lối vào Mạch lọc FIR có các hệ số thay đổi như vậy được gọi là mạch lọc FIR thích nghi... miễn phí lớn nhất VN Hình 5: Kiến trúc systolic array hai chiều 2.2.2 Bộ lọc FIR thực hiện theo kiến trúc systolic array một chiều Để cho việc xử lý dữ liệu được nhanh hơn, bộ lọc FIR theo kiến trúc Systolic array se bao gồm một dãy các phần tử xử lý hay còn gọi là PE (Process Element) Trong cùng một thời điểm, các PE se thực hiện đồng thời các nhiệm vụ riêng, và do đó, tín hiệu ở lối ra se... liên tục, đáp ứng nhanh, bởi việc tính toán đã được thực hiện trước đó Với việc chia đường truyền dài nhất của mạch thành những đoạn nhỏ nhờ các thanh ghi chốt, ta còn có thể tối ưu bộ lọc FIR systolic hơn nữa Hình 8 mô tả cấu trúc tối ưu của bộ lọc FIR systolic Yin xin + … x aN + yout x ao … xout Hình 8: Cấu trúc tối ưu của bộ lọc FIR systolic bậc N Mô hình này về ý tưởng vẫn giống... Trong đó B = bn-1 bn-2…b1 bo là số n bit được biểu diễn trong hệ thống số bù hai 4.2 THỰC HIỆN CÁC PHÉP TÍNH TRONG HỆ THỐNG SỐ BÙ HAI 4.2.1 Thực hiện phép cộng trong hệ thống số bù hai Thực hiện phép cộng trong số bù hai hết sức đơn giản, như cộng số nhị phân thông thường Ta xét một vài ví dụ về việc thực hiện phép cộng với các số bù hai 4 bit: 29 Nguyễn Anh Cường Ketnooi.com Kho tài liệu... Ketnooi.com Kho tài liệu miễn phí lớn nhất VN Chương 3 BỘ LỌC FIR THÍCH NGHI DÙNG THUẬT TOÁN LMS 3.1 ĐẶT VẤN ĐỀ Thuật ngữ lọc dùng để chỉ tất cả các hệ thống có khả năng khôi phục lại dạng của các thành phần tần số của tín hiệu lối vào để tạo ra tín hiệu lối ra thỏa mãn các yêu cầu mong muốn Với bộ lọc FIR trình bày ở trên, thì hệ số của bộ lọc luôn không đổi Do đó, nếu có sự thay đổi đột... x[n] của bộ lọc chính là các giá trị sau khi qua biến đổi ADC, các hệ số h[n] là các hằng số đã được cho trước(được tính toán bằng Matlab) và y[n] là kết quả sau khi đã qua bộ lọc FIR Các kết quả này cũng được biểu diễn dưới dạng số bù hai và được đưa qua bộ biến đổi DAC để hiện lên trên dao động ký Trong bài luận văn này, em thiết kế bộ lọc FIR thông thấp, với bậc bộ lọc là 50,... thấp, với bậc bộ lọc là 50, tần số mà bộ lọc bắt đầu suy giảm và triệt tiêu là từ 800Hz đến 1250Hz, tần số lấy mẫu là 20Khz Các hệ số h[n] se được tính toán bằng công cụ fdatool trong Matlab Đáp ứng tần số tính toán bằng Matlab được mô tả như hình 16: Hình 16: Đáp ứng tần số của mạch lọc FIR Kết quả thu được khi thực hiện trên chíp FPGA: 36 Nguyễn Anh Cường

Ngày đăng: 02/06/2016, 09:28

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w