Giới thiệu
Giới thiệu thực hành trên board FPGA Xilinx Arty7 35T ( giá khoảng 200$) và khảo sát hoạt động của lõi vi xử lý sử dụng kiến trúc tập lệnh mã nguồn mở RISCV ( vi xử lý FE300 RISCV của SiFive). Project này sẽ thực hiện kết nối cổng JTAG trên Arty 7 với Olimex ARM-USB-TINY-H Debugger, cài đặt phần mềm Vivado, biên dịch FE310 bitstream để nạp vào Arty 7, lập trình một số ứng dụng cơ bản về GPIO lên vi xử lý SiFive FE310.
Yêu cầu về phần cứng
– Board mạch Artix-7 35T Arty FPGA Evaluation Kit
– Olimex ARM-USB-TINY-H Debugger |
![]() |
Kết nối phần cứng
Sơ đồ chân Port JD trên Arty 7 | Sơ đồ chân trên Olimex Jtag |
![]() |
![]() |
Sơ đồ đấu nối
Phần mềm:
Tất cả các phần mềm thực hiện trong Project này được cài đặt trên Ubuntu 16.04 64bit
Phần mềm Vivado của Xilinx ( Trong project này dùng bản 2016.2)
– Có thể cài đặt phiên bản Webpack ( bản miễn phí)
– Trong cài đặt cần chọn Artix-7
Cài đặt các gói phần mềm cần thiết
– Di chuyển đến thư mục Home, tạo thư mục RISCV để chứa các file cần thiết cho Project.
mkdir /home/user_name/riscv
– Tải các board files cho Vivado. Sau khi tải xong có thể copy trực tiếp đến thư mục chứa Board file của Vivado.
1 2 |
git clone https://github.com/Digilent/vivado-boards cp -rv ./vivado-boards/new/board_files/* /opt/Digilent/Xilinx/Vivado/2017.1/data/boards/board_files/ |
– Cài đặt các Toolchain build sẵn cho RISCV, trong đó có GNU Embedded và Open OCD
1 2 |
wget -c https://static.dev.sifive.com/dev-tools/riscv64-unknown-elf-gcc-8.1.0-2019.01.0-x86_64-linux-ubuntu14.tar.gz wget -c https://static.dev.sifive.com/dev-tools/riscv-openocd-0.10.0-2018.12.0-x86_64-linux-ubuntu14.tar.gz |
– Giải nén các file vừa download
1 2 |
tar xf riscv64-unknown-elf-gcc-8.1.0-2019.01.0-x86_64-linux-ubuntu14.tar.gz tar xf riscv-openocd-0.10.0-2018.12.0-x86_64-linux-ubuntu14.tar.gz |
– Sửa lại tên các folder mới giải nén thành riscv64-unknow-elf và riscv-openocd (mục đích cho ngắn gọn)
– Cài đặt gói phần mềm sau để thực hiện chạy OPENOCD
sudo apt install libftdi1-dev
– Kiểm tra xem các công cụ vừa tải là GCC và OPENOCD đã hoạt động chưa.
– Cài đặt udev rule cho Olimex JTAG
+ Tạo file 99-openocd.rules, thêm các dòng sau
1 2 |
SUBSYSTEM=="tty", ATTRS{idVendor}=="15ba",ATTRS{idProduct}=="002a", MODE="664", GROUP="plugdev" SUBSYSTEM=="usb", ATTR{idVendor}=="15ba",ATTR{idProduct}=="002a", MODE="664", GROUP="plugdev" |
– Kiểm tra các cổng USB Olimex và USB của Xilinx:
ls -lha /dev/ttyUSB*
– Tải SiFive Freedom Respository
git clone –recursive https://github.com/sifive/freedom
Di chuyển vào freedom
cd freedom/
Biên dịch file mcs từ freedom cho Arty 7
– Cài đặt các biến môi trường cần thiết cho việc biên dịch
1 2 |
<span class="TextRun SCXO69629343 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXO69629343 BCX0">export RISCV=/home/</span><span class="SpellingError SCXO69629343 BCX0">ngoctuan</span><span class="NormalTextRun SCXO69629343 BCX0">/</span><span class="SpellingError SCXO69629343 BCX0">riscv</span><span class="NormalTextRun SCXO69629343 BCX0">/</span></span><span class="TextRun SCXO69629343 BCX0" lang="EN-US" xml:lang="EN-US" data-contrast="auto"><span class="NormalTextRun SCXO69629343 BCX0">riscv64-elf-tc</span></span><span class="EOP SCXO69629343 BCX0"> </span> <span class="NormalTextRun SCXO90643859 BCX0">export PATH=/opt/Xilinx/</span><span class="SpellingError SCXO90643859 BCX0">Vivado</span><span class="NormalTextRun SCXO90643859 BCX0">/2017.1/bin:$PATH</span> |
– Cài đặt một số phần mềm trước khi biên dịch file mcs.
1 2 3 |
sudo apt-get install default-jre sudo apt-get install default-jdk sudo apt install device-tree-compiler (fix error: dtc: Command not found) |
– Thực hiện lệnh
1 2 3 4 |
make BOARD=arty -f Makefile.e300artydevkit clean make BOARD=arty -f Makefile.e300artydevkit verilog source /opt/Xilinx/Vivado/2016.2/settings64.sh make BOARD=arty -f Makefile.e300artydevkit mcs |
– Thiết lập Vivado, nạp file mcs cho Arty 7
Kết nối Olimex USB với Arty 7, kết nối Arty 7 với máy tính chạy Vivado qua cáp micro USB
Thực hiện theo thứ tự sau:
Flow → Open Hardware Manager
- Open Target → Auto Connect
Chuột phải vào xc7a35t, chọn Add Cofirguration Memory Device, chọn như hình dưới
Load *.mcs file:
/home/user_name/riscv/freedom/builds/e300artydevkit/obj/E300ArtyDevKitFPGAChip.mcs
– Nhấn nút Prog trên Arty để Reload lại file cấu hình vào Artix-7
Tải các file SiFive Freedom E SDK, biên dịch để lập trình cho lõi RISCV trên Arty-7
– Di chuyển về folder riscv
git clone –recursive https://github.com/sifive/freedom-e-sdk.git
cd freedom-e-sdk/
– Thiết lập các biến môi trường cần thiết, chú ý không chạy ở quyền sudo
1 2 |
export RISCV_OPENOCD_PATH=/home/ngoctuan/riscv/riscv-openocd export RISCV_PATH=/home/ngoctuan/riscv/riscv64-elf-tc |
– Biên dịch các chương trình c để test GPIO
1 2 3 |
make BSP=metal PROGRAM=hello TARGET=freedom-e310-arty upload make BSP=metal PROGRAM=hello TARGET=freedom-e310-arty software make BSP=metal PROGRAM=hello TARGET=freedom-e310-arty clean |
Thực hiện cài phần mềm giao tiếp Serial tio: https://tio.github.io/
Thực hiện lệnh sau quan sát kết quả
$ tio /dev/ttyUSB1 -b57600
Nguồn tham khảo: https://www.digikey.com/eewiki/display/LOGIC/Digilent+Arty+A7+with+Xilinx+Artix-7+Implementing+SiFive+FE310+RISC-V#DigilentArtyA7withXilinxArtix-7ImplementingSiFiveFE310RISC-V-DownloadtheSiFiveFreedomrepository