IP BLOCK DESIGN ( PHẦN 2)
IP
BLOCK DESIGN (PHẦN 2)
1. Xu hướng và triết lý ngành.
Trong những năm gần
đây, với nhu cầu các SOC phức tạp tăng trưởng đều đặn, các nhà thiết kế hệ thống
đang buộc phải kết hợp ngày càng nhiều IP vào sản phẩm của họ . Với các hệ thống
phức tạp hơn, điều này có thể làm gia tăng hàng trăm lõi IP riêng lẻ. Với nhiều
phần IP riêng biệt này trong sản phẩm, khả năng quản lý từng khối riêng lẻ trở
nên khó khăn hơn nhiều. Giải pháp cho vấn đề này là kết hợp các lõi IP của một
chức năng quan trọng để tạo ra một hệ thống IP con duy nhất.
Hình 1: Hệ thống IP con Video
Một ví dụ điển hình về
một hệ thống IP con là một kênh xử lý video riêng lẻ - video vào, chỉnh sửa
pixel, khối giảm tiếng ồn – được kết hợp với nhau để tạo ra một hệ thống IP
video con duy nhất có thể tích hợp vào thiết kế
hệ thống nhúng dưới dạng một khối IP đơn riêng lẻ thay vì 6 lõi IP
riêng.
2. Phương pháp thiết kế lõi IP
Bây giờ chúng ta đã giới
thiệu khái niệm về các lõi IP và các kiểu IP có sẵn, chúng ta sẽ xem xét các
cách khác nhau mà chúng ta có thể tạo ra IP của riêng mình. Xilinx cung cấp một
số công cụ cho phép tạo các khối IP tùy chỉnh để sử dụng các thiết kế hệ thống
nhúng của riêng bạn.
2.1.
HDL
Các ngôn ngữ mô tả phần
cứng, chẳng hạn như VHDL và Verilog, là các ngôn ngữ lập trình chuyên dụng được
sử dụng để mô tả hoạt động và cấu trúc các mạch điện tử kỹ thuật số. Khả năng tạo
lõi IP trong HDL cho phép bạn kiểm soát tối đa các chức năng của thiết bị ngoại
vi. Nếu bạn đã có thiết kế HDL hiện tại, khả năng biến nó thành lõi IP cho phép
bạn tận dụng lợi thế của các lợi ích của mô-dun IP mà không phải thiết kế lại
hoặc sử dụng tương ứng của bên thứ ba.
Khi thiế kế các lõi IP
trong HDL để giao tiếp thông qua giao diện AXI, phải cẩn thận để tuân thủ các
quy ước đặt tên tín hiệu ngoại vi IP Xagerx. Tệp HDL cấp cao nhất cho lõi IP
xác định giao diện thiết kế, liệt kê các kết nối và cổng mặc định cho giao diện
bus. Nó cũng liệt kê bất kỳ generics nào và chỉ định các giá trị mặc định của
chúng.
Một ví dụ về phân cấp
file nguồn ngoại vi HDL:
<peripheral>
là tên của IP được tạo.
<Version> là
phiên bản hiện tại, tức là v1_0
<AXI_instance>
ví dụ như giao diện AXI4 chủ(M) hoặc tớ(S) tức là M00_AXI hoặc S00_AXI.
(Có
thể có nhiều trường hợp khác trên mỗi thiết bị ngoại vi)
Hạn chế lớn nhất để tạo
IP trong HDL, là các thiết kế phức tạp đòi hỏi kỹ sư có kinh nghiệm để tạo ra một
giải pháp tối ưu. Quá trình này có thể rất tốn thời gian tiếp cận thị trường lớn
hơn. Tuy nhiên, khi tìm kiếm IP yêu cầu thời gian hoặc hạn chế phần cứng rất chặt
chẽ, hoặc nếu chức năng phức tạp, HDL thường là lựa chọn tốt nhất.
2.2 Trình tạo hệ thống (System Generator)
System Generator, thường
được sử dụng cho thiết kế DSP, là một công cụ thiết kế sử dụng Mathworks
Simulink nền tảng cho thiết kế hệ thống FPGA. Nó cung cấp một môi trường dựa
trên mô hình cao cấp để tạo ra phần cứng.
Với sự ra đời của
Vivado Design Suite vào danh mục sản phẩm Xilinx, một sản phẩm mới mục tiêu biên
dịch đã được giới thiệu với System Generator. Trình biên dịch IP Packager cho
phép bạn đóng gói thiết kế System Generator thành một mô-đun IP có thể được đưa
vào danh mục IP của Vivado. Sau đó, thiết kế System Generator có thể được sử dụng
như bất kỳ mô-đun nào khác từ danh mục IP và được đưa vào thiết kế người dùng
Vivado. Hơn nữa, System Generator được tích hợp hoàn toàn vào dòng thiết kế
Vivado, cho phép tạo khối IP tích hợp IP trực tiếp từ Vivado.
Trước tiên, System
Generator sẽ tạo một HDL Netlist từ mô hình được người dùng thiết kế . Bất kỳ
mô đun IP Vivado sẽ tự động sao chép
sang thư mục con có tên “IP”, trước khi tất cả các tệp thiết kế RTL và tệp thiết
kế Vivado IP được đóng gói thành tệp ZIP, được đặt trong thư mục con có tên
“ip_packager”.
Các file tài liệu
Testbench và HTML cũng có thể tạo tự động bởi công cụ biên dịch danh mục IP.File
Testbench cho phép IP được mô phỏng đầy đủ từ một dự án IDE Vivado. File tài liệu
bao gồm thông tin về IP và cách nó giao tiếp trong Vivado.
System Generator cung cấp
một môi trường trực quan cho việc thiết kế IP, nơi các khối có thể được kết nối
với nhau để tạo ra các thiết kế một cách nhanh chóng và dễ dàng. Một số lượng lớn
các khối có sẵn từ các toán tử toán học đơn giản đến các phép toán DSP phức tạp.
Chức năng không phải lúc nào cũng được triển khai ở dạng dễ đọc nhất trong mã
HDL và điều này có thế làm cho một số thiết kế khó theo dõi. Tùy thuộc vào các
tùy chọn được chọn trong thiết kế System Generator, việc triển khai IP có thể
không hiệu quả như khi mã hóa bằng tay trong HDL.
2.3 HDL Coder
HDL coder là một công cụ
từ MathWorks cho phép tổng hợp code HDL (cả VHDL và Verilog) từ các hàm
MATLAB/Simulink và tự động chuyển đổi hệ thống từ điểm động thành điểm cố định,
cung cấp mức trừu tượng cao. Điều này cho phép người dùng tập trung vào việc
phát triển các thuật toán và mô hình mà không có sự phức tạp cấp thấp hơn của
thiết kế HDL.
Dòng công việc HDL
Coder cũng cung cấp các công cụ để xác minh code HDL, cho phép code HDL được tạo
ra và kiểm tra cùng với mô hình gốc MATLAB/Simulink. Điều này cho phép bất kỳ lỗi
nào có thể có trong code HDL dễ dàng xác minh và sửa chữa.
Tối ưu hóa code HDL được
cung cấp trong luồng công việc chỉ định tùy chọn các thiết bị FPGA nhằm kiểm
soát số lượng hơn việc thực hiện cho phép bạn làm nổi bật các đường dẫn quan trọng,
kiểm soát kiến trúc HDL và tạo ra dự toán sử dụng tài nguyên phần cứng.
Khi được tạo bởi HDL Coder, mã HDL có thể được sử dụng để tạo lõi IP theo cách tương tự như được nêu chi tiết trong Phần 2.1.
Hình 3: HDL Coder
Trong khi HDL Coder cho
phép bạn tạo IP từ các mô hình MATLAB/Simulink hiện có một cách nhanh chóng và
với những thay đổi thiết kế tối thiểu, có một số nhược điểm. Hiện tại, không phải
tất cả các chức năng MATLAB và các khối Simulink đều hỗ trợ việc tạo HDL. Điều
này có nghĩa là một số chức năng có thể phải được làm lại với các chức năng hoặc
khối được hỗ trợ. Một điểm đáng lưu ý nữa là, mặc dù một số lượng tùy chỉnh về
triển khai phần cứng và tối ưu hóa, nhưng mã HDL được tạo có thể không hiệu quả
như được tạo từ HDL được mã hóa bằng tay. Mã được tạo đôi khi có thể phức tạp để
theo dõi về khả năng đọc và trong một số trường hợp khó tùy chỉnh.
Post a Comment: