学习FPGA开发是普通硬件工程师往资深硬件工程师发展的必经之路,随着芯片的集成化越来越高,传统硬件工程师可以做的工作越来越少,是不是硬件工程师就没有前途了?
随着FPGA的集成度越来越高,以及应用市场对于大数据量/大运算量的需求与日俱增,ARM+FPGA的集成路线会成为未来的芯片发展的主流趋势。掌握这种异构平台的开发技能也是硬件工程师提升自身能力的途径之一。
先从一个简单的Verilog程序入手吧,今天的主要任务是熟悉vivado的操作流程。
工程创建
vivado软件的安装本文就不介绍了,下面假定你已经在电脑上安装了vivado,我用的是2016.1版本,不同版本操作上都大同小异。
双击桌面快捷方式,映入眼帘的是这种样子
第一次使用,所以点击左上角的新建工程,起个名字叫project_led 吧,保存路径我喜欢在EDA安装路径下,创建一个叫MyProject的文件夹。
在下一个界面里,我们选择RTL工程,因为是从verilog语言这种底层设计方式开始第一次设计。
根据你手上的板子选择芯片的型号,当然这里不选也是可以的,相信能够开始使用到vivado的同志,对其它fpga开发程序也是有一定的使用经验的。在后面的步骤中也可以设定芯片型号。
一切就绪后,可以看到下图所示这个界面,中上橙色部分那个窗口,有整个工程的文件信息,包括设计文档,约束文档和仿真文档。
添加设计文件
我们在软件的最左侧,找到最上方的工程管理Project Manag,第一个Projec Setting,可以设置或修改芯片型号,工程基本设置,点击第二个Add Sources
弹出窗口中选择第二个
在新弹出窗口中,选择Creat File
选择文件类型Verilog,输入文件名称led_test
在新窗口中可以看到文件信息,点击Finish
下一步输入module的名称,也是led_test
Project Manage下面可以看到多了一个文件
双击后,打开一个空白verilog文件,点击窗口的右上角可以切换窗口的大小。
输入下面的代码吧
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2020/07/08 16:59:19
// Design Name:
// Module Name: led_test
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module led_test(
input CLK_i,
input RSTn_i,
output reg [3:0]LED_o
);
reg [31:0]CNT; //时钟计数counter
always @(posedge CLK_i)
if(!RSTn_i)
begin
LED_o <= 4'b1;
CNT <= 32'h0;
end
else
begin
if(CNT == 32'd50_000_000)
begin
CNT <= 32'h0;
if(LED_o == 4'b1000)
LED_o <= 4'b1;
else LED_o <= LED_o << 1;
end
else
begin
CNT <= CNT + 1'b1;
LED_o <= LED_o;
end
end
endmodule
编译、配置
点击上方或者左侧的synthesis 图标,开始综合吧,综合后会弹出一个小界面,提示你下一步做什么。可以点击cancel,分配引脚后再实现吧。
再次找到窗口最左侧的Project Manage,添加文件,不过这次添加的是约束文件,选择第一个。
又看到熟悉的界面,选择Creat File 吧
输入文件名还是led_test,不过这次的文件类型是XDC,约束文件。所谓的约束,就是指定信号的引脚、信号特性、引脚电平等信息。
下一步,也见过,继续Finish
Project Manage下面看到又多了一个文件
下一步我们可以双击这个xdc文件,输入文本格式的约束,也可以通过选项的方式设置。我们采用第二种。
首先在窗口的最左侧找到synthesis栏,最下方有个Schema’tic,点击它
可以看到如下窗口,点击上方的I/O Ports
最下方可以看到这个熟悉的界面,手动指定引脚吧
指定后记得点击窗口左上角的保存
效果是这样,我这里呢,忘记指定引脚的电平类型,编译时提示出错,不能选择为default!需要回过头来自己手动修改。
还是从最左侧synthesis栏,最下方找到schematic即可。
下面综合/生成bit文件吧
下载、运行
找到窗口最左侧,下方,最下方!
电路板插好JTAG编程器,目标板上电运行
如果链接正确,会看到下面这个样子,如果没找到设备,请检查硬件连接。
再次找到窗口左侧最下方,开始烧写;也可以在器件名称上点击右键开始烧写
选择文件路径
见证成功的喜悦吧!
至此,一个简单verilog成功地在vivado环境下编程、下载、运行成功啦!
熟悉vivado
再回过头来熟悉一下vivado,在RTL analysis下,点击schematic可以看到寄存器级的原理图
综合以后的效果,注意第一步选择的位置,这里选择不同,看到的综合原理图就会不同,下面两幅图对比一下。
愉快地玩耍一段时间吧!