- Sau đây là bài hướng dẫn thực hiện việc tạo ra một hệ thống DSP đơn giản sử dụng Xilinx System Generator. System Generator chạy trong môi trường mô phỏng Simulink là một phần của gói phần mềm toán học MATLAB. Trong hướng dẫn này một hệ thống DSP đơn giản sẽ được mô phỏng bằng Simulink và sau đó Co - simulation được thực hiện bằng Board NEXYS3 (Spartan-6) . Co-simulation tích hợp mô phỏng Simulink với phần cứng để thực hiện kiểm tra chức năng của hệ thống.
Các bước sau đây được mô tả trong hướng dẫn này:
• Bắt đầu từ System Generator với MATLAB.
• Tạo ra một hệ thống DSP sử dụng Simulink và System Generator.
• Mô phỏng hệ thống DSP sử dụng Simulink.
• Tạo System Generator cho Co-mô phỏng trên Board NEXYS3 (Spartan-6).
• Thực hiện các phần cứng/phần mềm Co-simulation cho hệ thống DSP.
1. Starting System Generator
• Mở phần mềm Xilinx System Generator, chọn Start → All Programs → Development → Xilinx →
ISE Design Suite 14.6 → System Generator→ Xilinx System Generator 14.6.
• Nó sẽ mở chương trình matlab và chèn thư viện xilinx vào Simulink của matlab. Mở Simulink trong matlab ta có được giao diện sau:
- Bộ duyệt thư viện Simulink cho ta một danh sách của tất cả các hộp công cụ khác nhau được cài đặt trong MATLAB có cả thư viện của Xilinx. Thư viện Xilinx gồm 3 khối:
1. Xilinx Blockset
2. Xilinx Reference Blockset
3. Xilinx XtremeDSP Kit
- Các khối Xilinx blockset chứa tất cả các khối cơ bản được sử dụng trong nhiều ứng dụng khác nhau và chúng ta sẽ sử dụng trong bài Lab này. Tạo một mô hình Simulink mới bằng cách File → New → Model.
- Sau đó chúng ta sẽ tạo một hệ thống DSP đơn giản trên mô hình mới tạo. Ví dụ sau đây chúng ta sẽ tạo một chương trình đơn giản sau trên Simulink.
- Các khối chính cần thực hiện cho chương trình trên là:
+ Hai phép toán nhân
+ Một phép toán cộng
+ Hai phần tử lưu trữ để lưu trữ các số 5,3. Chúng ta sẽ dùng khối constant cho hai phần tử đó.
- Đối với mỗi mô hình System Generator thì chúng phải có khối System Generator Block trong mỗi mô hình để tạo chương trình nạp lên phần cứng.
- Xây dựng mô hình phần cứng trên Simulink.
+ Như đã nói ở trên Xilinx System Generator Block: Khối đầu tiên được sử dụng trong bất kỳ mô hình System Generator là Xilinx System Generator Block. Khối này được tìm thấy trong thư viện Simulink: Xilinx blockset → Basic Elements → System Generator Block.
(++) Input / Output Gateways: là khối System Generator được sử dụng để chuyển đổi dữ liệu nhận được từ Simulink trong các định dạng floating point để định dạng fixed point được sử dụng trong các mô hình hệ thống phần cứng dùng System Generator. Sau đó, chúng chuyển đổi output hệ thống trở lại thành floating point. Có hai loại cổng được cung cấp bởi System Generator:
-- Input Gateways: được sử dụng tại các đầu vào của System Generator để chuyển đổi dữ liệu floating point
sang định dạng fixed point. Như trong hình sau các thuộc tính Input Gateway xác định các chi tiết của các định dạng fixed point. Ba đặc tính quan trọng là:
--- Output type : Gồm có 3 đặc tính: Boolean biểu diễn dữ liệu bit đơn, thứ hai là two’s complement biểu diễn dữ liệu phần bù và cuối cùng là kiểu unsigned( không dấu).
--- Number of bits: Số bit để biểu diễn dữ liệu.
--- Binary point: Đây là vị trí của điểm nhị phân trong định dạng điểm cố định.
-- Để chọn khối này ta vào đường dẫn Xilinx Blockset→Basic Elements→Gateway In. ADD khối Gateway In và kích đúp để thay đổi thuộc tính. Thiết lập các loại đầu ra là two’s complement, số lượng các bit 16 và Binary point 12 như trong hình. Bạn có thể thay đổi tên khối bằng cách nhấp vào nó.
(++) Output Gateways: được sử dụng để chuyển đổi dữ liệu được tạo ra từ các System Generator ở định dạng fixed point sang định dạng floating point theo yêu cầu của Simulink. Output Gateways tự động phát hiện các định dạng fixed point từ đầu ra hệ thống và không yêu cầu bất kỳ sửa đổi nào. Đường dẫn tới Output Gateways là: Xilinx Blockset→Basic Elements→Gateway Out.
(++) Multipliers: Mô hình Simulink chúng ta cần 2 mạch nhân nên chúng ta cần ADD hai mạch nhân vào. Xilinx System Generator blockset cung cấp một số khối cho phép tính số học. Để ADD một khối nhân ta chọn Xilinx Blockset→Math→Mult. ADD hai khối Mult như hình. Kích đúp vào nó để thay đổi thuộc tính. Như hình dưới chúng ta có hai basic options cho chính xác đầu ra trong các thuộc tính cơ bản: full và user defined. Trong full precision option, khối nhân sử dụng định dạng đầu vào là fixed point để xác định dạng của đầu ra. Trong trường hợp của chúng ta cần yêu cầu full precision có 32 bit với binary point 24bit. Trong chế độ user defined precision chúng ta có thể chỉ rõ các định dạng khác nhau. Trong trường hợp này chúng ta cần phải xác định một một phương thức làm tròn số cho các giá trị dữ liệu thừa. Trong bài hướng dẫn này chúng ta sẽ sử dụng tùy chọn full precision option.
--- Trong Implementation Menu người dùng có thể lựa chọn tối ưu hóa cho tốc độ / phạm vi và cũng sử dụng các nhúng Multipliers chuyên dụng trong một FPGA hoặc Look Up Tables (LUTS) thay thế.
(++) Constants: Chúng ta cần 2 hằng số cũng như cần 2 khối lưu trữ hằng số 5 và 3. Để đơn giản chúng ta sẽ sử dụng các Constant để đại diện cho hai yếu tố này.Mặc dù trong một ứng dụng DSP thông thường chúng ta có thể cần phải thay đổi các yếu tố này và chúng ta cần phải sử dụng các yếu tố bộ nhớ để làm như vậy. Constants thường được thực hiện bằng cách sử dụng cấu hình Hardwired. ADD hai hằng số ta vào đường dẫn sau: Xilinx Blockset→Basic Elements→Constant. Kích đúp vào khối Constant để hiển thị các thuộc tính và thay đổi các giá trị hằng số là 5 và 3 như trong hình. Nếu dùng Fixed-point (Signed (2’s comp)) thì chắc chắn rằng chúng ta có đủ bit để biểu diễn 2 hằng số ( sô bit 16, Binary point 12 sẽ biểu diễn các số từ -8 đến +7. Kết nối các như trong hình dưới.
(++) Adder/Subtractor: Khối cuối cùng là Adder. ADD bằng đường dẫn sau: Xilinx Blockset→Math→AddSub. Khối AddSub thực hiện phép cộng và phép trừ hai toán hạng. Các định dạng fixed point của các đầu ra được xác định từ các định dạng đầu vào như trong hình. Kết nối các khối lại với nhau ta để được khối hoàn chỉnh.
Còn tiếp.minion_bananas
Các bước sau đây được mô tả trong hướng dẫn này:
• Bắt đầu từ System Generator với MATLAB.
• Tạo ra một hệ thống DSP sử dụng Simulink và System Generator.
• Mô phỏng hệ thống DSP sử dụng Simulink.
• Tạo System Generator cho Co-mô phỏng trên Board NEXYS3 (Spartan-6).
• Thực hiện các phần cứng/phần mềm Co-simulation cho hệ thống DSP.
1. Starting System Generator
• Mở phần mềm Xilinx System Generator, chọn Start → All Programs → Development → Xilinx →
ISE Design Suite 14.6 → System Generator→ Xilinx System Generator 14.6.
• Nó sẽ mở chương trình matlab và chèn thư viện xilinx vào Simulink của matlab. Mở Simulink trong matlab ta có được giao diện sau:
- Bộ duyệt thư viện Simulink cho ta một danh sách của tất cả các hộp công cụ khác nhau được cài đặt trong MATLAB có cả thư viện của Xilinx. Thư viện Xilinx gồm 3 khối:
1. Xilinx Blockset
2. Xilinx Reference Blockset
3. Xilinx XtremeDSP Kit
- Các khối Xilinx blockset chứa tất cả các khối cơ bản được sử dụng trong nhiều ứng dụng khác nhau và chúng ta sẽ sử dụng trong bài Lab này. Tạo một mô hình Simulink mới bằng cách File → New → Model.
- Sau đó chúng ta sẽ tạo một hệ thống DSP đơn giản trên mô hình mới tạo. Ví dụ sau đây chúng ta sẽ tạo một chương trình đơn giản sau trên Simulink.
- Các khối chính cần thực hiện cho chương trình trên là:
+ Hai phép toán nhân
+ Một phép toán cộng
+ Hai phần tử lưu trữ để lưu trữ các số 5,3. Chúng ta sẽ dùng khối constant cho hai phần tử đó.
- Đối với mỗi mô hình System Generator thì chúng phải có khối System Generator Block trong mỗi mô hình để tạo chương trình nạp lên phần cứng.
- Xây dựng mô hình phần cứng trên Simulink.
+ Như đã nói ở trên Xilinx System Generator Block: Khối đầu tiên được sử dụng trong bất kỳ mô hình System Generator là Xilinx System Generator Block. Khối này được tìm thấy trong thư viện Simulink: Xilinx blockset → Basic Elements → System Generator Block.
(++) Input / Output Gateways: là khối System Generator được sử dụng để chuyển đổi dữ liệu nhận được từ Simulink trong các định dạng floating point để định dạng fixed point được sử dụng trong các mô hình hệ thống phần cứng dùng System Generator. Sau đó, chúng chuyển đổi output hệ thống trở lại thành floating point. Có hai loại cổng được cung cấp bởi System Generator:
-- Input Gateways: được sử dụng tại các đầu vào của System Generator để chuyển đổi dữ liệu floating point
sang định dạng fixed point. Như trong hình sau các thuộc tính Input Gateway xác định các chi tiết của các định dạng fixed point. Ba đặc tính quan trọng là:
--- Output type : Gồm có 3 đặc tính: Boolean biểu diễn dữ liệu bit đơn, thứ hai là two’s complement biểu diễn dữ liệu phần bù và cuối cùng là kiểu unsigned( không dấu).
--- Number of bits: Số bit để biểu diễn dữ liệu.
--- Binary point: Đây là vị trí của điểm nhị phân trong định dạng điểm cố định.
-- Để chọn khối này ta vào đường dẫn Xilinx Blockset→Basic Elements→Gateway In. ADD khối Gateway In và kích đúp để thay đổi thuộc tính. Thiết lập các loại đầu ra là two’s complement, số lượng các bit 16 và Binary point 12 như trong hình. Bạn có thể thay đổi tên khối bằng cách nhấp vào nó.
(++) Output Gateways: được sử dụng để chuyển đổi dữ liệu được tạo ra từ các System Generator ở định dạng fixed point sang định dạng floating point theo yêu cầu của Simulink. Output Gateways tự động phát hiện các định dạng fixed point từ đầu ra hệ thống và không yêu cầu bất kỳ sửa đổi nào. Đường dẫn tới Output Gateways là: Xilinx Blockset→Basic Elements→Gateway Out.
(++) Multipliers: Mô hình Simulink chúng ta cần 2 mạch nhân nên chúng ta cần ADD hai mạch nhân vào. Xilinx System Generator blockset cung cấp một số khối cho phép tính số học. Để ADD một khối nhân ta chọn Xilinx Blockset→Math→Mult. ADD hai khối Mult như hình. Kích đúp vào nó để thay đổi thuộc tính. Như hình dưới chúng ta có hai basic options cho chính xác đầu ra trong các thuộc tính cơ bản: full và user defined. Trong full precision option, khối nhân sử dụng định dạng đầu vào là fixed point để xác định dạng của đầu ra. Trong trường hợp của chúng ta cần yêu cầu full precision có 32 bit với binary point 24bit. Trong chế độ user defined precision chúng ta có thể chỉ rõ các định dạng khác nhau. Trong trường hợp này chúng ta cần phải xác định một một phương thức làm tròn số cho các giá trị dữ liệu thừa. Trong bài hướng dẫn này chúng ta sẽ sử dụng tùy chọn full precision option.
--- Trong Implementation Menu người dùng có thể lựa chọn tối ưu hóa cho tốc độ / phạm vi và cũng sử dụng các nhúng Multipliers chuyên dụng trong một FPGA hoặc Look Up Tables (LUTS) thay thế.
(++) Constants: Chúng ta cần 2 hằng số cũng như cần 2 khối lưu trữ hằng số 5 và 3. Để đơn giản chúng ta sẽ sử dụng các Constant để đại diện cho hai yếu tố này.Mặc dù trong một ứng dụng DSP thông thường chúng ta có thể cần phải thay đổi các yếu tố này và chúng ta cần phải sử dụng các yếu tố bộ nhớ để làm như vậy. Constants thường được thực hiện bằng cách sử dụng cấu hình Hardwired. ADD hai hằng số ta vào đường dẫn sau: Xilinx Blockset→Basic Elements→Constant. Kích đúp vào khối Constant để hiển thị các thuộc tính và thay đổi các giá trị hằng số là 5 và 3 như trong hình. Nếu dùng Fixed-point (Signed (2’s comp)) thì chắc chắn rằng chúng ta có đủ bit để biểu diễn 2 hằng số ( sô bit 16, Binary point 12 sẽ biểu diễn các số từ -8 đến +7. Kết nối các như trong hình dưới.
(++) Adder/Subtractor: Khối cuối cùng là Adder. ADD bằng đường dẫn sau: Xilinx Blockset→Math→AddSub. Khối AddSub thực hiện phép cộng và phép trừ hai toán hạng. Các định dạng fixed point của các đầu ra được xác định từ các định dạng đầu vào như trong hình. Kết nối các khối lại với nhau ta để được khối hoàn chỉnh.
Còn tiếp.minion_bananas