Upload
vortex2910899547857
View
121
Download
6
Embed Size (px)
DESCRIPTION
NetFPGA Tutorial
Citation preview
NetFPGA Project TUTORIAL
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
I. Cấu trúc project trên NetFPGA Platform ......................................................................... 5
1. Cấu trúc cây thư mục NetFPGA project .................................................................. 5
2. Cấu trúc của một project ........................................................................................... 5
II. Thực hành với project mẫu trên NetFPGA. .................................................................. 6
1. Reference NIC .......................................................................................................... 6
2. Biên dịch và nạp lên board ........................................................................................ 6
3. Kiểm tra thiết kế: ...................................................................................................... 6
III. Bài tập: .......................................................................................................................... 9
Bài 2 Xây dựng project mới trên NetFPGA ..................................................................... 10
Mục tiêu: ............................................................................................................................... 10
I. Quy trình để triển khai một project trên NetFPGA platform ......................................... 10
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. .................................................................................. 11
2. Biên dịch và nạp lên board NetFPGA. .................................................................... 12
IV. Bài tập ......................................................................................................................... 13
Bài 3 Giao tiếp dữ liệu với board NetFPGA .................................................................... 14
Mục tiêu: ............................................................................................................................... 14
I. Giới thiệu Module nf2_reg_grp. .................................................................................... 14
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 15
Hình 5: Code phần CORE 15
Hình 6: Module cpci_core_interface 17
Hình 7: Khai báo các biến cho module cpci_core_interface 18
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 18
Hình 10: Module cpci_core_interface viết lại 21
Hình 11: Khai báo các biến cho module cpci_core_interface 22
Hình 12: Truyền các biến vào module nf2_reg_grp 22
Hình 13: AND_GATE, cpci_core_interface trong nf2_core.v 23
Bài 1 Giới thiệu cấu trúc project trong NetFPGA
Platform
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 project tham khảo có sẵn:
reference_nic: project tham khảo chức năng của card 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 phân
tích các gói tin của NetFPGA.
2. Cấu trúc của một project
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
Thực hiện biên dịch thiết kế.
Nạp lên board
or
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:
Tiếp theo, cần phải compile phần mềm. Thực hiện lệnh sau:
/sbin/ifconfig nf2cX x.x.x.x
~/netfpga/lib/C/download/nf_download ~/netfpga/bitfiles/reference_nic.bit
cpci_reprogram.pl –all
nf_download –i nf2c0 ~/netfpga/projects/reference_nic/synth/nf2_top_par.bit
cd ~/netfpga/projects/reference_nic/synth
sudo make
sudo source /opt/Xilinx/10.1/ISE/settings32.sh
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:
Kết quả sẽ có dạng như sau:
b) 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:
Found net device: nf2c0
Num pkts received on port 0: 0
Num pkts dropped (rx queue 0 full): 0
Num pkts dropped (bad fcs q 0): 0
Num bytes received on port 0: 0
Num pkts sent from port 0: 0
Num bytes sent from port 0: 0
Num pkts received on port 1: 0
Num pkts dropped (rx queue 1 full): 0
Num pkts dropped (bad fcs q 1): 0
Num bytes received on port 1: 0
Num pkts sent from port 1: 0
Num bytes sent from port 1: 0
Num pkts received on port 2: 0
Num pkts dropped (rx queue 2 full): 0
Num pkts dropped (bad fcs q 2): 0
Num bytes received on port 2: 0
Num pkts sent from port 2: 0
Num bytes sent from port 2: 0
Num pkts received on port 3: 0
Num pkts dropped (rx queue 3 full): 0
Num pkts dropped (bad fcs q 3): 0
Num bytes received on port 3: 0
Num pkts sent from port 3: 0
Num bytes sent from port 3: 0
./counterdump
cd ~/netfpga/lib/C/nic
make
Output sẽ có dạng nhưu sau:
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:
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.
Kết quả sẽ có dạng như sau:
~/netfpga/lib/C/nic/counterdump
cd ~/netfpga/lib/C/tools/send_pkts
sudo ./send_pkts -i nf2c0 -s 10 -l 100
gcc `libnet-config --defines --cflags` -O2 -o send_pkts send_pkts.c
`libnet-config --libs` -L/usr/lib-lnet -lpcap --static
cd ~/netfpga/lib/C/tools/send_pkts
make
III. Bài tập:
1. 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
http://netfpga.org/foswiki/bin/view/NetFPGA/OneGig/Guide
Found net device: nf2c0
Num pkts received on port 0: 0
Num pkts dropped (rx queue 0 full): 0
Num pkts dropped (bad fcs q 0): 0
Num bytes received on port 0: 0
Num pkts sent from port 0: 10
Num bytes sent from port 0: 1000
Num pkts received on port 1: 0
Num pkts dropped (rx queue 1 full): 0
Num pkts dropped (bad fcs q 1): 0
Num bytes received on port 1: 0
Num pkts sent from port 1: 0
Num bytes sent from port 1: 0
Num pkts received on port 2: 0
Num pkts dropped (rx queue 2 full): 0
Num pkts dropped (bad fcs q 2): 0
Num bytes received on port 2: 0
Num pkts sent from port 2: 0
Num bytes sent from port 2: 0
Num pkts received on port 3: 0
Num pkts dropped (rx queue 3 full): 0
Num pkts dropped (bad fcs q 3): 0
Num bytes received on port 3: 0
Num pkts sent from port 3: 0
Num bytes sent from port 3: 0
Bài 2 Xây dựng project mới trên NetFPGA
Mục tiêu:
Qua bài thực hành này bạn sẽ nắm được các vấn đề sau:
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.
I. 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:
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
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
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, bên dưới “ADD YOUR CODE HERE” để thêm module
AND_GATE vào project.
sudo ~/netfpga/lib/scripts/user_account_setup/user_account_setup.pl
mkdir ~/netfpga/projects/tutorial2/src
cp -r ~/netfpga/projects/reference_nic tutorial2
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. 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
Thực hiện biên dịch thiết kế.
Bước 2: Nạp bit file xuông board NetFPGA.
Bước 3: Kiểm tra thiết kế
cpci_reprogram.pl –all
nf_download –i nf2c0 ~/netfpga/projects/tutorial2/synth/nf2_top_par.bit
cd ~/netfpga/projects/tutorial2/synth
sudo make
sudo source /opt/Xilinx/10.1/ISE/settings32.sh
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 ;
wire in_1;
wire in_2;
wire out;
AND_GATE and_2_input(
.in_1(in_1),
.in_2(in_2),
.out(out)
);
assign in_1 = cpci_debug_data[0];
assign in_2 = cpci_debug_data[1];
assign out = debug_led;
IV. Bài tập
1. 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.
Bài 3 Giao tiếp dữ liệu với board NetFPGA
Mục tiêu:
Kết thúc bài thực hành này các bạn có thể:
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.
I. 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> <address> <value>
o Ví dụ:
regwrite –i nf2c0 0x00c00000 0x0000cafe
Ý nghĩa: ghi xuống board, địa chỉ 0x00c00000, 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> <address>
o Ví dụ:
regread –i nf2c0 0x00c00000
Ý nghĩa: đọc từ board, giá trị của ô nhớ có địa chỉ 0x00c00000
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 đó:
core_reg_req = 1’b1
core_reg_rd_wr_L = 1’b1
core_reg_addr: = 0x00c00000
core_reg_wr_data = 0x0000cafe
core_reg_ack: không quan tâm
core_reg_rd_data: không quan tâm
Ví dụ 2:
regread –i nf2c0 0x00c00000
Khi đó:
core_reg_req = 1’b1
core_reg_rd_wr_L = 1’b0
core_reg_addr: = 0x00c00000
core_reg_wr_data không quan tâm
core_reg_ack: 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
Thực hiện biên dịch thiết kế.
Bước 2: Nạp bit file xuông board NetFPGA.
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
Chú ý: đị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.
Ghi xuống một giá trị cho biến WR_DATA, giả sử 0x00002222
Đọc lên lại giá trị biến WR_DATA xem có phải 0x00002222 không
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.
regread –i nf2c0 0x00c00000
regwrite –i nf2c0 0x00c00000 0x00002222
regread –i nf2c0 0x00c00004
cpci_reprogram.pl –all
nf_download –i nf2c0 ~/netfpga/projects/tutorial2/synth/nf2_top_par.bit
cd ~/netfpga/projects/tutorial2/synth
sudo make
sudo source /opt/Xilinx/10.1/ISE/settings32.sh
Do module AND_GATE có 2 input và 1 output nên ta cần sửa file cpci_core_interface.v
như sau:
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
Thực hiện biên dịch thiết kế.
Bước 2: Nạp bit file xuông board NetFPGA.
Bước 3: Kiểm tra thiết kế. Tại cửa sổ terminal:
cpci_reprogram.pl –all
nf_download –i nf2c0 ~/netfpga/projects/tutorial2/synth/nf2_top_par.bit
cd ~/netfpga/projects/tutorial2/synth
sudo make
sudo source /opt/Xilinx/10.1/ISE/settings32.sh
Đọc lên giá trị tại địa chỉ 25’h030_0004 xem có phải 0xcafe2222 hay không
Ghi xuống một giá trị cho biến IN_1, giả sử 1
Ghi xuống một giá trị cho biến IN_2, giả sử 1
Đọc lên lại giá trị biến OUT xem có phải 1 không
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. Bài tập:
1. 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 convert 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.
regread –i nf2c0 0x00c00008
regwrite –i nf2c0 0x00c00004 1
regwrite –i nf2c0 0x00c00000 1
regread –i nf2c0 0x00c0000c
Hint: Có thể dung ISE đế sinh ra file đặc tả cấu trúc Ram (.xco).