Tải bản đầy đủ (.docx) (22 trang)

co system generator

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.45 MB, 22 trang )

/> />- 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) . Cosimulation 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. Trongfull 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.

2. Tính toán tài nguyên.
- Chúng ta có thể ước tính tài nguyên được sử dụng bởi thiết kế khi dùng khối
Resource Estimator với khối multiplier thực hiện tại LUTs/Multipliers với độ trễ
được thiết lập là 2 và 3 khi thực hiện theo các bước sau:
+ Kích đúp vào System Generator và chọn HDL Netlist cho Compilation và thiết
lập như sau:
• Compilation: HDL Netlist
• Part: Spartan6 xc6slx16-2csg324


+ Thêm khối Resource Estimator từ thư viện Xilinx (Xilinx Blockset > Index)
+ Mở khối Resource Estimator. Tại Estimate Tools chọn Estimate. Sau đó nhấn
vào nút Estimate.


+ Công cụ Resource Estimator sẽ có kết quả khác nhau dựa vào
khối Multipliers sử dụng bộ Multipliers chuyên dụng hoặc Look Up Tables của
FPGA.
3. Chuẩn bị môi trường mô phỏng
- Sau khi hoàn thành hệ thống phần cứng, chúng ta sẽ bắt đầu sử dụng Simulink để
kiểm tra chức năng của nó. Simulink cung cấp một môi trường mô phỏng rất linh
hoạt cho phép xây dựng các kịch bản thử nghiệm khác nhau. Để đơn giản, chúng
tôi sẽ xây dựng một kịch bản test cho hệ thống của chúng ta bằng cách áp dụng
một đầu vào constant cho hệ thống và hiển thị kết quả trên màn hình hiển thị giá trị
single.
+ Input: Simulink cung cấp một số khối được sử dụng như một đầu vào cho mô
hình và mô phỏng sử dụng môi trường Simulink. Các khối này có thể được tìm


thấy theo đường dẫn: Simulink → Sources. Từ Sources chọn khối Constant và
đặt hai khối Constant đó trong mô hình. Kết nối các hằng số vào hai cổng đầu vào
của hệ thống. Chọn giá trị chi hai cổng đầu vào đó là 3.1 và 4.5.

- Output: Simulink cung cấp một số khối để hiển thị các kết quả mô phỏng của mô
hình. Các khối này có thể được tìm thấy trong các đường dẫn:Simulink → Sinks.
Từ mục này chọn khối Display được sử dụng để hiển thị các giá trị của một đầu ra.
Kết nối khối này để đầu ra của hệ thống như hình dưới.

4. Mô phỏng một hệ thống DSP sử dụng System Generator và Simulink.
- Quá trình mô phỏng có thể được bắt đầu bằng cách nhấn vào nút Start
Simulation trên thanh công cụ của cửa sổ mô hình. Simulink có thể được sử dụng


để thực hiện mô phỏng thời gian thực (mô phỏng chức năng). Trong trường hợp

này chúng ta chỉ cần phải kiểm tra chức năng của mô hình. Vì sự thay đổi giá trị
đầu vào. Sau khi bắt đầu quá trình mô phỏng, System Generator bắt đầu xử lý từng
khối trong mô hình và tạo ra một mô hình mô phỏng theo cấu hình cụ thể của từng
khối như thể hiện trong hình dưới.

- Bước này được thực hiện chỉ một lần miễn là cấu hình cho mỗi khối không thay
đổi. Sử dụng các giá trị của 3.1 và 4.5 như là đầu vào cho cả multiplier, kết quả của
hệ thống sẽ là 29.


5. Chuẩn bị System Generator cho Hardware/Software Co-Simulation
- Trong phần trước, chúng ta đã kiểm tra các chức năng của hệ thống DSP đơn giản
sử dụng mô hình mô phỏng Simulink cho các thành phần phần cứng khác nhau.
Thông thường một số vấn đề có thể phát sinh khi mô hình được chuyển vào phần
cứng. System Generator cung cấp một số phương pháp để chuyển đổi các mô hình
xây dựng sử dụng Simulink vào phần cứng. Một trong những phương pháp đó
được gọi là Hardware/Software Co-simulation. Hardware/Software Co-simulation
cho phép xây dựng một version phần cứng của mô hình và sử dụng môi trường mô
phỏng của Simulink để thực hiện một số test xác minh chức năng của hệ thống
trong phần cứng.
- HW/SW Co-simulation hỗ trợ các board FPGA từ Xilinx có hỗ trợ kết nối JTAG
hoặc Ethernet. Một số board được thiết lập sẵn trên System Generator cho Cosimulation bao gồm board (Spartan-6) NEXYS3 chúng ta sử dụng trong hướng dẫn
này.
a. Yêu cầu board cho Co-Simulation.
- Đối với một board FPGA cụ thể sử dụng cho Co-mô phỏng, chúng ta cần có


những yêu cầu sau:
• Một board FPGA Xilinx có đủ giao tiếp JTAG / Ethernet.
• Hỗ trợ cho giao tiếp JTAG / Ethernet.

