System Generator
System generator là một công cụ thiết kế hệ thống giúp cho việc thiết kế các ứng
dụng phần cứng trong FPGA và mô phỏng Simulink. Đó là một môi trường thiết kế rất
mạnh trong việc thiết kế phần cứng. Systerm Generator có khả năng mô hình hóa cao và có thể dịch các thiết kế của người dùng sang ngôn ngữ phần cứng trong FPGA một
Generator còn cho phép xâm nhập vào các tài nguyên trong FPGA ở mức thấp hơn, qua đó cho phép người sử dụng thực hiện các thiết kế có hiệu suất cao.
Việc lập trình một bộ FPGA bằng System Generator bao gồm các bước sau: Mô
phỏng thiết kế, tạo ra một bản thiết kế theo ngôn ngữ bậc thấp có thể đưa các thiết bị
phần cứng như FPGA từ thiết kế mô phỏng này, sau đó đưa bản thiết kế mới tạo ra này vào trong file cấu hình của FPGA gọi là bitsream. Bước cuối cùng, đưa thiết kế phần
cứng vào trong bitstream có thể thực hiện bằng các phần mềm khác.
Một trong những mặt vượt trội của System Generator so với các phần mềm khác
là chức năng chạy mô phỏng phần cứng Co-Simulation, chức năng này sẽ được nói rõ thêm trong phần sau.
Các khối Block Set DSP Xilinx
System Generator đã xây dựng khoảng hơn 90 khối xử lí tín hiệu số (DSP) để hỗ
trợ người dùng trong việc mô phỏng các thiết kế. Các khối này gồm các khối DSP phổ
biến như khối cộng, nhân, thanh ghi...Ngoài ra, nó còn bao gồm các khối DSP phức
tạp hơn như khối sửa lỗi tiến, FFT, các bộ lọc và bộ nhớ. Các khối này làm cho việc
thiết kế mô phỏng trở nên đơn giản và thuận tiện hơn nhiều.
Hình 24: Một số khối cơ bản hỗ trợ Matlab cung cấp bởi Xilinx.
Các thuật toán trong Matlab có thể kết hợp chặt chẽ vào trong System Generator thông qua AccelDSP. AccelDSP bao gồm các thuật toán mạnh có thể chuyển các thiết
kế dùng dấu chấm động (floating-point) trong Matlab sang dạng dấu chấm cố định
(fix-point) là loại hay được dùng trong System Generator. Ngoài ra System generator còn bao gồm khối Mcode cho phép người dùng sử dụng các thuật toán không có trong
Matlab để thiết kế và thực hiện các hoạt động điều khiển đơn giản.
Đánh giá, ước lượng tài nguyên hệ thống
System Generator cung cấp khối ước lượng tài nguyên cho phép đánh giá một
cách nhanh chóng các tài nguyên dùng cho thiết kế trước khi thực hiện nó trong thực
cho các nhà thiết kế có thể tận dụng tối đa các tài nguyên trong FPGA (lên đến 550 bộ
nhân trong thiết bị Virtex 5).
Hình 25: Cửa sổ ước lượng tài nguyên.
Mô phỏng phần cứng Co-Simulation
Các khối blocksets được hỗ trợ trong System Generator cho phép người dùng xây dựng các thiết kế mô phỏng với độ chính xác cao. Tuy nhiên các kỹ sư thiết kế vẫn
muốn xem xét một cách chi tiết việc thiết kế của mình chạy trong phần cứng như thế
nào. System Generator cung cấp giao diện mô phỏng Cosimulation giúp kết hợp chặt
chẽ và trực tiếp việc chạy thực tế trên FPGA vào mô phỏng simulink. Để thực hiện mô
phỏng Cosimulation, trước hết ta đưa thiết kế vào bitstream, sau đó System Generator tự động hợp nhất cấu hình phần cứng FPGA với bitstream trở lại thiết kế mô phỏng
gọi là khối run-time. Khi thiết kế được mô phỏng trong môi trường Simulink, kết quả
của thiết kế cũng được tính toán trong phần cứng. Điều này cho phép chạy thử các thiết kế trong phần cứng thật sự và làm tăng tính thực tế cho các mô phỏng.
Khả năng kết hợp các môi trường thiết kế
System Generator cung cấp 1 môi trường thống nhất cho các thiết kế DSP
FPGAs, cho phép các thành phần nhỏ được viết bởi các ngôn ngữ khác nhau như RTL,
Simulink, Matlab và C/C++ có thể làm việc cùng nhau trong cùng một thiết kế.
System Generator hỗ trợ khối black box cho phép đưa RTL vào thực hiện mô phỏng
phần mềm và phần cứng bằng cả ModelSim hoặc Xilinx ISE Simulator.
Như vậy, với công cụ là Kit Virtex 4 ta không chỉ có một phần cứng hiện đại,
chuyên dụng với lượng tài nguyên FPGA lớn mà còn kèm theo đó là nhiều công cụ hỗ
trợ rất mạnh như System Generator, Co-Simulation …cho phép ta dễ dàng triển khai
CHƯƠNG 4: THỰC HIỆN MÔ HÌNH THIẾT KẾ VỚI KIT VIRTEX-4
(Thiết kế bộ phát mã Walsh cho hệ đo kênh MIMO)
4.1. Giới thiệu
Việc thiết kế FPGA để thực hiện các chức năng theo một yêu cầu nào đó bằng
ngôn ngữ VHDL để tiết kiệm tài nguyên FPGA đã trở lên rất phổ biến và mang lại
những lợi ích rõ rệt. Tuy nhiên trong thực tế có những mô hình lớn như trong các mô
hình thu phát tín hiệu MIMO (Multiple Input, Multiple Output) đòi hỏi người thực
hiện phải thực hiện một khối lượng công việc rất lớn với việc viết câu lệnh VHDL mà
đôi khi mục đích chỉ là kiểm tra tính khả thi của mô hình nêu ra. Hơn nữa, với công
nghệ FPGA phát triển như ngày nay thì tài nguyên trong chip FPGA đối với các mô
hình như thế không còn là vấn đề quá quan trọng. Xilinx là hãng đi tiên phong trong
lĩnh vực phát triển các công cụ bổ trợ cho các kit chuyên dụng với công cụ System Generator như đã giới thiệu ở chương 3 nhằm giảm nhẹ công việc cho người thiết kế
hệ thống, đồng thời giúp người thiết kế biến những mô hình mô phỏng trở thành mã nguồn có thể nhúng trực tiếp vào trong phần cứng (FPGA) – Tất nhiên điều này có thể
khiến mã nguồn của thiết kế dài hơn và tốn tài nguyên phần cứng hơn nhưng nó lại
mang lại giá trị rất lớn là rút ngắn thời gian trong qui trình thiết kế. Chương này sẽ giới
thiệu về cách sử dụng công cụ hỗ trợ system generator để thực hiện một mô hình thiết
kế thông qua việc thực hiện một mô hình phát tín hiệu đã qua mã hóa Walsh.