更多分享内容可访问我的个人博客

https://www.niuiic.top/

本文介绍一块 FPGA 开发板——Spartan Edge Accelerator Board。也称Spartan-7 FPGA开发板或SEA-S7。

选择与不选择理由

优点

  1. 便宜。整板价格在200-300元之间,且可以不需要下载器。
  2. 性能好。比起几百块级别的入门板性价比相当高。规格参数可以翻阅官方的文档。英文 中文
  3. 可以使用vivado。vivado不兼容Spartan6(常见的入门板)但兼容Spartan7。
  4. arduino和FPGA的结合体,看起来像低配版的FPGA ZYNQ(arm + FPGA)。
  5. 提供用封装好的arduino接口。方便arduino用户入门。

缺点

  1. 没有详细的文档,更没有视频教程。绝对不适合没有任何经验的FPGA小白以及自学能力不够强的新手。
  2. 比一般的以教学为目的的入门板少了很多外设。

Hello World

下面以一个blink项目为例,介绍该开发板的使用。

官方的文档上有入门教程,不过好久没维护了,一些链接也没了,有兴趣折腾的可以搞一下。

硬件准备

  1. 开发板。
  2. 一根Type-C数据线。
  3. [可选] Platform Cable USB II (JTAG接口的FPGA下载器)。
  4. 一张SD卡(外加读卡器)。

软件准备

  1. arduino IDE。
  2. vivado(免费的webpack版也支持Spartan-7)。
  3. 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 / 1psmodule Hello_World(input clk,output reg signal_2);reg [32:0] m;always @(posedge clk) beginm = m + 1;if (m == 100000000) beginsignal_2 = signal_2 == 1 ? 0 : 1;m = 0;endend
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设置回来)。

总结

初步使用之后个人感觉这块板子还是挺不错的,用来玩一玩谐波分析和图像识别还是挺适合的。

PCB可以从官方文档处下载。有问题可以到他们的论坛提问。

Spartan Edge Accelerator Board 入门教程相关推荐

  1. 渐进式Web应用(PWA)入门教程(上)

    最近关于渐进式Web应用有好多讨论,有一些人还在质疑渐进式Web应用是否就是移动端未来. 但在这篇文章中我并不会将渐进式APP和原生的APP进行比较,但有一点是可以肯定的,这两种APP的目标都是使用户 ...

  2. Arduino Yun快速入门教程(大学霸内部资料)

    Arduino Yun快速入门教程(大学霸内部资料) 本资料为国内第一本Arduino Yun教程.详细讲解Arduino Yun的基本结构.开发环境.系统配置,并着力讲解关键功能--Bridge.最 ...

  3. turtlebot3入门教程

    旨在用于教育,研究,产品原型和爱好应用的目的.  TurtleBot3的目标是大幅降低平台的尺寸和价格,而不会牺牲性能,功能和质量.  由于提供了不同可选,如底盘,计算机和传感器,TurtleBot3 ...

  4. ElasticSearch入门教程-索引

    ElasticSearch入门教程-索引 在本节中,我们将向Elasticsearch添加一些索引,映射和数据.此数据将用于本教程中说明的示例中. 创建索引 PUT http://localhost: ...

  5. Sprite Kit 入门教程

    Sprite Kit 入门教程  Ray Wenderlich on September 30, 2013 Tweet 这篇文章还可以在这里找到 英语, 日语 If you're new here, ...

  6. TypeScript超详细入门教程(上)

    TypeScript超详细入门教程(上) 01 开篇词:Hello~TypeScript 01 开篇词:Hello~TypeScript 更新时间:2019-10-30 13:49:46 既然我已经踏 ...

  7. TMS320F280049C 学习笔记10 控制率加速器 Control Law Accelerator (CLA) 入门

    索引 简介 转载[6] 我的浮点心 - CLA简介(上) 什么时候需要用CLA? 什么时候不适合使用CLA? CLA的有什么不足? 翻译[2] CLA受限的C语法编译器 存储器模型 从C28x向CLA ...

  8. TensorFlow 中文资源精选,官方网站,安装教程,入门教程,实战项目,学习路径。

    转载至:http://www.nanjixiong.com/thread-122211-1-1.html Awesome-TensorFlow-Chinese TensorFlow 中文资源全集,学习 ...

  9. 【OpenCV入门教程之十七】OpenCV重映射 SURF特征点检测合辑

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接: http://blog.csdn.net/poem_qianmo/article/details/30974513 作者:毛星云(浅墨) ...

最新文章

  1. 每日一篇——lodash—array——differenceBy
  2. c#实例 让你明白什么是继承
  3. JZOJ 5186. 【NOIP2017提高组模拟6.30】tty's home
  4. Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】
  5. linux window nginx性能,Nginx负载均衡搭建(Window与Linux)
  6. 自学it18大数据笔记-第三阶段Scala-day06——会持续更新……
  7. 地表反射率影响因素_【热岛强度可影响城市夏季降水落区】
  8. 华为,百度豪投,这类程序员要再次上榜了!
  9. C#中结构体排序方法(Array.sort() + ICompare)
  10. ios 横竖屏切换总结
  11. 我发现有的人就活该他赚钱,他们的脑子就是个聚宝盆
  12. English trip M1 - AC9 Nosey people 爱管闲事的人 Teacher:Solo
  13. css中用#id.class的形式定义样式,为什么这样用,不直接写成.class.代码如下:#skin_0.selected{}这种的...
  14. linux安全加固项目
  15. Python3 计算空气质量指数AQI
  16. Kubernetes(K8S)各种错误及解决方法
  17. 遭遇职场官斗,外派回来岗位被占!
  18. 题解 2360: [信息学奥赛一本通-T1449]魔板
  19. 分布式中间件──断路器
  20. A项目之三:价格与销量分布直方图

热门文章

  1. Seam下载文件的问题
  2. android qq安装包压缩包,文件解压缩
  3. 省、市、区 三级联动菜单(附数据库)
  4. android播放蓝光播放器,安卓播放器真的拥有完美的蓝光原盘菜单导航吗?我来测试下...
  5. 两种模式的数据服务解决方案
  6. [网易云课堂]Linux内核分析(九)—— 课程总结
  7. web网页设计与开发:简单的学生网页作业源码 基于html css javascript简单的个人博客网页制作期末作业
  8. 虚拟化存储的方法有哪几种
  9. 一篇文章解决springboot+thymeleaf多语言国际化
  10. php mysql 表情录入_Emoji表情符号录入MySQL数据库报错的解决方案