NetFPGA Project TUTORIAL U: YÊU C Ầ U:
Board NetFPGA 1G.
NetFPGA Package 2.2
Xilinx ISE 10.1i.
Đã cài đặt và cấu hình môi trường phát triển.
Contents Bài 1
Giớ i thiệu cấu trúc project trong NetFPGA Platform ............................................... 5
M ục tiêu:................................................................................................................................. 5
Cấu trúc project trên NetFPGA Platform ................................................. ........................ 5
I.
1.
Cấu trúc cây thư mục NetFPGA NetFPGA project .................................................... .................................................................. .............. 5
2.
Cấu trúc của một project ................................................. .......................................... 5 Thực hành vớ i project m ẫu trên NetFPGA. .................................................... .................................................................. .............. 6
II. 1.
Reference NIC .......................................................................................................... 6
2.
Biên dịch và n ạp lên board........................................................................................ board ........................................................................................ 6
3.
Kiểm tra thiết k ế: ...................................................................................................... 6 Bài tập: ..................................................... ............................................................................................................ ..................................................................... .............. 9
III. Bài 2
Xây dựng project mớ i trên NetFPGA ............................................... ...................... 10
M ục tiêu:............................................................................................................................... 10
Quy trình để triển khai m ột project trên NetFPGA platform ......................................... 10
I. II.
Cấu trúc project template để phát triển ứng dụng trên NetFPGA. ............................. 10
III.
Thực hành t ạo project v ớ i module cổng AND. .......................................................... 11
1.
Thêm module vào teamplate. teamplate. ................................................... ............................... 11
2.
Biên dịch và n ạp lên board NetFPGA. .................................................................... 12 Bài tập ............................................. ...................................................... ............................................................................ ...................... 13
IV. Bài 3
Giao tiếp dữ liệu vớ i board NetFPGA .............................................. ...................... 14
M ục tiêu:............................................................................................................................... 14
Giớ i thiệu Module nf2_reg_grp. .................................................................................... 14
I. II.
Hiện thực module giao ti ếp. ....................................................................................... 16
1.
Viết chương trình module giao tiếp: ................................................. ...................... 16
2.
Tạo Project m ớ i ....................................................... ....................................................................................................... ................................................ 17
3.
Biên dịch và n ạp lên board NetFPGA. .................................................................... 19
III.
Kết hợp module ngườ i dung và module đọc ghi dữ liệu. ........................................... 19
1.
Chuẩn bị source code: ..................................................... ............................................................................................. ........................................ 19
2.
Tạo project m ớ i ....................................................... ....................................................................................................... ................................................ 21
3.
Biên dịch và n ạp lên board NetFPGA. .................................................................... 23
IV.
Bài tập: ........................................................................................................................ 24
MỤC LỤC HÌNH Hình 1: menu.lst trước khi sửa Error! Bookmark not defined. Hình 3: menu.lst sau khi sửa
Error! Bookmark not defined.
Hình 4: Code khai báo biến vùng nhớ CORE
Hình 5: Code phần CORE
15
15
Hình 6: Module cpci_core_interface
17
Hình 7: Khai báo các biến cho module cpci_core_interface Hình 8: Truyền các biến vào module nf2_reg_grp
18
Hình 9: Truyền các biến vào module cpci_core_interface Hình 10: Module cpci_core_interface viết lại
18
18
21
Hình 11: Khai báo các biến cho module cpci_core_interface Hình 12: Truyền các biến vào module nf2_reg_grp
22
22
Hình 13: AND_GATE, cpci_core_interface trong nf2_core.v 23
Giớ i thiệu cấu trúc project trong NetFPGA Platform
Bài 1 M ụ c tiêu:
Hiểu được cấu trúc project của NetFPGA Platform. Biên dịch và hiện thực một project có sẵn lên board NetFPGA.
I.
Cấu trúc project trên NetFPGA Platform
1.
Cấu trúc cây thư mục NetFPGA project
Người sử dụng tương tác với NetFPGA thông qua các project và module . Project được phát triển trên NetFPGA là một thiết kế hoàn chỉnh, bao gồm một thành phần phần cứng, các kiểm nghiệm (mô phỏng và kiểm tra phần cứng hồi quy), và các thành phần phần mềm liên quan. Các module nhỏ được thiết kế có thể tái sử dụng. Cấu trúc cây thư mục chính của NetFPGA được tổ chức theo sơ đồ bên dưới:
NetFPGA2.1- NF2 : thư mục gốc o bin : chứa script dùng để mô phỏng và thiết lập môi trường hoạt động. o lib : chứa những module ổn định và những thành phần cần cho việc mô phỏng C : chứa các công cụ phần mềm và đoạn mã để người thiết kế tham khảo . core: chứa những module được sử dụng bởi các project tham khảo. contrib: chứa những module được đóng góp bởi ngườ i dùng NetFPGA. Verilog : chứa các module và tập tin Verilog có thể được sử dụng lại khi thiết kế. Makefiles : các makefile khác nhau cần thiết cho mô phỏng và tổng hợp . Perl5 : chứa các thư viện perl . o projects : chứa các project của người dùng và các pro ject tham khảo có sẵn: reference_nic: project tham khảo chức năng của car d mạng.
reference_router: project tham khảo router IPv4 4 port. reference_switch: project tham khảo switch Ethernet 4 port. cpci: project cho thiết bị Spartan. cpci_reprogrammer: project cho việc lập trình lại cho Spartan, selftest: project dùng để test tất cả các phần của NetFPGA. dram_queue_test: project dùng để test DRAM queues. dram_router: project router IPv4 4 port dùng DRAM queues. scone: phần mềm cho những thành phần của NetFPGA. gui_scone: project sử dụng Java GUI cho các thiết kế NetFPGA. wireshark_dissectors: project dùng Wiresharp dissectors cho việc
tích các gói tin của NetFPGA. 2.
Cấu trúc c ủa một project
phân
Gồm: o src : chứa tất cả code verilog thiết kế của project được dùng tổng hợp và mô
phỏng. o synth : chứa file .xco cần thiết để tạo các IPCore của hãng và makefile để hiện thực project o sw : chứa tất cả các thành phần phần mềm của thiết kế o include : chứa các file macro và các file cần thiết cho tổng hợp và mô phỏng khác
II.
Thự c hành vớ i project mẫu trên NetFPGA.
1.
Reference NIC
2.
Biên dịch và n ạp lên board
Cài đặt biến môi trường cho quá trình biên dịch
sudo source /opt/Xilinx/10.1/ISE/settings32.sh
Thực hiện biên dịch thiết kế.
cd ~/netfpga/projects/reference_nic/synth sudo make
Nạp lên board
cpci_reprogram.pl –all nf_download –i nf2c0 ~/netfpga/projects/reference_nic/synth/nf2_top_par.bit
or ~/netfpga/lib/C/download/nf_download ~/netfpga/bitfiles/reference_nic.bit
3.
Kiểm tra thiết kế:
a)
Phần mềm counterdump
Muốn sử dụng counterdump, đầu tiên cần phải cấu hình địa chỉ IP cho interface nf2cX. Để làm được điều này, thực hiện câu lệnh sau: /sbin/ifconfig nf2cX x.x.x.x
Tiếp theo, cần phải compile phần mềm. Thực hiện lệnh sau:
cd ~/netfpga/lib/C/nic make
Lệnh trên sẽ tiến hành biên dịch một số công cụ đi kèm với project reference_nic, trong đó có counterdump. Chức năng của counterdump đơn giản chỉ là đọc nội dung của một số bộ counter và hiện thị lên trên màn hình. Thực hiện lệnh sau: ./counterdump
Kết quả sẽ có dạng như sau:
b)
Found net device: nf2c0 Num pkts received on port 0: Num pkts dropped (rx queue 0 full): Num pkts dropped (bad fcs q 0): Num bytes received on port 0: Num pkts sent from port 0: Num bytes sent from port 0:
0 0 0 0 0 0
Num Num Num Num Num Num
pkts received on port 1: pkts dropped (rx queue 1 full): pkts dropped (bad fcs q 1): bytes received on port 1: pkts sent from port 1: bytes sent from port 1:
0 0 0 0 0 0
Num Num Num Num Num Num
pkts received on port 2: pkts dropped (rx queue 2 full): pkts dropped (bad fcs q 2): bytes received on port 2: pkts sent from port 2: bytes sent from port 2:
0 0 0 0 0 0
Num Num Num Num Num Num
pkts received on port 3: pkts dropped (rx queue 3 full): pkts dropped (bad fcs q 3): bytes received on port 3: pkts sent from port 3: bytes sent from port 3:
0 0 0 0 0 0
S ử d ụng send_pkts
Bây giờ chúng ta sẽ tiến hành truyền nhận một số packet và kiểm tra giá trị của counter lại lần nữa. Một trong những công cụ đi kèm với NetFPGA package cho phép thực hiện chức năng này là send_pkts. Phần mềm này cho phép gửi một gói tin Ethernet tùy ý. Đầu tiên cần phải biên dịch:
cd ~/netfpga/lib/C/tools/send_pkts make
Output sẽ có dạng nhưu sau: gcc `libnet-config --defines --cflags` -O2 -o send_pkts `libnet-config --libs` -L/usr/lib-lnet -lpcap --static
send_pkts.c
Bước tiếp theo ta thử gửi một vài packet, để thực hiện, sử dụng câu lệnh sau: cd ~/netfpga/lib/C/tools/send_pkts sudo ./send_pkts -i nf2c0 -s 10 -l 100
Lệnh trên sẽ gửi 10 packet từ port 0 trên board NetFPGA, mỗi packet dài 100bytes. Bây giờ kiểm tra lại giá trị của counter. ~/netfpga/lib/C/nic/counterdump
Kết quả sẽ có dạng như sau:
Found net device: nf2c0 Num pkts received on port 0: Num pkts dropped (rx queue 0 full): Num pkts dropped (bad fcs q 0): Num bytes received on port 0: Num pkts sent from port 0: Num bytes sent from port 0:
0 0 0 0 10 1000
Num Num Num Num Num Num
pkts received on port 1: pkts dropped (rx queue 1 full): pkts dropped (bad fcs q 1): bytes received on port 1: pkts sent from port 1: bytes sent from port 1:
0 0 0 0 0 0
Num Num Num Num Num Num
pkts received on port 2: pkts dropped (rx queue 2 full): pkts dropped (bad fcs q 2): bytes received on port 2: pkts sent from port 2: bytes sent from port 2:
0 0 0 0 0 0
Num Num Num Num Num Num
pkts received on port 3: pkts dropped (rx queue 3 full): pkts dropped (bad fcs q 3): bytes received on port 3: pkts sent from port 3: bytes sent from port 3:
0 0 0 0 0 0
Bài tập:
III.
Phân tích cấu trúc project của Reference NIC. Làm rõ các vấn đề sau: Tại sao thư mục src của project Reference NIC không cần verilog sourcefile. Những module nào được sử dụng trong project Reference NIC và vị trí của nó. 2. Tham khảo thêm 1.
http://netfpga.org/foswiki/bin/view/NetFPGA/OneGig/Guide
Xây dự ng project mớ i trên NetFPGA
Bài 2 M ụ c tiêu:
Qua bài thực hành này bạn sẽ nắm được các vấn đề sau:
I.
Các bước cơ bản để triển khai project trên NetFPGA platform. Nắm được cấu trúc của project template. Tạo một project với project template.
Quy trình để triển khai một project trên NetFPGA platform
Project mới nên tuân theo cấu trúc thư mục của project trong NetFPGA platform để thuận tiện cho việc quản lý và tái sử dụng. Theo đó, việc triển khai một project được thực hiện thông qua các bước sau:
Bước 1: Tạo cấu trúc cây thư mục cho project mới. o Tạo thư mục chính cho project mới đặt trong ~/NetFPGA/project/ o Tạo các thư muc con cần thiết trong thư mục project mới: src, synth, sw, include. Bước 2: Bổ sung các module cần thiết cho dự án. o Đặt tất cả các tập tin Verilog của thiết kế vào thư mục src. o Các tập tin xco, coe (nếu có) vào thư mục synth.
Bước 3: Bổ sung các thư viện cần thiết cho dự án, gán chân. o Quan sát có một tập tin đính kèm là: lib_modules.txt. Tập tin này quy định các module library được sử dụng. Copy nó vào thư mục include trong project của ta. Loại bỏ những module không cần thiết khỏi file lib_include.txt và thay đổi đường dẫn trong file đến các module nếu cần thiết. Bước 4: Xây dựng các công cụ phát triển. o Nếu có các công cụ phần mềm viết riêng cho project, đặt chúng vào thư mục sw.
Bước 5: Thiết lập các file cần thiết tổng hợp. o Copy makefile từ thư mục tương ứng trong project reference_nic được cung cấp sẵn của NetFPGA vào. o Thiết lập các biến môi trường NF_ROOT đến thư mục gốc (NetFPGA2.1-x.y) NF_DESIGN_DIR đến thư mục project vừa tạo NF_WORK_DIR đến thư mục làm việc (chọn nơi nào nhiều dung lượng nhất trong máy chủ). Bước 6: Biên dịch và nạp nên board NetFPGA. Bước 7: Kiểm tra thiết kế.
II.
Cấu trúc project template để phát triển ứ ng dụng trên NetFPGA.
Cac file template bao gồm:
o nf2_top.v, o nf2_core.v, o nf2_reg_grp.v.
III.
Thự c hành tạo project vớ i module cổng AND.
Trong bài tutorial này chúng ta sẽ triển khai project đơn giản sử dụng module cổng AND (AND_GATE).
1.
Thêm module vào teamplate.
Bước 1: Xây dựng cấu trúc thư mục Để đơn giản, ta sẽ tạo project mới sử dụng cấu trúc thư mục có sẵn của project reference_nic. Thực hiện lệnh sau: cp -r ~/netfpga/projects/reference_nic tutorial2
Do trong reference_nic không có thư mục src nên ta cần tạo thêm thư mục src trong tutorial2 mkdir ~/netfpga/projects/tutorial2/src
Bước 2: Copy các template module vào project.
Copy các file nf2_top.v, nf2_core.v, nf2_reg_grp.v vào thư mục src.
Copy file nf2_top.ucf vào thư mục synch.
Bước 3: Thiết lập biến môi trường sudo ~/netfpga/lib/scripts/user_account_setup/user_account_setup.pl
Bước 4: Chỉnh sửa các file cần thiết File nf2_core.v trong thư viện có chứa những module không cần thiết như MAC rx and tx queues, CPU Queues, SRAM CONTROLLERS, DDR test, User data path, NetFPGA DMA controller. Template đã loại bỏ những module này ra khỏi file nf2_core.v, và chỉnh sửa file
nf2_top.ucf cho phù hợp. Chèn code sau vào file nf2_core.v, AND_GATE vào project.
bên dưới “ ADD YOUR CODE HERE” để thêm module
wire wire wire
in_1; in_2; out;
AND_GATE and_2_input( .in_1(in_1), .in_2(in_2), .out(out) ); assign in_1 = assign in_2 = assign out =
cpci_debug_data[0]; cpci_debug_data[1]; debug_led;
Việc gán chân cho các module sẽ được thực hiện trong file nf2_top.ucf. Một số chú ý:
in_1 được gán cho chân T2 (cpci_debug_data[0]),
in_2 được gán cho chân P2(cpci_debug_data[1]),
out được gán cho chân AL5 (debug_led).
Có thể mở file nf2_top.ucf để quan sát thêm, chú ý các dòng:
2.
NET "cpci_debug_data<0>"
LOC = "T2"
| IOSTANDARD = LVCMOS25 ;
NET "cpci_debug_data<1>"
LOC = "P2"
| IOSTANDARD = LVCMOS25 ;
NET "debug_led"
LOC = "AL5"
| IOSTANDARD = LVCMOS25 ;
Biên dịch và n ạp lên board NetFPGA.
Bước 1: Biên dịch chương trình. Cài đặt biến môi trường cho quá trình biên dịch sudo source /opt/Xilinx/10.1/ISE/settings32.sh
Thực hiện biên dịch thiết kế. cd ~/netfpga/projects/tutorial2/synth sudo make
Bước 2: Nạp bit file xuông board NetFPGA. cpci_reprogram.pl –all nf_download –i nf2c0 ~/netfpga/projects/tutorial2/synth/nf2_top_par.bit
Bước 3: Kiểm tra thiết kế
IV. 1.
Bài tập
Phân tích cấu trúc project, xác định: Những module nào được tái sử dụng, và những module nào được tạo mới.
Giao tiếp dữ liệu vớ i board NetFPGA
Bài 3 M ụ c tiêu:
Kết thúc bài thực hành này các bạn có thể:
I.
Hiểu được các sử lý vùng nhớ của NetFPGA Platform. Công dụng và cấu trúc module nf2_reg_grp. Đọc ghi dữ liệu lên board, vận dụng để kiểm tra thiết kế của người dùng.
Giớ i thiệu Module nf2_reg_grp. Module nf2_reg_grp được cung cấp sẵn để có thể giao tiếp đọc, ghi dữ liệu xuống vùng nhớ
của board NetFPGA. Module nf2_grep_grp nằm trong file nf2_reg_grp.v , có thể tìm thấy file này trong thư mục ~\ netfpga\lib\verilog\core\nf2\reference_core\src hoặc template đi kèm với bài thực hành này. Các vùng nhớ được định nghĩa:
Vùng core: o CORE_TAG_ADDR = 25b'0_00xxxxxx_xxxxxxxx_xxxxxxxx Vùng SRAM: o SRAM_TAG_ADDR = 25b'0_01xxxxxx_xxxxxxxx_xxxxxxxx Vùng User Data Path: o UDP_TAG_ADDR = 25b'0_1xxxxxxx_xxxxxxxx_xxxxxxxx Vùng DRAM: o DRAM_TAG_ADDR = 25b'1_xxxxxxxx_xxxxxxxx_xxxxxxxx
Để đơn giản, trong bài thực hành này chúng ta chỉ xét vùng CORE _TAG_ADDR, các vùng khác cũng tương tự. Chú ý: Khi dùng vùng nhớ CORE _TAG_ADDRESS có thể sẽ gây ra warning do trùng với vùng mô tả các ID của hệ thống . Sau bài học người dùng sẽ thấy những warning đó là gì.
Lệnh giao tiếp từ terminal:
Ghi xuống board: o regwrite < –i interface>
o Ví dụ: regwrite –i nf2c0 0x00c00000 0x0000cafe Ý nghĩa: ghi xuống board, địa chỉ 0x00c0 0000, giá trị 0x0000cafe o Ghi chú: mỗi board có 4 interface, nếu 2 board cùng gắn lên máy thì các
interface nf2c0 đến nf2c3 là của board 0; nf2c4 đến nf2c4 là của board 1. Đọc từ board lên: o regread < –i interface> o Ví dụ: regread –i nf2c0 0x00c00000
Ý nghĩa: đọc từ board, giá trị của ô nhớ có địa chỉ 0x00 c00000 Nếu ta đã thực hiện Ví dụ 1 thì giá trị trả về hiện lên màn hình của Ví dụ 2 sẽ là 0x0000cafe
Để sử dụng được những lệnh này, ta phải thực hiện các bước bên dưới. Sử dụng vùng nhớ CORE: Ta cần quan tâm những đoạn code sau trong file nf2_reg_grp.v:
Hình 1: Code khai báo biến vùng nhớ CORE
Hình 2: Code phần CORE
Giải thích một số tín hiệu được dùng:
core_reg_req: o cờ cho biết có request yêu cầu đọc hoặc ghi core_reg_rd_wr_L: o cờ cho biết request là đọc(0) hay ghi(1) core_reg_addr: o address của cùng nhớ cần truy cập core_reg_wr_data: o giá trị cần ghi xuống core_reg_ack: o tín hiệu ack khi đọc vùng nhớ từ board lên core_reg_rd_data: o giá trị của đọc lên được từ vùng nhớ của board
Ví dụ 1:
regwrite – i nf2c0 0x00c00000 0x0000cafe
Khi đó: = 1’b1 = 1’b1
core_reg_req
core_reg_rd_wr_L
core_reg_addr:
core_reg_wr_data
= 0x0000cafe
core_reg_ack:
không quan tâm
core_reg_rd_data:
không quan tâm
= 0x00c00000
Ví dụ 2:
regread – i nf2c0 0x00c00000
Khi đó:
core_reg_req
core_reg_rd_wr_L
core_reg_addr:
core_reg_wr_data
core_reg_ack:
= 1’b1 = 1’b0
= 0x00c00000 không quan tâm
cần set lên 1’b1 core_reg_rd_data = giá trị cần trả về
II.
Hiện thự c module giao ti ếp.
1.
Viết chương trình module giao tiếp:
Tạo file cpci_ core _interface.v với nội dung như sau:
Hình 3: Module cpci_core_interface
2.
Tạo Project mớ i
Bước 1: Tạo cấu trúc thư mục. Thực hiện giống như đã học ở bài 2
Copy thư mục reference_nic và đổi thành tên tutorial3. Trong thư mục tutorial3, sau đó copy vào src các file: o nf2_top.v đã được cung cấp sẵn (template). o nf2_core.v đã được cung cấp sẵn (template). o nf2_reg_grp.v đã được cung cấp sẵn (template).
o cpci_core_interface.v như hướng dẫn ở trên. Trong thư mục tutorial3, copy vào thư mục synth file o nf2_top.ucf đã được cung cấp sẵn.
Bước 2: Chỉnh sửa file nf2_core.v, thêm code vào bên dưới “ ADD YOUR CODE HERE ”, như sau:
Khai báo biến cho module cpci_core_interface:
Hình 4: Khai báo
các biến cho module cpci_core_interface
Truyền các biến vào module nf2_reg_grp:
Hình 5: Truyền các biến vào module nf2_reg_grp
Truyền các biến vào module cpci_core_interface:
Hình 6: Truyền các biến
vào module cpci_core_interface
3.
Biên dịch và n ạp lên board NetFPGA.
Bước 1: Biên dịch chương trình. Cài đặt biến môi trường cho quá trình biên dịch sudo source /opt/Xilinx/10.1/ISE/settings32.sh
Thực hiện biên dịch thiết kế. cd ~/netfpga/projects/tutorial2/synth sudo make
Bước 2: Nạp bit file xuông board NetFPGA. cpci_reprogram.pl –all nf_download –i nf2c0 ~/netfpga/projects/tutorial2/synth/nf2_top_par.bit
Bước 3: Kiểm tra thiết kế Tại cửa sổ terminal: Đọc lên giá trị ở địa chỉ 25’ h030_0001 xem có bằng 32’hcafe1111 hay không
địa chỉ 25h030_0001 khi nhập từ của sổ terminal sẽ bị dịch phải 2 bit. Do đó, ta phải dịch trái 2 bit giá trị 25h030_0001 rồi mới khi nhậ p, thành 0x00c00004. Chú ý:
regread –i nf2c0 0x00c00004
Ghi xuống một giá trị cho biến WR_DATA, giả sử 0x00002222 regwrite –i nf2c0 0x00c00000 0x00002222
Đọc lên lại giá trị biến WR_DATA xem có phải 0x00002222 không regread –i nf2c0 0x00c00000
III.
Kết hợp module ngườ i dung và module đọc ghi dữ liệu.
1.
Chuẩn bị source code:
Bước 1: Chuẩn bị module người dung. Ở đây ta sử dụng lại module AND_GATE ở bài 2. Bước 2: Hiện thực Module giao tiếp Sử dụng module cpci_core_interface.v có chỉnh sửa cho phù hợp.
Do module
như sau:
AND_GATE có 2 input và 1 output nên ta cần sửa file cpci_core_interface.v
Hình 7: Module cpci_core_interface viết lại
2.
Tạo project m ớ i
Bước 1: Tạo cấu trúc thư mục. Thực hiện giống như đã học ở bài 2
Copy thư mục reference_nic và đổi thành tên tutorial4. Trong thư mục tutorial4, sau đó copy vào src các file: o nf2_top.v đã được cung cấp sẵn (template). o nf2_core.v đã được cung cấp sẵn (template). o nf2_reg_grp.v đã được cung cấp sẵn (template). o cpci_core_interface.v như hướng dẫn ở trên. Trong thư mục tutorial4, copy vào thư mục synth file o nf2_top.ucf đã được cung cấp sẵn.
Bước 2: Chỉnh sửa file nf2_core.v, thêm code vào bên dưới “ ADD YOUR CODE HERE ”, như sau:
Khai báo biến cho module cpci_core_interface:
Hình 8: Khai báo
các biến cho module cpci_core_interface
Truyền các biến vào module nf2_reg_grp:
Hình 9: Truyền các biến vào module nf2_reg_grp
Thêm module AND_GATE, cpci_core _interface và các biến cần thiết:
Hình 10: AND_GATE, cpci_core_interface trong nf2_core.v
3.
Biên dịch và n ạp lên board NetFPGA.
Bước 1: Biên dịch chương trình. Cài đặt biến môi trường cho quá trình biên dịch sudo source /opt/Xilinx/10.1/ISE/settings32.sh
Thực hiện biên dịch thiết kế. cd ~/netfpga/projects/tutorial2/synth sudo make
Bước 2: Nạp bit file xuông board NetFPGA. cpci_reprogram.pl –all nf_download –i nf2c0 ~/netfpga/projects/tutorial2/synth/nf2_top_par.bit
Bước 3: Kiểm tra thiết kế. Tại cửa sổ terminal:
Đọc lên giá trị tại địa chỉ 25’h030_0004 xem có phải 0xcafe2222 hay không regread –i nf2c0 0x00c0000c
Ghi xuống một giá trị cho biến IN_1, giả sử 1 regwrite –i nf2c0 0x00c00000 1
Ghi xuống một giá trị cho biến IN_2, giả sử 1 regwrite –i nf2c0 0x00c00004 1
Đọc lên lại giá trị biến OUT xem có phải 1 không regread –i nf2c0 0x00c00008
Chú ý:
Việc đọc ghi các thanh ghi chỉ có tác dụng test module người dùng hiện thực xem có đúng không. Ở đây ta truyền input xuống module của mình bằng cách ghi xuống thanh ghi các biến IN_1, IN_2, sau xem output bằng cách đọc giá trị thanh ghi OUT. IV. 1.
Bài tập:
Hiện thực bộ chuyển đổi Binary to BCD với yêu cầu như sau:
Interface: o Input: 12 bit input số binary. 1 bit Tín hiệu enable. o Output: 16 bit số BCD 4 chữ số.
Function: o Khi enable cho phép c onvert số binary 12 bit sang số BCD 4 chữ số.
Sử dụng module đọc ghi thanh ghi và regread, regwrite để kiểm tra chức năng. 2.
Hiện thực module truy xuất ram trên NetFPGA với yêu cầu như sau Sử dụng blockRam: o Độ rộng: 32 bit. o Độ sâu: 512.
Function: o Hỗ trợ cả chức ăng đọc và ghi dữ liệu.
Sử dụng module đọc ghi thanh ghi và regread, regwrite để kiểm tra chức năng.
Hint: Có thể dung ISE đế sinh ra file đặc tả cấu trúc Ram (.xco).