• Xung clock.
• Cáp Xilinx Parallel / USB Programming cho giao tiếp JTAG.
b. Tạo Module Co-Simulation
- Kích đúp vào khối System Generator. Một hộp thoại sẽ xuất hiện như trong Hình
dưới. Hộp thoại này cho phép bạn chọn loại của các phần cứng được tạo ra bằng
cách sử dụng System Generator. Nếu Board được hỗ trợ nó sẽ xuất hiện và bạn nên
làm theo các bước dưới đây. Còn không hỗ trợ thì số bạn xui thôi ( hehe đùa chớ
nếu không hỗ trợ thì sẽ có bài hướng dẫn).


- Trong danh mục compilation chọn Hardware Co-Simulation → NEXYS3 Board
Plugin JTAG. Một hộp thoại mới sẽ xuất hiện có các thông số của board
NEXYS3.
+ Nhấn Generate để xây dựng các hệ thống phần cứng. Bước này sẽ tạo ra bitstream mà sau đó sẽ được sử dụng để cấu hình FPGA. Luồng ISE được sử dụng
bởi System Generator để xây dựng bit-stream. Tiến trình của quá trình được hiển
thị trong cửa sổ Compilation Statue như thể hiện trong hình dưới.


+ Khi biên dịch hoàn tất, một thư viện mới được tạo ra trong đó có một khối như
thể hiện trong hình 14. Các tên thư viện cần được "sg tut 1 hwcosim lib" và tên
khối nên được "sg tut 1 hwcosim". Các khối có hai đầu vào và một đầu ra theo yêu
cầu của hệ thống DSP chúng ta đã tạo trước đó. Khối này bao gồm tất cả các chức
năng cần thiết cho hệ thống để thực hiện trên FPGA.
+ Bây giờ chúng ta đã sẵn sàng để thực hiện HW/SW Co-Simulation cho hệ thống
DSP.
6. Thêm một Board FPGA mới cho Co-Simulation.
- Có hai phương pháp để thêm Board của bạn vào System Generator.
a. Sao chép một thư mục có sẵn từ Xilinx
- Chúng ta có thể tải "Nexys3 board plugin.zip" từ Xilinx. Giải nén tập tin này
trong temp. Các file Plugin được yêu cầu cho phép JTAG Co-simulation nhắm

mục tiêu Board NEXYS3. Giải nén tập tin Nexys3 ban plugin.zip trong:
<xilinx14.6>\ISE_DS\ISE\sysgen\plugins\compilation\Hardware Co-Simulation
directory
b. Bổ sung Board FPGA bằng tay.
- Bằng cách làm theo các bước dưới đây bạn sẽ có thể thiết lập Board NEXYS3
(Spartan-6) cho HW/SW Co-Simulation nếu nó không được định nghĩa sẵn trong
System Generator:
• Kích đúp vào khối System Generator. Một hộp thoại sẽ xuất hiện như trong Hình


19. Hộp thoại này cho phép bạn chọn loại của phần cứng tạo ra bằng cách sử dụng
System Generator.
• Trong danh mục compilation chọn Hardware Co-Simulation → New Compilation
Target. Một hộp thoại mới sẽ xuất hiện cho phép bạn cấu hình một Board mới
(System Generator Board Description Builder). Lưu ý rằng có một số Board có sẵn
trong danh sách.

• Hộp thoại System Generator Board Description Builder được sử dụng cấu hình
một board mới để dùng cho Co-Simulation. Đối với mỗi board cần có các thông tin
sau đây là cần thiết để xác định các board cho Co-Simulation sử dụng JTAG (Xem
Hình 20):


++ Board Name: Tên của Board sẽ xuất hiện trong System Generator CoSimulation danh sách.
++ Clock Pin Location: Số pin FPGA được kết nối với free running clock.
++ Clock Frequency: tần số của free running clock.
++ The FPGA part number: Các FPGA số phần.
++ Các vị trí FPGA trong chuỗi JTAG: Vị trí của FPGA trong chuỗi JTAG.
- Lưu ý: Nếu đây là lần đầu tiên sử dụng System Generator bạn cần xây dựng danh
mục các bộ phận và lưu trữ chúng vào MATLAB. Thực thi lệnh xlupdatepartinfo

trong cửa sổ lệnh MATLAB như thể hiện trong hình 21.


- Đối với Board NEXYS3 sử dụng các giá trị sau::
– Board Name: NEXYS3 (Spartan-6) Board
– Clock Pin Location: V10
– Clock Frequency: 100 MHz
– The FPGA part number:
∗ Family: spartan6
∗ Part: xc6sLX16
∗ Speed: -3
∗ Package: csg324
– The FPGA position in the JTAG chain: 1
** Nhấn Install để xây dựng các file cần thiết để cấu hình các board cho System
Generator.
- Lưu ý: Bạn có thể lưu các cấu hình tập tin vào một file nén để bạn có thể sử dụng
nó sau này để cấu hình các Board trong trường hợp System Generator đã được cài


