



















Preview text:
lOMoAR cPSD| 58675420 lOMoAR cPSD| 58675420 MỤC LỤC
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT ................................................................... 1
1.1. Giới thiệu phần mềm Vivado ....................................................................... 1
1.2. Thiết kế hệ thống nhúng sử dụng IP Integrator ........................................... 1
1.3. Tạo Accelerator Phần cứng IP-XACT ......................................................... 3
1.3.1 Tạo các bộ chuyển đổi IP-XACT ........................................................... 3
1.3.2 Thêm bộ điều hợp ................................................................................... 4
1.3.3 Tích hợp Bộ điều hợp IP-XACT trong Hệ thống AXI ........................... 5
CHƯƠNG 2: THIẾT KẾ BỘ XỬ LÝ BẰNG IP-XACT ADAPTER VÀ IP
INTEGRTOR ....................................................................................................... 5
2.1. Tạo một project mới ..................................................................................... 6
2.2 Chạy mô phỏng C ....................................................................................... 14
2.3. Tổng hợp thiết kế ....................................................................................... 15
2.4. Chạy RTL/C Co-simulation ....................................................................... 19
2.5. Cấu hình Bộ chuyển đổi IP-XACT ............................................................ 20
2.6. Tạo Bộ chuyển đổi IP-XACT Adapter ...................................................... 25
2.7. Tạo Vivado Project .................................................................................... 27
2.7.1. Tạo hệ thống ban đầu cho Zedboard ................................................... 27
2.7.2. Thêm IP HLS vào danh sách IP ........................................................... 28
2.7.3. Khởi tạo core fir_top ........................................................................... 29
2.7.4. Mở các cổng PS-PL Interrupt .............................................................. 29
2.7.5. Kiểm tra địa chỉ và đánh giá thiết kế ................................................... 32
2.8. Xuất thiết kế phần cứng sang SDK và tạo Application Project ................. 34
2.8.1. Xuất thiết kế phần cứng với bitstream đã tạo sang phần mềm SDK... 34
2.9. Kiểm tra thiết kế trong phần cứng ............................................................. 36 lOMoAR cPSD| 58675420
CHƯƠNG 1. CƠ SỞ LÝ THUYẾT
1.1. Giới thiệu phần mềm Vivado.
Vivado là một phần mềm của Xilinx, được sử dụng để thiết kế và triển khai
hệ thống số trên các vi mạch lập trình được (FPGA) và hệ thống trình tự tùy chỉnh
(SoC). Đây là một công cụ mạnh mẽ cho việc phát triển phần cứng số từ các khối
logic cơ bản cho đến hệ thống nhúng phức tạp.
Vivado cung cấp một loạt các tính năng và công cụ để hỗ trợ quy trình thiết
kế FPGA và SoC. Nó bao gồm các công cụ tổng hợp, triển khai, tối ưu và kiểm tra
để tạo ra bitstream hoặc hệ thống nhúng hoàn chỉnh. Vivado hỗ trợ các ngôn ngữ
mô tả phần cứng phổ biến như VHDL và Verilog, cho phép người dùng mô phỏng,
kiểm tra và xác minh thiết kế trước khi triển khai thực tế.
Một trong những tính năng nổi bật của Vivado là IP Integrator, cho phép
người dùng thiết kế hệ thống nhúng bằng cách kết hợp các IP (Intellectual
Property) có sẵn và tạo ra một hệ thống hoàn chỉnh. Nó cung cấp giao diện đồ họa
và công cụ trực quan để kết nối, cấu hình và kiểm soát các thành phần trong hệ thống.
Vivado cũng hỗ trợ các công nghệ tiên tiến như High-Level Synthesis
(HLS), cho phép người dùng viết mã mô phỏng trên mức cao hơn và tự động tạo
ra mã RTL tương ứng. Điều này giúp tăng hiệu suất và giảm thời gian phát triển
cho các thiết kế phức tạp.
Ngoài ra, Vivado cũng cung cấp một loạt các công cụ phân tích và gỡ lỗi, cho
phép người dùng theo dõi và xác minh hoạt động của hệ thống.
Vivado là một công cụ phát triển hàng đầu trong lĩnh vực thiết kế FPGA và
SoC, được sử dụng rộng rãi trong các lĩnh vực như điện tử, viễn thông, ô tô, hàng
không vũ trụ và nhiều lĩnh vực công nghiệp khác.
1.2. Thiết kế hệ thống nhúng sử dụng IP Integrator
Chúng ta sẽ sử dụng IP Integrator để tạo thiết kế dựa trên hệ thống xử lý bao gồm:
- Bộ xử lý và thiết bị ngoại vi:
• Bộ xử lý ARM ® Cortex ™ A9 kép của Zynq 7000 AP SoC. • Mạch kết nối AXI.
• Thiết bị ngoại vi AXI. lOMoAR cPSD| 58675420
• Cổng reset, xung nhịp, gỡ lỗi.
- Nền tảng phần mềm cho hệ thống xử lý:
• Hệ điều hành độc lập. • Hỗ trợ ngôn ngữ C.
• Dịch vụ bộ xử lý.
• Các trình điều khiển C cho phần cứng.
- Ứng dụng cho người dùng:
• Các hàm dịch vụ ngắt (tùy chọn).
Về kiến trúc Zynq 7000 AP SoC bao gồm hai phần chính: - PS: Hệ thống xử lý
• Dựa trên hai bộ xử lý ARM Cortex A9 (có phiên bản đơn lõi có sẵn).
• Nhiều thiết bị ngoại vi. • Lõi nhân tạo cứng.
- PL: Hệ thống logic có thể lập trình
• Sử dụng cùng logic lập trình của dòng 7 series.
• Thiết bị dựa trên Artix: Z 7010, Z 7015 và Z 7020 (chỉ hỗ trợ các ngân hàng I/O dải cao).
• Phiên bản đơn lõi: Z 7017S, Z 7012S và Z 7014S.
• Thiết bị dựa trên Kintex: Z 7030, Z 7035, Z 7045 và Z 7100 (kết hợp các ngân
hàng I/O dải cao và hiệu suất cao).
Vivado, IP Integrator và SDK là những công cụ được sử dụng trong thiết kế FPGA
của Xilinx và phát triển hệ thống nhúng:
• Vivado là bộ công cụ cho thiết kế FPGA của Xilinx và bao gồm khả năng thiết kế hệ thống nhúng.
• IP Integrator là một phần của Vivado và cho phép thiết kế cấp block cho phần
cứng của một hệ thống nhúng.
• Nó được tích hợp vào Vivado và bao gồm tất cả các công cụ, IP và tài liệu cần
thiết cho việc thiết kế hệ thống với nhân cứng Zynq 7000 AP SoC và/hoặc bộ
xử lý mềm MicroBlaze của Xilinx. lOMoAR cPSD| 58675420
• Vivado + IPI thay thế cho ISE/EDK.
Vivado là quản lý dự án chung và được sử dụng để phát triển phần cứng không nhúng
và triển khai hệ thống nhúng.
• Quy trình Vivado/IP Integrator được khuyến nghị cho việc phát triển hệ thống nhúng Zynq.
SDK là một môi trường thiết kế phần mềm dựa trên Eclipse.
• Nó cho phép tích hợp các thành phần phần cứng và phần mềm. • Liên kết từ Vivado.
1.3. Tạo Accelerator Phần cứng IP-XACT
1.3.1 Tạo các bộ chuyển đổi IP-XACT
Danh sách các bộ chuyển đổi có thể tham khảo Type Core Name Description AX14 AX14M AX14 Master Interface AX14Stream AX14 Stream Interface AX14LiteS AX14Lite Slave Interface Trong đó: -
AX14M: Được chỉ định trên mảng và con trỏ (và tham chiếu trong C++) mà
thôi. Chúng ta có thể nhóm nhiều đối số vào cùng một giao diện AXI4 Lite bằng
cách sử dụng tùy chọn bundle. -
AX14Stream: Được chỉ định trên đối số đầu vào hoặc đầu ra, không được
chỉ định trên đối số đầu vào/đầu ra. -
AX14LiteS: Được chỉ định trên bất kỳ loại đối số nào trừ mảng. Chúng ta
có thể nhóm nhiều đối số vào cùng một giao diện AXI4 Lite bằng cách sử dụng tùy chọn bundle.
Khi mảng là một đối số của hàm cấp cao:
• Mảng/RAM nằm "ngoài chip".
• Loại tài nguyên xác định các cổng IO cấp cao.
Thêm bộ chuyển đổi vào RTL và tạo giao diện bus: lOMoAR cPSD| 58675420
• Nguyên tắc là tương tự.
• Chúng ta định nghĩa một tài nguyên cho cổng.
• Ngoài ra còn một số tùy chọn khác chúng ta sẽ trình bày.
1.3.2 Thêm bộ điều hợp
1.3.2.1 Kiểm tra RTL & C IO
Bước đầu tiên trong việc thêm một bộ chuyển đổi:
- Đảm bảo bạn có một cổng phù hợp trên RTL. - Ví dụ:
• Nếu bạn muốn có một giao diện AXI Stream → cổng phải có ap_fifo trên RTL.
• Nếu cần ap_fifo trên RTL → truyền con trỏ biến, mảng hoặc biến tham chiếu
(trong, ra, nhưng không phải trong/ra).
1.3.2.2 Gắn Adapter Core cho mỗi Port Sau
khi biết được I/O adapter:
• Thêm core như một tài nguyên vào cổng RTL.
Các core được liệt kê trong Hướng dẫn Thư viện Vivado HLS:
• Và có sẵn từ menu trong giao diện đồ họa (GUI).
1.3.2.3 Tùy chọn nhóm và đổi tên các bus Nhóm bus metadata.
• Cho phép nhóm các bus với tên mới.
• Nhiều tài nguyên có thể có cùng tên.
• Sẽ được nhóm vào cùng một bus. Ánh xạ tên cổng.
• Tùy chọn, cổng có thể được ánh xạ tên trong trường port map. o {{output}
{output_hs_vld, output_ap_ack}}
• Tên cổng RTL được đổi tên trên giao diện bộ chuyển đổi.
1.3.2.4 Tạo bộ chuyển đổi
• Chọn Solution > Export RTL. lOMoAR cPSD| 58675420
• Chọn IP Catalog, System Generator for Vivado hoặc PCore for EDK.
• Nhấp vào Configuration... nếu bạn muốn thay đổi số phiên bản hoặc thông tin khác.
o Phiên bản mặc định là v1_00_a. • Nhấp vào OK.
o Thư mục (ip) sẽ được tạo ra dưới thư mục impl trong thư mục dự án
hiện tại và giải pháp hiện tại.
o Chỉ mã RTL trong Verilog sẽ được tạo ra, ngay cả khi bạn chọn ngôn ngữ VHDL.
1.3.3 Tích hợp Bộ điều hợp IP-XACT trong Hệ thống AXI
• Tạo một dự án Vivado mới hoặc mở một dự án đã có.
• Thiết lập cài đặt IP để trỏ đến IP được xuất bằng Cài đặt Dự án.
• Kích hoạt IP Integrator.
• Xây dựng hoặc sửa đổi phần cứng của thiết kế nhúng bằng cách thêm adapter
IP-XACT đã tạo trong Vivado HLS.
• Tạo (Cập nhật) wrapper HDL cấp cao nhất.
• Tổng hợp và triển khai trong Vivado.
• Xuất mô tả phần cứng và khởi chạy SDK.
• Cài đặt kho phần mềm để trỏ đến IP đã tạo nếu cần thiết.
• Tạo một gói hỗ trợ bo mạch phần mềm mới [hoặc cập nhật một gói đã tồn tại]
để bao gồm trình điều khiển cho IP.
• Tạo một dự án ứng dụng trong SDK.
• Biên dịch phần mềm bằng trình biên dịch chéo GNU trong SDK.
• Tải xuống bitstream đã hoàn thành của logic có thể lập trình.
• Sử dụng SDK để tải chương trình (tệp ELF).
CHƯƠNG 2: THIẾT KẾ BỘ XỬ LÝ BẰNG IP-XACT ADAPTER VÀ IP INTEGRTOR
Thiết kế được sử dụng trong bài báo cáo này bao gồm bộ lọc FIR được dùng để
lọc âm có cao độ 4 KHz được thêm vào âm nhạc chất lượng CD. Đặc tính của bộ lọc như sau: lOMoAR cPSD| 58675420 - FS=48000 Hz - FPASS1=2000 Hz - FSTOP1=3800 Hz - FSTOP2=4200 Hz - FPASS2=6000 Hz - APASS1=APASS2=1 dB - ASTOP=60 dB
Sơ đồ tổng quan các bước thực hiện project với ZedBoard:
Hình 2.1 Sơ đồ tổng quan
2.1. Tạo một project mới
Bước 1: Tạo một project mới trong Vivado HLS sử dụng XC7Z020CLG484-1 (ZedBoard).
Bước 2: Khởi chạy Vivado HLS: Chọn Start > All Programs > Xilinx Design Tools
> Vivado 2017.4 > Vivado HLS > Vivado HLS 2017.4
Giao diện Getting Started sẽ xuất hiện. lOMoAR cPSD| 58675420
Hình 2.2. Vivado HLS Welcome Page
Bước 3: Trong phần Getting Started, nhấp vào Create New Project. Cửa sổ New
Vivado HLS Project wizard sẽ mở ra.
Bước 4: Nhấp vào nút Browse... của trường Location, duyệt đến thư mục
c:\xup\hls\labs\lab4, sau đó nhấp vào OK. Bước 5: Đối với Project Name, gõ fir.prj lOMoAR cPSD| 58675420
Hình 2.3. Cửa sổ New Vivado HLS Project Bước 6: Nhấp vào Next.
Bước 7: Trong mục Add/Remove Files cho các tệp nguồn, gõ fir là tên hàm
Bước 8: Nhấp vào nút Add Files..., chọn tệp fir.c và fir_coef.dat từ thư mục
c:\xup\hls\labs\lab4, sau đó nhấp Open. lOMoAR cPSD| 58675420
Hình 2.4. Add/Remove Files cho các Source file Bước 9: Nhấp vào Next.
Bước 10: Trong mục Add/Remove Files cho testbench, nhấp vào nút Add Files...,
chọn tệp fir_test.c từ thư mục c:\xup\hls\labs\lab4 và nhấp Open. lOMoAR cPSD| 58675420
Hình 2.5. Add/Remove Files cho Testbench Bước 11: Nhấp vào Next.
Bước 12: Trong trang Solution Configuration, để trường Solution Name là
solution1 và đặt chu kỳ clock là 10 cho ZedBoard. Để trường Uncertainty trống vì
nó sẽ lấy giá trị mặc định là 1.25 cho ZedBoard.
Bước 13: Nhấp vào nút Browse của Part và chọn các bộ lọc sau đây, sử dụng tùy chọn
Parts Specify, để chọn xc7z020clg484 sau đó nhấp vào OK: Family: Zynq lOMoAR cPSD| 58675420 Sub-Family: Zynq
Package: clg484 (ZedBoard) hoặc clg400 (Zybo) Speed Grade: -1
Hình 2.6. Cấu hình solution
Bước 14: Nhấp vào Finish.
Ta sẽ thấy project đã được tạo trong chế độ xem Explorer. Mở rộng các thư mục con
khác nhau để xem các mục trong từng thư mục con. lOMoAR cPSD| 58675420
Hình 2.7. Cửa sổ làm việc Vivado HLS
Bước 15: Nhấp đúp vào tệp fir.c trong thư mục nguồn để mở nội dung của nó trong bảng thông tin.
Hình 2.8. Thiết kế của bộ lọc FIR được sử dụng lOMoAR cPSD| 58675420
Bộ lọc FIR mong đợi đầu vào x là một mẫu và con trỏ đến mẫu đã tính toán là
sample out. Cả hai đều được xác định kiểu dữ liệu data_t. Các hệ số được tải vào
mảng c có kiểu dữ liệu coef_t từ tệp được gọi là fir_coef.dat nằm trong thư mục
hiện tại. Thuật toán tuần tự được áp dụng và giá trị tích lũy (sample out) được tính
toán trong biến acc có kiểu dữ liệu acc_t.
Bước 16: Nhấp đúp vào fir.h trong tab đại diện để mở nội dung của nó trong bảng thông tin. Hình 2.9. File header
Tệp tiêu đề bao gồm ap_cint.h để có thể sử dụng độ rộng dữ liệu do người dùng xác
định (có độ chính xác tùy ý).
Nó cũng xác định số lượng taps (N), số lượng mẫu được tạo ra (trong testbench),
và các kiểu dữ liệu coef_t, data_t và acc_t. Kiểu dữ liệu coef_t và data_t là ngắn
(16 bit). Vì thuật toán lặp lại (nhân và tích lũy) qua 59 taps, có khả năng tăng số
bit lên 6 bit và do đó acc_t được xác định là int38. Vì acc_t lớn hơn độ rộng mẫu lOMoAR cPSD| 58675420
và hệ số, chúng phải được chuyển đổi trước khi sử dụng (như trong dòng 16, 18 và 21 của fir.c).
Bước 17: Nhấp đúp vào tệp fir_test.c trong thư mục testbench để mở nội dung của nó trong bảng thông tin.
Hình 2.10. Nội dung file testbench
Lưu ý rằng testbench mở fir_impulse.dat ở chế độ ghi và gửi một xung (mẫu đầu tiên là 0x8000). 2.2 Chạy mô phỏng C
Chạy mô phỏng C để quan sát đầu ra dự kiến.
Bước 1: Chọn Project > Run C Simulation hoặc nhấp vào nút từ thanh công cụ và
nhấp OK trong cửa sổ C Simulation Dialog.
Testbench sẽ được biên dịch bằng trình biên dịch apcc và tệp csim.exe sẽ được tạo
ra. Sau đó, csim.exe sẽ được thực thi và đầu ra sẽ được hiển thị trong cửa sổ console view. lOMoAR cPSD| 58675420
Hình 2.11. Kết quả testbench được tạo ra trong chế độ xem Console
Ta sẽ thấy các hệ số bộ lọc đang được tính toán.
2.3. Tổng hợp thiết kế
Tổng hợp thiết kế với các giá trị mặc định. Xem kết quả tổng hợp và trả lời câu hỏi
được liệt kê trong phần chi tiết của bước này.
Bước 1: Chọn Solution > Run C Synthesis > Active Solution để bắt đầu quá trình tổng hợp.
Bước 2: Khi tổng hợp hoàn thành, một số tệp báo cáo sẽ trở nên truy cập được và Kết
quả Tổng hợp sẽ được hiển thị trong bảng thông tin.
Bước 3: Báo cáo Tổng hợp hiển thị ước tính hiệu suất và tài nguyên cũng như độ trễ
ước tính trong thiết kế. lOMoAR cPSD| 58675420 Hình 2.12. Synthesis Report
Bước 4: Báo cáo cũng hiển thị các tín hiệu interface cấp cao được tạo ra bởi các công cụ.
Hình 2.13. Các tín hiệu interface được tạo ra lOMoAR cPSD| 58675420
Ta có thể thấy thiết kế mong đợi đầu vào x dưới dạng scalar 16-bit và đầu ra y
thông qua con trỏ của dữ liệu 16-bit. Nó cũng có tín hiệu ap_vld để chỉ ra khi kết quả hợp lệ.
Thêm chỉ thị PIPELINE vào vòng lặp và tổng hợp lại thiết kế. Xem kết quả tổng hợp.
Bước 1: Đảm bảo rằng tệp fir.c được mở trong chế độ xem thông tin.
Bước 2: Chọn tab Directive và áp dụng chỉ thị PIPELINE vào vòng lặp.
Hình 2.14. Áp dụng PIPELINE vào vòng lặp lOMoAR cPSD| 58675420
Bước 3: Chọn Solution > Run C Synthesis > Active Solution để bắt đầu quá trình tổng hợp.
Bước 4: Khi tổng hợp hoàn thành, Kết quả Tổng hợp sẽ được hiển thị trong bảng thông tin.
Bước 5: Lưu ý rằng độ trễ đã giảm xuống 62 hoặc 63 chu kỳ xung. Tiêu thụ DSP48
và BRAM vẫn giữ nguyên; tuy nhiên, tiêu thụ LUT và FF tăng một chút.
Hình 2.15. Synthesis Report saukhitheem PIPELINE vào vòng lặp