Ứng dụng system generator để tạo cấu hình các bộ dsp phục vụ xử lý tín hiệu rađa

Trong những năm gần đây, FPGA trở thành thành phần chủ yếu trong thực hiện các hệ thống xử lý tín hiệu số tốc độ cao. Tuy vậy, việc sử dụng FPGA cho các DSP cũng chịu ảnh hưởng của nhiều yếu tố: Đầu tiên là thiếu các chuẩn thiết kế phần cứng, các kỹ sư DSP thường quen thuộc với ngôn ngữ lập trình C hoặc hợp ngữ mà không gần gũi với thiết kế số sử dụng ngôn ngữ mô tả phần cứng (HDL) như VHDL hay Verilog. Hơn nữa, mặc dù VHDL đưa lại nhiều sự trừu tượng hoá mức cao và ngôn ngữ để mô phỏng, nhưng thư viện con của nó là quá hạn chế cho thiết kế hệ thống.

doc18 trang | Chia sẻ: vietpd | Lượt xem: 2410 | Lượt tải: 1download
Bạn đang xem nội dung tài liệu Ứng dụng system generator để tạo cấu hình các bộ dsp phục vụ xử lý tín hiệu rađa, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 4 ứng dụng system generator để Tạo cấu hình các Bộ dsp phục vụ xử lý tín hiệu rađa 4.1 System Generator Trong những năm gần đây, FPGA trở thành thành phần chủ yếu trong thực hiện các hệ thống xử lý tín hiệu số tốc độ cao. Tuy vậy, việc sử dụng FPGA cho các DSP cũng chịu ảnh hưởng của nhiều yếu tố: Đầu tiên là thiếu các chuẩn thiết kế phần cứng, các kỹ sư DSP thường quen thuộc với ngôn ngữ lập trình C hoặc hợp ngữ mà không gần gũi với thiết kế số sử dụng ngôn ngữ mô tả phần cứng (HDL) như VHDL hay Verilog. Hơn nữa, mặc dù VHDL đưa lại nhiều sự trừu tượng hoá mức cao và ngôn ngữ để mô phỏng, nhưng thư viện con của nó là quá hạn chế cho thiết kế hệ thống. Về cơ bản là thiếu các công cụ và hướng xây dựng mức cao để thiết kế DSP trong FPGA, chính vì vậy Công ty Xilinx đưa ra phần mềm System Generator để mô hình và thiết kế hệ thống DSP ở môi trường luồng dữ liệu hình ảnh, cung cấp sự trừu tượng hoá chức năng mạng mẽ, và các công cụ tự động ánh xạ mô hình hệ thống tới sự thực hiện phần cứng. System Generator hoạt động như một tập các khối bổ sung cho Mathwork’s Simulink. Simulink là công cụ thiết kế sơ đồ khối cho Matlab để cho phép thiết kế đồ hoạ và mô phỏng. Các mô hình được xây dựng theo giao diện người sử dụng đồ hoạ bằng cách kéo các khối khác nhau vào trong không gian làm việc và kết nối chúng. System Generator chính là phần mềm cần thiết để tạo sự tiếp xúc giữa kỹ sư DSP và nhà thiết kế FPGA. System Generator cho phép mô hình hoá mức cao và thực hiện hệ thống DSP trên các họ FPGA Xilinx như: Virtex, Virtex-II, Virtex-II Pro, Spartan. System Generator cho phép đưa thuật toán DSP và Xilinx FPGA một cách nhanh chóng và dễ dàng. System Generator mở rộng khả năng của môi trường mô phỏng mức cao Simulink với các mô hình bit-true và cycle-true của mạch FPGA. System Generator có thể truy xuất tới các đặc trưng của fabric FPGA như : thanh ghi dịch SRL16E, bộ nhớ khối và bộ nhớ phân phát, các bộ nhân nhúng. System Generator cung cấp ba dạng dữ liệu số học được sử dụng nhiều nhất trong DSP: Số dấu phẩy động, số dấu phẩy tĩnh có dấu và không có dấu. System Generator còn cung cấp cơ chế chuyển thuật toán dấu phẩy động tới phần cứng nhưng không hỗ trợ chúng để mô phỏng và mô hình hoá. Với thiết lập cấp chính xác bất kỳ, số dấu phẩy tĩnh có đặc tính toán học tốt, với một vài cải tiến gần với cách thể hiện dấu phẩy động. Các phép tính trên số dấu phẩy động được làm tròn ở kết quả, và do đó, các đặc trưng đại số mong muốn như tính kết hợp và phân phối bị huỷ. Tuy vậy cả hai chúng đều có thể đạt được với số học cấp chính xác bất kỳ với số dấu phẩy tĩnh. Thư viện Simulink của System Generator chứa 2 thư viện: Xilinx Blocksets và Xilinx Refenrence Blocksets. Trong đó, thư viện “Xilinx Blocksets” chứa các khối chức năng đơn giản như: thanh ghi, khối giữ chậm, các hàm toán học đơn giản, ROM..v.v.., thư viện “Xilinx Reference Blocksets” chứa các khối chuẩn, các khối này tương đối phức tạp và có thể sử dụng với một mục đích xác định nào đó, và có thể thực hiện một bài toán trọn vẹn như : các bộ lọc FIR, các bộ tính FFT v.v…Các khối này đưa ra các sự trừu tượng số học, logic, bộ nhớ và xử lý tín hiệu phù hợp cho thực hiện các hệ thống DSP trong FPGA. Bổ sung vào thư viện này, System Generator cung cấp sự thực hiện từng hàm, và phần mềm tạo mã để dịch các hệ thống con mà đã kết hợp các khối System Generator vào mô tả phần cứng của mô hình. Hình 4.1 Trình duyệt thư viện Simulink System Generator có 2 loại khối: Khối bit-accurate: Tạo ra giá trị trong Simulink phù hợp với giá trị chúng tạo được ra trong phần cứng. Khối cycle-accurate: Tạo ra giá trị trong Simulink tương ứng tại các thời điểm tương ứng. 4.1.1 Một vài đặc điểm khi xây dựng mô hình System Generator. - Mỗi mô hình Simulink phải chứa ít nhất một khối System Generator, khối này dùng để điểu khiển quá trình biên dịch, và mô phỏng phần cứng. - Với các cấu trúc phân nhánh thì ngoài việc viết chương trình bằng cách nối các khối chức năng với nhau, ta còn có thể sử dụng các ngôn ngữ khác để tạo ra khối có tính năng đặc biệt (như cấu trúc phân nhánh). Điều này là vô cùng thuận lợi trong việc xây dựng các mô hình phức tạp. - Luôn chú ý các lưu ý trong các khối, điều này có thể giúp cho thiết kế tối ưu hơn trong việc tiết kiệm các tài nguyên. - Các đầu vào và các đầu ra của bản thiết kế: Đặt thêm các thanh ghi hoặc khối giữ chậm vào sau Gateway In và trước Gateway Out để tăng hiệu năng cho phần cứng FPGA. - Chèn các thanh ghi phân luồng vào bất kì nơi đâu nếu có thể: Các phân luồng chiều sâu được thực hiện hiệu quả với các khối giữ chậm do thanh ghi SRL16 nguyên thuỷ được sử dụng. System Generator chứa thư viện Simulink các khối chức năng để xây dựng các mạch DSP, mạch số học, mạch logic số. Các khối này tính toán đầu ra thông qua các đầu vào của chúng, có thể xác định dạng đầu ra lượng tử chính xác. Có thể kết hợp các khối Xilinx với MATLAB và các khối Simulink để tạo ra testbench và để phân tích dữ liệu được tính ra trong mô hình. Với sự trừu tượng hoá mức cao System Generator cho phép phát triển và kiểm tra thuật toán một cách nhanh chóng. Thêm vào thư viện mô hình hệ thống, System Generator chứa một máy phát mã để tự động tạo ra một Netlist VHDL tổng hợp. Netlist này chứa các khối IP (đặc tính thông minh) mà đã được thiết kế cẩn thận để thực hiện tối ưu về tốc độ và mật độ cao trong Xilinx FPGA. Đồng thời System Generator tạo ra một Project và các File cần thiết để sử dụng trong Xilinx ISE cũng như trong các công cụ tổng hợp chính. * Các bước thực hiện mô hình hoá hệ thống DSP trên System Generator. 1. Xây dựng mô hình. 2. Thiết lập các tham số, tạo cấu hình đường dữ liệu. 3. Mô phỏng, kiểm tra kết quả trên Simulink. 4. Biên dịch ra các file cần thiết cho các công cụ tổng hợp, đồng mô phỏng phần cứng, thực hiện vào Xilinx FPGA. * Phương pháp và qui trình KTCN sử dụng để thiết kế chế tạo hệ phần cứng tiêu chuẩn có dùng FPGA và các hệ DSP. Hình 4.2 Phương pháp và qui trình thiết kế, chế tạo phần cứng tiêu chuẩn trên cơ sở sử dụng FPGA, CPLD và DSP System Gen FPGA, DSP PCI/ Compact PCI/VME HDL Simulation, Synthesis Matlab Simulink Algorithms Developer’s kit for DSP Emulator Map, Place, Roote Code Composer Studio Chế tạo phần cứng tiêu chuẩn Phân tích phương pháp và qui trình KTCN ở trên ta thấy các bước thực hiện tổng thể như sau: Việc thiết kế hệ thống và thuật toán sẽ được thực hiện trên môi trường Matlab/ Simulink (của hãng Mathworks), sau đó việc thực tế hoá các thuật toán sẽ được thực hiện nhờ công cụ phần mềm System Generator (sản phẩm của 2 hãng Xilinx và Mathworks), sau đó là các bước mô phỏng và tổng hợp ở mức HDL, các bước thiết kế bố trí đường nối, bố trí linh kiện, mô phỏng – kiểm tra và chế tạo phần cứng có chứa FPGA. Trường hợp trên Board điện tử dùng các DSP thì sẽ có thêm nhánh các công cụ phát triển cho DSP (ví dụ cho họ TexasInst Developer‘s kít, Code Composer Studio, Emulations) Phương pháp, qui trình KTCN thiết kế chế tạo các linh kiện tổ hợp FPGA theo các định hướng ứng dụng (sau khi đã tạo xong các Board mạch phần cứng tiêu chuẩn) Các bước thực hiện ở đây nhằm đặt các cấu hình dự kiến đáp ứng các chức năng đề ra cho các linh kiện tổ hợp. 4.1.2 Đồng mô phỏng và nạp cấu hình cho FPGA. Để mô phỏng hoạt động của thiết bị thực, System Generator cung cấp đồng mô phỏng phần cứng, tạo ra khả năng để hợp nhất một thiết kế chạy trực tiếp trong một FPGA vào trong môi trường mô phỏng Simulink. Kết quả biên dịch “Hardware Co-simulation” tự động tạo ra một Bistream và hợp nhất nó thành một khối. Khi thiết kế được mô phỏng trong Simulink, kết quả phần biên dịch được tính toán trong phần cứng, điều này cho phép phần biên dịch được kiểm tra trong thực tế phần cứng. Nếu bo mạch phát triển được kết nối với máy tính chủ thông qua kết nối USB và nguồn cung cấp bên ngoài thì sử dụng đồng mô phỏng JTAG với cáp nạp chương trình là cáp JTAG song song “Parallel JTAG”. Nếu bo mạch kết nối thông qua giao tiếp PCI thì “đồng mô phỏng” được thực hiện thông qua giao tiếp PCI. * Thiết lập đồng mô phỏng dùng cáp JTAG Nếu bo mạch sử dụng được kết nối thông qua USB thì “đồng mô phỏng” có thể thực hiện sử dụng cáp Parallel-III và Parallel-IV. Hình 4.3 Kết nối cáp JTAG Hình 4.4 Kết nối giao tiếp với máy tính Sau khi đã kết nối xong bo mạch với máy tính, thực hiện các bước sau: - Mở mô hình Simulink - Kích đúp vào khối System Generator. Lựa chọn kết nối thông qua PCI chọn “Hardware co-simulation > XtremeDSP Development Kit >PCI”. Nếu kết nối thông qua JTAG chọn “Hardware co-simulation> XtremeDSP Development Kit> JTAG” - Kích nút Generate để tạo khối đồng mô phỏng. Hình 4.5 Khối đồng mô phỏng - Kéo khối đã tạo vào mô hình ban đầu, kết nối vào mô hình và thực hiện đồng mô phỏng, so sánh kết quả mô phỏng. * Nạp cấu hình cho FPGA sử dụng FUSE - Chọn Start>Program>FUSE>Solfware>FUSE probe. - Chọn Card control>Open card và chọn cách giao tiếp giữa bo mạch với máy chủ. - Gán các bitfile tới các thiết bị đã chọn - Kích phải lên thiết bị trong bo mạch đã duyệt và chọn “Assign Bitfile”, trong cửa sổ mở ra đường dẫn đến Bitfile mà ta mới tạo ra. - Kích phải lên thiết bị đã gán bitfile và chọn “Configure Device” để cấu hình FPGA. Như vậy ta đã thực hiện nạp cấu hình hệ thống thuật toán DSP lên phần cứng. 4.2 Tạo cấu hình các bộ DSP phục vụ xử lý tín hiệu rađa 4.2.1 Bộ lọc không đệ quy (FIR). Với nhận xét như trong chương 3, các bộ bù khử qua chu kỳ là trường hợp riêng của bộ lọc số FIR. Dưới đây sẽ thực hiện xây dựng một bộ lọc FIR 32-Tap, 8-bit. * Sơ đồ thực hiện hệ thống lọc trên như sau: X(n-M) X(n-1) X(n) bM b1 b0 X(n) Y(n) Bộ ghi dịch Bộ nhớ hệ số bk Hình 4.6 Sơ đồ cấu trúc bộ lọc FIR Xây dựng mô hình bộ lọc FIR Hình 4.6 Mô hình bộ lọc FIR 32-Tap 8-bit Cấu trúc hệ thống con Hình 4.7 Cấu trúc hệ thống con bộ lọc FIR Bộ nhân-tích luỹ (MAC): Hình 4.7 Mô hình bộ MAC Đường giữ chậm phân nhánh được thực hiện sử dụng một ASR, nó cung cấp cả thiết kế gói gọn và yêu cầu địa chỉ đơn giản. Đường giữ chậm thực hiện ở tần số dữ liều đầu vào, nhưng thành phần chính của bộ lọc, kể cả ASR thực hiện ở tần số gấp N lần tần số dữ liệu đầu vào. Đáp ứng xung của bộ lọc được lưu giữ trong ROM có cấp chính xác, dạng số học, và các tuỳ chọn thực hiện người dùng định nghĩa. Bộ cộng-nhân (MAC) được kết hợp bởi khối cộng và khối nhân, Khối nhân tính toán phép nhân của một nhánh rẽ của bộ lọc và một mẫu từ bộ đệm dữ liệu, và bộ cộng tính toán tổng tích luỹ của các kết quả này. Bộ cộng được cấu hình khởi tạo trong lúc reset tới giá trị đầu vào hiện tại để tránh một sự ngừng hoạt động tại điểm cuối cùng của từng phép tính tổng các kết quả. Một thanh ghi lưu giữ kết quả đầu ra của MAC trước khi nó bị reset. Đầu ra của thanh ghi lưu trữ là bộ giảm mẫu để tần số ra của bộ lọc phù hợp với tần số đầu vào. ROM chứa hệ số nhân của bộ lọc. Một bộ đếm đơn, được cấu hình đếm lặp đi lặp lại từ 0 đến N-1, tạo ra địa chỉ cho cả ROM và cả khối dữ liệu đầu vào. Chu kỳ lấy mẫu đầu ra của bộ đếm xác định tần số luồng dữ liệu đi vào và bộ đệm sử dụng các quy tắc truyền thời gian lấy mẫu của Simulink. Để mô phỏng trên Simulink, giả thiết rằng bộ lọc có: Tần số lấy mẫu: Tần số trung tâm: Tần số cắt: Ta có kết quả mô phỏng trên Oxilo: Hình 4.8 Tìn hiệu vào/ra của bộ lọc FIR Sau khi đã tạo đúng và đầy đủ các tham số, mô phỏng mô hình trên Simulink, chắc chắn rằng không có bất kỳ lỗi nào trong khi xây dựng mô hình, ta có thể ấn nút Generate để tạo mã tự động, nghĩa là biên dịch ra ngôn ngữ mô tả phần cứng và các file cần thiết cho các công cụ tổng hợp khác, cũng như là đồng mô phỏng phần cứng, hay để thực hiện trong FPGA Xilinx. Trong thời gian tạo mã, bất kỳ khối nào không phải của Xilinx (non-Xilinx) bị cắt bỏ. Hình 4.9 Quá trình tạo mã Nối khối đồng mô phỏng được tạo ra vào mô hình Simulink và thực hiện đồng mô phỏng: Hình 4.10 Mô hình thực hiện đồng mô phỏng phần cứng bộ lọc FIR Kết quả đồng mô phỏng: Hình 4.11 Kết quả đồng mô phỏng phần cứng Nhận xét: Kết quả đồng mô phỏng phần cứng hoàn toàn phù hợp với kết quả mong muốn. 4.2.2 Bộ biến đổi FFT/IFFT * Sơ đồ tổng quát bộ thực hiện FFT như sau: Mẫu tín hiệu đầu vào Bộ nhớ đầu vào Địa chỉ đọc Khối tính FFT Bộ nhớ đầu ra Khối điều khiển Địa chỉ ghi Hình 4.12 Sơ đồ khối bộ tính FFT * Quá trình hoạt động của bộ tính FFT như sau: Khi có tín hiệu vào, bộ điều khiển cung cấp địa chỉ và cho phép bộ nhớ đầu vào ghi mẫu dữ liệu tín hiệu đầu vào, từ bộ nhớ đưa sang khối tính toán FFT, khi kết quả tính toán xong đưa sang bộ nhớ đầu ra. Quá trình tính toán FFT, đọc dữ liệu từ bộ nhớ vào khối tính toán FFT cũng như ghi kết quả vào bộ nhớ đầu ra được điều khiển bằng bộ điều khiển. * Xây dựng mô hình Từ sơ đồ cấu trúc, dựa vào thư viện khối chức năng Simulink ta có thể chọn các mô hình cơ bản sau: Cấu trúc để mô phỏng và kiểm tra thuật toán: Hình 4.13 Mô hình bộ biến đổi FFT/IFFT Cấu trúc hệ thống con: Hình 4.14 Cấu trúc hệ thống con FFT Thiết kế này biểu diễn cách mà khối FFT có thể được sử dụng trong một dòng dữ liệu với các tốc độ vào/ra đồng nhất. Tín hiệu FFT “vout” được sử dụng để điều khiển cho phép ghi trên FIFO, bởi vậy chỉ những giá trị hợp lệ sẽ được ghi tới bộ nhớ. FIFO cho phép đọc mức cao ngay khi có dữ liệu. Clock Enable Probe (CE) được sử dụng để điều khiển cho phép đọc trên FIFO, chắc chắn rằng tần số đầu ra hiệu quả của FIFO phù hợp với tần số đầu vào của khối FFT. Cổng AND điều khiển cổng cho phép đọc trên các khối FIFO, định rõ chu kỳ lấy mẫu. Chú ý rằng, chu kỳ hệ thống Simulink phải phù hợp với tần số đầu ra của khối FFT, nó phải thực hiện tại tần số của hệ thống. Thiết kế này sử dụng 2312 slices và 16 RAM, chạy ở tốc độ 104 MHz. Với tốc độ xử lý như vậy, nó có khả năng đáp ứng được việc xử lý dữ liệu theo từng vành cự ly. * Kết quả mô phỏng Để kiểm tra tímh đúng đắn của thuật toán ta cho tín hiệu vào và kết quả mô phỏng của bộ biến đổi FFT/IFFT như sau: Giả thiết tín hiệu vào x(n) là tín hiệu phức rời rạc, chu kỳ T = 200s, thời gian lấy mẫu Dt=3s, tín hiệu vào bộ FFT: Hình 4.15 Tín hiệu vào bộ FFT Phổ tín hiệu ra của bộ biến đổi FFT Hình 4.16 Phổ tín hiệu đầu ra bộ FFT Như đã nhật xét ở mục trước, việc tính IFFT có thể thực hiện từ chương trình tính FFT , cho nên để kiểm tra tính đúng đắn của mô hình, ta kiểm tra phép biến đổi ngược IFFT. Ta có kết quả của phép biến đổi ngược FFT: Hình 4.17 Tín hiệu ra của bộ IFFT Biểu đồ mô tả quá trình đọc/ghi của FIFO: Hình 4.18 Biểu đồ mô tả quá trình đọc/ghi của bộ FIFO Ta kết nối khối đồng mô phỏng phần cứng như sau: Hình 4.19 Sơ đồ thực hiện đồng mô phỏng phần cứng bộ FFT/IFFT Kết quả đồng mô phỏng phần cứng thể hiên trên oxilo như sau: Hình 4.20 Kết quả đồng mô phỏng phần cứng Nhận xét: Ta nhận thấy kết quả đồng mô phỏng phần cứng là hoàn toàn phù hợp với kết quả mong muốn. Kết luận chương 4 Chương 4 đã trình bày một cách đầy đủ các quá trình xây dựng, thiết kế một hệ thống DSP trên phần mềm System Generator, và trên cơ sở lý thuyết đã trình bày ở chương 3, chương này đã tiến hành xây dựng được bộ lọc số thông thấp FIR 32-Tap , bộ biến đổi FFT/IFFT phục vụ cho hệ lọc mục tiêu di động thế hệ số hoá cho các đài rađa. Trên cơ sở mô hình đã xây dựng, đã thực hiện nạp cấu hình và đồng mô phỏng phần cứng thành công vào bo mạch phát triển XtremeDSP Development Kit-II FPGA của Xilinx.