更多分享内容可访问我的个人博客
本文介绍一块 FPGA 开发板——Spartan Edge Accelerator Board。也称Spartan-7 FPGA开发板或SEA-S7。
选择与不选择理由
优点
- 便宜。整板价格在200-300元之间,且可以不需要下载器。
- 性能好。比起几百块级别的入门板性价比相当高。规格参数可以翻阅官方的文档。英文 中文
- 可以使用vivado。vivado不兼容Spartan6(常见的入门板)但兼容Spartan7。
- arduino和FPGA的结合体,看起来像低配版的FPGA ZYNQ(arm + FPGA)。
- 提供用封装好的arduino接口。方便arduino用户入门。
缺点
- 没有详细的文档,更没有视频教程。绝对不适合没有任何经验的FPGA小白以及自学能力不够强的新手。
- 比一般的以教学为目的的入门板少了很多外设。
Hello World
下面以一个blink项目为例,介绍该开发板的使用。
官方的文档上有入门教程,不过好久没维护了,一些链接也没了,有兴趣折腾的可以搞一下。
硬件准备
- 开发板。
- 一根Type-C数据线。
- [可选] Platform Cable USB II (JTAG接口的FPGA下载器)。
- 一张SD卡(外加读卡器)。
软件准备
- arduino IDE。
- vivado(免费的webpack版也支持Spartan-7)。
- CP2102 USB驱动,可以前往这里下载。
软硬件设置
首先明确是要将开发板当作独立的FPGA使用,所以arduino的部分只是辅助。
硬件
首先找到板子上唯一一个跳线帽。这里标有PWR_MODE,可以设置电源模式。如果将该开发板作为arduino的扩展板使用,可以通过设置PWR_MODE为off来隔离系统电源,同时给两块板供电。现在只是作为独立的FPGA使用,暂时不用管。
然后找到跳线帽旁边的一排拨码开关。新买的板子应该在上面有一层塑料膜封着,将其揭开。将Slave下的拨码开关向上推,也就是推向Slave。这里是设置向FPGA写入比特流的方式。当前设置为arduino部分将SD卡中的比特流文件写入FPGA。这样就不需要下载器。
将SD卡格式化为FAT16或FAT32文件系统。
软件
启动arduino IDE。在文件-首选项-附加开发板管理器网址
处设置https://dl.espressif.com/dl/package_esp32_index.json
。
在工具-开发板-开发板管理器
中找到 esp32 并下载安装。
安装完成后,在工具-开发板
中选择DOIT ESP32 DEVKIT V1
。
现在测试一下是否可以与开发板正常通信。
用Type-C线连接开发板与电脑。可以使用设备管理器(windows)或者(lsusb
linux)查看是否连接上。也可以在arduino IDE中查看工具-端口
,看是否连接上。
注意开发板应上电(检查电源开关),驱动程序应安装,Type-C线应可传数据。
接下来向arduino部分中烧录向FPGA写入比特流的程序。
下载已经写好的库。在arduino IDE中通过项目-加载库-添加.ZIP库
将库导入。
使用文件-打开
打开01LoadDefaultBitstream.ino
文件。这就是需要的程序文件。
接下来,将工具-Upload Speed
设置为115200。使用项目-上传
下载程序到开发板。
至此,arduino辅助下载FPGA比特流文件的部分已经完成。
Blink
下载官方例程库。找到其中的Hello-World/FPGA/Verilog/HelloWorld-Verilog
。使用vivado打开该项目。修改以下文件内容。
Hello-World.v
`timescale 1ns / 1ps
module Hello_World(
input clk,
output reg signal_2
);
reg [32:0] m;
always @(posedge clk) begin
m = m + 1;
if (m == 100000000) begin
signal_2 = signal_2 == 1 ? 0 : 1;
m = 0;
end
end
endmodule
system.xdc
set_property -dict {PACKAGE_PIN H4 IOSTANDARD LVCMOS33} [get_ports clk]
create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports {clk}];
set_property IOSTANDARD LVCMOS33 [get_ports {signal_2}]
set_property PACKAGE_PIN J1 [get_ports {signal_2}]
set_property PULLDOWN true [get_ports {signal_2}]
直接使用generate bitstream
生成比特流文件。将位于HelloWorld-Verilog.runs\impl_1
下的比特流文件Hello_World.bit
复制到SD卡根目录下的overlay
目录下,并改名为default.bit
。
断开开发板与电脑的连接,将SD卡插入开发板,再连接开发板与电脑。
不出意外的话就可以看到位于右上角的LED灯闪烁。
此后如果要写入新的比特流文件,还是需要按照上述操作,将文件放到SD卡中然后改名。
这种写入方式非常麻烦。熟悉arduino的用户可能可以尝试通过串行通信直接把电脑上的文件传给FPGA。
鉴于Platform Cable USB II
的价格并不高(便宜的大概100多)。建议嫌麻烦的还是通过Platform Cable USB II
连接开发板右上角的JTAG接口直接用vivado下载比特流文件(注意要先把前面的Slave设置回来)。
总结
初步使用之后个人感觉这块板子还是挺不错的,用来玩一玩谐波分析和图像识别还是挺适合的。