đặt lại.
• Sau khi cài đặt các cấu hình Board mới, tên board "NEXYS 3 Board" sẽ xuất hiện
trong danh sách System Generator trong các thuộc tính System Generator như thể
hiện trong hình 22.

6. Hardware/Software Co-Simulation trên FPGA
- Trong phần trước chúng ta đã thực hiện:
• Chúng ta cấu hình System Generator cho HW / SW Co-Simulation sử dụng
NEXYS3 Board (Spartan-6)
• Chúng ta tạo ra một thư viện với một khối mới gói gọn việc thực hiện phần cứng
của hệ thống DSP. Khối này được liên kết với một bit-stream sẽ được nạp vào

FPGA.


- Trong phần này chúng ta sẽ sửa đổi mô hình DSP để sử dụng khối Co-Simulation
mới và thay thế các mô hình mô phỏng đã sử dụng trước.
+ Tạo một bản sao của mô hình bằng cách chọn File → Save as và đặt tên file mới
là sg tut1 co.
+ Trong mô hình sg tut1 co thay thế tất cả các thành phần phần cứng với "sg tut 1
hwcosim" từ thư viện "sg tut 1 hwcosim lib" như thể hiện trong hình 15.


+ Kết nối cáp FPGA 'USB Prog' và cáp 'UART' vào cổng USB. Chờ cho tất cả các
drivers Microsoft Windows được cài đặt.
+ Nhấp đúp chuột vào khối "sg tut 1 hwcosim". Cửa sổ thuộc tính của khối sẽ xuất
hiện như thể hiện trong hình 15. Đối với cáp tải về chọnDigilent USB JTAG
Cable cho board NEXYS3 (Spartan- 6) sử dụng cáp Digilent USB JTAG để nạp.
Sau đó nhấn OK.
+ Bây giờ các thiết kế đã sẵn sàng cho Co-Simulation. Nhấp vào nút Start
Simulation trên thanh công cụ để bắt đầu Co-Simulation. System Generator đầu
tiên sẽ nạp file bitstream của khối "sg tut 1 hwcosim" như thể hiện trong hình 16.

+ Khi nạp hoàn tất, System Generator đọc đầu vào từ môi trường mô phỏng
Simulink và gửi chúng đến các thiết kế trên board bằng cách sử dụng kết nối
JTAG. System Generator sau đó đọc các đầu ra từ JTAG và gửi nó đến Simulink
để hiển thị.
+ Sau khi mô phỏng hoàn thành các kết quả sẽ được hiển thị như trong hình 17.
Chúng ta có thể xác minh các kết quả bằng cách so sánh đầu ra mô phỏng với đầu
ra khi chúng ta mô phỏng trên Simulnik (đầu ra dự kiến là 29) như thể hiện trong
hình 17.



7. Tạo code VHDL từ Xilinx System Generator
- Một trong những lợi thế của Xilinx System Generator là khả năng tạo ra code
HDL từ thiết kế của mình. Hãy chắc chúng ta sử dụng bản gốc mô hình sg tut1 đã
xây dựng từ các khối cơ bản và không phải là người sử dụng Co-simulation. Bằng
cách làm theo các bước dưới đây chúng ta có thể tạo ra code VHDL và phân tích
thiết kế sử dụng phần mềm Xilinx ISE.


- Tiến hành chuyển đổi:
+ Trước tiên chúng ta phải đảm bảo thời gian chờ của khối multiplier và trong tab
' Implementation ' chúng ta chọn "embedded multiplier", và chọn “Use
behavioral HDL” .
+ Kích đúp vào khối System Generator và thiếp lập theo các bước sau:
• Compilation: HDL Netlist
• Part: Spartan6 xc6slx16-2csg324
• Synthesis Tool: XST
• Hardware Description Language: VHDL
• Target Directory: ./ise
• Create Testbench: unchecked
• FPGA System Clock Period (ns): 10


+ Nhấn Generate để tạo code HDL và các tập tin project ISE.
+ Select Start → All Programs → Development → Xilinx → ISE Design Suite
14.6 → ISE
+ Mở project đã tạo bằng cách chọn File → Open Project và chọn sg tut
1.xise trong thư mục project ISE.
- Chúng ta sẽ thấy trong phần mềm là code VHDL của thiết kế đã tạo trong
Simulink. Các bạn có thể chỉnh sửa hoặc chạy kiểm tra và xem sơ đồ mạch trong

ISE.
8.TÓM LẠI.
- Trong 6 bài hướng dẫn chúng ta đã sử dụng Xilinx System Generator để thực
hiện các mô phỏng, tạo các thiết kế DSP từ các khối Xilinx System Generator trên
môi trường Simulink và nạp chúng vào phần cứng FPGA để kiểm tra. Bài 6 là bài
kết thúc hướng dẫn Xilinx System Generator. Các bạn có thắc mắc gì thì cmt hoạc
liên hệ mình theo Face ở chữ kí. Cảm ơn.



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×