FPGA即现场可编程门阵列,属于可编程逻辑器件的一种。随着工艺的进步和EDA设计工具的不断发展,FPGA的门槛(学习成本和价格成本)也越来越低,目前已经成为实现数字系统的主流平台之一。尤其是很多厂商都在开发便携式、低成本的拇指型最小系统式开发平台,好用不贵,让越来越多学生/工程师进入到可编程逻辑的世界中来。
这样的平台,比较有代表性的莫过于爱板网评测过的几款小脚丫FPGA开发板,比如
基于Lattice FPGA 的STEP-MXO2;
或者是
基于Altera(Intel)FPGA 的STEP-MAX10。
本文原文地址: https://www.eeboard.com/evaluation/digilent-cmod-a7-fpga/
而今天爱板网同样要给大家推荐一款拇指型FPGA开发平台,但是,是基于另一个全球最大的FPGA厂商Xilinx的开发平台,板子为Cmod A7,由Digilent设计制造。
Cmod A7跟小脚丫FPGA的版型类似,最大的不同还是基于Xilinx Artix-7 FPGA,当然,在外设上与小脚丫FPGA相比,各有长短。
比如CMOD A7没有搭载数码管,没有拨码开关,RGB LED/LED/按键都要比小脚丫FPGA上的少,但是CMOD A7额外搭载了SRAM,Quad-SPI Flash,扩展的IO口也比小脚丫FPGA多。
不过整体来看,CMOD A7同样是最小系统原型板,只不过是基于Xilinx Artix-7 FPGA的平台,这算与小脚丫FPGA开发板最大的不同,CMOD A7板子具体样子如下图所示。
在Cmod A7板子上,有44个可以作为数字FPGA I/O的引脚,用户能够非常方便地将可编程逻辑设计直连面包板电路,同时板载USB-JTAG编程电路/USB-UART桥接功能,配合Xilinx Vivado开发工具,可以进行各类数字逻辑电路以及MicroBlaze嵌入式软核处理设计。
CMOD A7开发板特性:
- Xilinx ARTIX-7 35T FPGA
- 512KB SRAM,支持8位总线以及8毫微秒访问时间
- 4MB Quad-SPI Flash
- USB-JTAG编程电路/USB-UART桥接
- USB或外部3.3-5.5V连接DIP pins供电
- 2个LED、1个RGB LED、2个按钮
- 48引脚DIP连接器,带有44个数字I/O以及2个模拟输入(0-3.3V)
- 1个Pmod连接器,带有8个数字I/O
除了此次板子上搭载的Xilinx ARTIX-7 35T FPGA,CMOD A7还有一个Xilinx ARTIX-7 15T 的FPGA版本,两者的唯一区别就是搭载了同系列中不同规格的FPGA型号,两者的区别如下表:
文章中的CMOD A7开发板搭载的FPGA具体型号为ARTIX-7 35T cpg236-1,这是Xilinx ARTIX-7系列中中端的FPGA产品。
Artix-7系列是Xilinx 28nm的FPGA数字开发平台,实现了低成本和低功耗,并且经过优化,可以在设计中实现最佳的性能与功耗结合,另外,Artix-7 器件具有非常显著的特点,集成了AMS、收发器等功能,可以广泛的应用在软件定义无线电、机器视觉照相以及低端无线回传的领域。
上电使用
CMOD A7 开发板使用非常简单方便,一根micro-USB线就能搞定一切,同时可用于供电、下载调试、USB-UART功能,方便工程师开发。
板卡通过MicroUSB接口供电口上电后,可以看到会提示需要安装板载的USB转串口芯片驱动,这款芯片是FTDI F2232系列,非常常见,可能很多工程师的电脑上本身就有这个芯片的驱动,再不然,我们也可以在网上找到驱动,安装后可以看到相应的串口。
波特率设置为9600,8bits,no parity,1 stop bit,复位板卡即能看到串口输出,板子默认程序是一个Memory的测试程序,会输出测试结果,Memory正常工作的测试结果如下。
另外,通过CMOD A7板子上另一个按键可以实现RGB LED的色彩变换。
开发环境
CMOD A7 FPGA开发板可以选用Xilinx官方的EDA设计工具Vivado,最新版本是2017年的,这是一个非常强大的工具,但是有些遗憾的是,要使用其全部的功能,是需要Lincence的,而且完整的安装包也异常的大,20GB多的容量有些吓人。不过目前官方也推出了网页安装包,用这个非常方便,可以最精简的选择你所需要的器件,安装程序的话可以去官网下载。
本文使用的是Vivado 2016.3的版本,曾经下载过的,安装包太大,懒的下载最新的。有一点需要注意的,在安装过程中可以一并选择安装SDK软件。
最精简的安装方式也要20GB的空间。
整个安装过程大概45分钟左右,当然,这个安装时间是依赖你所用的计算机性能。
开发工具准备完毕,下面将使用Vivado IP Integrator在CMOD A7开发板上构建MicroBlaze软核,并实现相应的功能,比如MicroBlaze软核实现串口输出。
下载安装CMOD A7的板级支持包:下载地址
将CMOD A7-35T开发板的板级支持包文件复制到Vivado的安装目录下X:\Xilinx\Vivado\2016.3\data\boards\board_files
- 创建项目
打开Vivado EDA工具,熟悉的界面。
新建一个名为hello_eeboard的项目名
选择RTL Project,其它默认,不同勾选,一直点Next下一步。
选择对应的板卡Cmod A7-35T
最后会有一个项目的信息以及器件的信息的总的概览,也就是你前面设置的一些信息,确认无误后点击完成就可以进入到EDA工具的主窗口。
- 在项目中创建新的Block设计
下图则是hello_eeboard项目的主窗口界面,在这里我们就可以基于Block设计创建MicroBlaze IP或者添加RTL,整个主窗口界面的左侧有不少导航栏,包括了创建硬件设计、仿真、综合、生成bit文件等功能。
这里的话我们通过IP integrator创建一个新的Block设计。
- 添加MicroBlaze软核&配置
在创建的Block设计中,在Diagram框中点击add IP添加MicroBlaze软核(双击就可实现添加)
在Block设计的Board标签中找到系统时钟(system clock)添加(直接拖动到Diagram即可完成添加),board标签下的东西就是之前安装的CMOD A7-35T的板级文件。
点击Run Block Automation,打开MicroBlaze软核的Block Automation界面
这个界面中你可以选择配置多少memory到你的软核,这里的设置如下
完成后会自动执行Block Automation动作,会按照你刚刚的设置自动生成一系列IP Blocks,如下图所示,另外现在不要执行Run Connection Automation动作,因为我们还要继续配置。
- 添加Cell RAM单元
还是在Board标签栏中找到Cell RAM,直接点击拖动到Diagram框中。
这里我们需要做的是将rdclk pin连接到clk_out1上
- 添加外设单元
在hello_eeboard项目一开始就打算做一个基于MicroBlaze软核的串口输出,所以在软核添加完毕后我们还需要添加UART外设,同样在board标签中找到USB UART单元拖动到Diagram中。
所有外设单元都添加完毕,我们可以选择Run Connection Automation。
确保Run Connection Automation框中所有的All Automation都已经勾选。
点击完成会为Block Memory以及外设单元创建AXI总线连接,然后我们可以点击左侧中的Regenerate Layout来重新排版你的框图,使之看起来更具有流程化,更好看了。
- 验证设计以及创建HDL Wrapper
点击Tools-->Validate Design,它会检查设计、连接是否有错。
验证设计结果无误
验证无误之后我们可以创建HDL Wrapper,点击Block Design框中的Sources标签,找打自己的设计项目文件-->create HDL Wrapper
在弹出的窗口中选择Let Vivado manage wrapper and auto-update,然后点击OK。
这个过程会在VHDL中创建一个允许你生成bitstream文件的Top module。
- 生成Bit文件
上一步完成之后,我们就可以先保存下你的项目,然后在Flow-->Generate Bitstream生成bit文件
这个过程中会执行Synthesis and Implementation,根据你的计算机性能所花费的时间有所不同,笔者的渣渣笔记本将近用了半个多小时。
bit文件生成后会出现如下的弹窗,也就是说,到这边我们的MicroBlaze的软核正式构建完成了,就差把它配置到FPGA中,这里先不用管它,点击Cancel。按照一开始的想法,我们要用软核实现串口的功能,所以还要写个小程序用起来。
- 导出硬件到SDK
嵌入式的程序需要用到C/C++编辑器,这里将使用Xilinx内置的Vivado SDK,基于eclipse。点击File-->Export-->Export Hardware
这弹出窗口中勾选Include Bitstream,这里输出的作为Vivado SDK所需的系统打包的硬件。
这时同样会有两个文件被创建 .sysdef 以及 .hdf(.hdf包括了硬件设计规格 以及IP Blocks),控制台会显示详细的信息,如下所示,这是创建SDK Workspace必须的,不用在意。
然后在Vivado EDA主窗口中打开Xilinx SDK,Files-->Launch SDK
这时在弹出的窗口中选择默认的路径设置 Local to Project
点击OK就会打开Xilinx SDK以及导入你的硬件信息。
Xilinx SDK算是作为一个独立的C/C++软件开发工具,可以独立于Vivado使用。这里的话,我们就可以基于我们之前构建的硬件平台(MicroBlaze软核)上做嵌入式的开发。
- 在Xilinx SDK中创建你的项目
按照最初的想法,在MicroBlaze上做一个串口输出的hello_eeboard程序,点击File->new->Application Project,在SDK中创建hello_eeboard项目名,C语言开发方式。
看到有相应的模板,那就不客气,直接拿来改下。
载入模板后可以看到有几部分的内容,display_hello_world包含了所有的binaries, .C以及.H (Header)文件;display_hello_world_bsp也就是板子支持的文件夹;这里我们主要的工作目录为display_hello_world文件夹,点击里面的helloworld.c文本。
hello eeboard程序
#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"
int main()
{
init_platform();print("Hello EEboard\n\r");
cleanup_platform();
return 0;
}
到这里基本上一切都就绪了,就差东风了。
- 将bit文件下载到FPGA中
首先确保CMOD A7-35T开发板已经连接到电脑,USB-JTAG、USB-UART都可以正常工作。
点击SDK中的Program FPGA按钮,如下图所示
点击Program,将你的硬件设计下载到你的FPGA中
也就是将你构建的MicroBlaze配置到FPGA中
- 将程序下载到Microblaze软核中
在FPGA中配置完MicroBlaze软核,接下来就可以将hello_eeboard程序下载到MicroBlaze中,选中hello_eeboard项目,选中Run As-->Launch on Hardware (System Debugger)
程序下载中
下载完成后,我们可以打开串口终端,CMOD A7开发板上的复位键可以看到串口成功输出“Hello EEboard”的结果,到这里,MicroBlaze软件的构建以及在软核上实现编程都完成了。
其实吧,只要一旦软核构建完成,你就可以在此基础上进行各种嵌入式的开发,到这步的话已经跟普通的微控制器编程开发区别不大了,而使用FPGA的好处在于如果你想改变硬件的话,还可以通过Vivado EDA工具构建不同功能的软核配置不同的外设功能,当然,这样做的话还是需要退回到Vivado EDA工具上修改,然后保存,重新导出新的硬件规格到SDK中进行开发,但是,这相比单一的嵌入式微控制器的开发,在FPGA上软核的构建方式无疑更自由,兼容度更广,好处是显而易见的。当然,凡事都讲两面,说完了利,也该说说弊,对于如果仅仅想做嵌入式开发,选择一个合适的单片机明显更为合适,毕竟开发难易度、成本、效能都摆在那了。
而如果要选择使用FPGA的话,要么是本身就有学习或者使用FPGA的打算,要么无疑是想向更高难度,更灵活自由,以及那些嵌入式微控制器没法涉及的领域挑战,因为在那里FPGA有绝对的优势,比如说现在很火的人工智能、4K/8K视频解码等一些需要大规模并行计算的高级应用,当然,现在在精而美的移动产品中也有不少小封装的FPGA存在,一句话来总结就是,依托于成本和门槛的降低,目前FPGA的应用已经越来越广了,此时不学FPGA,更待何时。
更多物美价廉的拇指型FPGA板卡推荐:
- Lattice FPGA 的STEP-MXO2
- Altera(Intel)FPGA 的STEP-MAX10
原创申明:本文为爱板网原创,谢绝转载!
FPGA即现场可编程门阵列,属于可编程逻辑器件的一种。随着工艺的进步和EDA设计工具的不断发展,FPGA的门槛(学习成本和价格成本)也越来越低,目前已经成为实现数字系统的主流平台之一。尤其是很多厂商都在开发便携式、低成本的拇指型最小系统式开发平台,好用不贵,让越来越多学生/工程师进入到可编程逻辑的世界中来。
这样的平台,比较有代表性的莫过于爱板网评测过的几款小脚丫FPGA开发板,比如
基于Lattice FPGA 的STEP-MXO2;
或者是
基于Altera(Intel)FPGA 的STEP-MAX10。
本文原文地址: https://www.eeboard.com/evaluation/digilent-cmod-a7-fpga/
而今天爱板网同样要给大家推荐一款拇指型FPGA开发平台,但是,是基于另一个全球最大的FPGA厂商Xilinx的开发平台,板子为Cmod A7,由Digilent设计制造。
Cmod A7跟小脚丫FPGA的版型类似,最大的不同还是基于Xilinx Artix-7 FPGA,当然,在外设上与小脚丫FPGA相比,各有长短。
比如CMOD A7没有搭载数码管,没有拨码开关,RGB LED/LED/按键都要比小脚丫FPGA上的少,但是CMOD A7额外搭载了SRAM,Quad-SPI Flash,扩展的IO口也比小脚丫FPGA多。
不过整体来看,CMOD A7同样是最小系统原型板,只不过是基于Xilinx Artix-7 FPGA的平台,这算与小脚丫FPGA开发板最大的不同,CMOD A7板子具体样子如下图所示。
在Cmod A7板子上,有44个可以作为数字FPGA I/O的引脚,用户能够非常方便地将可编程逻辑设计直连面包板电路,同时板载USB-JTAG编程电路/USB-UART桥接功能,配合Xilinx Vivado开发工具,可以进行各类数字逻辑电路以及MicroBlaze嵌入式软核处理设计。
CMOD A7开发板特性:
- Xilinx ARTIX-7 35T FPGA
- 512KB SRAM,支持8位总线以及8毫微秒访问时间
- 4MB Quad-SPI Flash
- USB-JTAG编程电路/USB-UART桥接
- USB或外部3.3-5.5V连接DIP pins供电
- 2个LED、1个RGB LED、2个按钮
- 48引脚DIP连接器,带有44个数字I/O以及2个模拟输入(0-3.3V)
- 1个Pmod连接器,带有8个数字I/O