程序员的第一个程序都是helloword, 在FPGA领域,点亮一个LED灯的意义相当于helloword,你可以在过程中了解项目从创建到运行的完整流程,下面我用图文来详细介绍每一步的操作。
(备注 此章节内容为 TINY ZYNQ的板子,如果是EBAZ4205 请看EBAZ4205部分目录)
本文在 vivado2018.3版本上 演示, 其他版本请自行研究
1、具体步骤
1) 具体步骤 新建一个VIVADO 工程,打开软件 选中Create Project, 如下图所示
![](http://www.hellofpga.com/wp-content/uploads/2021/07/Create-Project.png)
2)点击NEXT ,在出现的第二个对话框“Project name”中输入工程名;在“Project location”中选择保存路径;勾选“Create project subdirectory”,最后点击“Next” 备注,所有的路径均不能出现中文名称
![](http://www.hellofpga.com/wp-content/uploads/2022/10/image-2-1.png)
3)点击 RTL PROJECT 选项,点击NEXT
![](http://www.hellofpga.com/wp-content/uploads/2021/07/image.png)
4) 第四步Add Sources 选项直接留空,NEXT
5)第五步Add Constraints 选项直接留空,NEXT
6)选择芯片型号 我们板子上用的芯片是XC7Z010 ,并在列表栏中选择对应的封装型号,完整型号是XC7Z010CLG400-1 如下所示,选中后点NEXT
![](http://www.hellofpga.com/wp-content/uploads/2021/07/image-1.png)
7)确认所选信息 点击“Finish”,完成vivado的工程创建
![](http://www.hellofpga.com/wp-content/uploads/2021/07/image-4.png)
2 增加VERILOG 文件
1)在主界面点击左侧 Add Sources ,点击 复选框的Add or create design sources 选项 并点击NEXT
![](http://www.hellofpga.com/wp-content/uploads/2021/07/image-5.png)
2)在出现的Add Sources 中 选择创建新文件 Create FILE 如下图所示,并在弹出的窗口中 选择类别为Verilog ,在FILE name中填写文件的名称,这里用LED 代替,点击OK 并点击FINISH
![](http://www.hellofpga.com/wp-content/uploads/2021/07/image-7.png)
3)在跳出的窗口中可以填写模块的输入输出信号,由于这部分工作在代码中可以完成,所以这里直接点OK 完成VERILOG 文件的创建
![](http://www.hellofpga.com/wp-content/uploads/2021/07/image-8.png)
3.编写VERILOG的代码
1)双击打开刚才创建的LED.V文件 并在里面写入LED的代码
![](http://www.hellofpga.com/wp-content/uploads/2021/07/image-9.png)
module LED( input clk, output led ); parameter T1MS = 26'd50_000_000 ; //50M晶振时钟 reg [25:0]time_count;//时钟计数器 reg led_r; always@(posedge clk) if(time_count>=T1MS)begin time_count<=26'd0; led_r<=~led_r; end else time_count<=time_count+1'b1; assign led=led_r; endmodule
编写好代码后 对代码进行编译
![](http://www.hellofpga.com/wp-content/uploads/2021/07/image-10.png)
1.接下来 RTL 分析,并完成IO口的设置 (有两种方式,一种是用图形界面的方式,一种是通过写约束文件来进行设置 ,两种方式结果相同最终都生成相同的约束文件),
2.下图蓝色方框中 1)先在Package pin 中修改IO接口, 板子上CLK接到芯片的K18脚, LED 接到芯片的D18脚 2)在蓝色窗口的右侧I/O std 填入 IO接口和管脚电气属性,这里是3.3V 选择LVCOMS3V3
![](http://www.hellofpga.com/wp-content/uploads/2022/10/image-1024x781.png)
3.选择保存,第一次保存时会要求填入约束文件的名称,管脚定义的信息会被保存到约束文件中
4. 硬件设计中时钟这块有存在一个不合理的地方,不过不影响使用,硬件设计中 将有源晶振的50M 时钟接到 普通IO了,所以这里 需要在约束中增加一串代码,来让普通IO也可以作为时钟输入用,具体操作如下:
a. 打开上面第三步保存的 xdc约束文件,在约束文件里增加一行代码,代码如下
set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets {clk_IBUF}]
![](http://www.hellofpga.com/wp-content/uploads/2022/10/image-1.png)
b. 之后点击保存即可
5. 修改之后 点击 Generate Bitstream 进行综合以及生成Bit 文件
![](http://www.hellofpga.com/wp-content/uploads/2021/07/image-18.png)
成功后会出现下图对话框,点OK 确认就好
![](http://www.hellofpga.com/wp-content/uploads/2021/07/image-21.png)
将下载器的JTAG口和板子连接好,给板子通上电源后,点击 PROGRAM AND DEBUG 中的OPEN TARGET 下的Auto Connect 来连接板子
![](http://www.hellofpga.com/wp-content/uploads/2021/07/image-19.png)
如果连接正常会在右侧 硬件栏中显示设备,如下图所示
![](http://www.hellofpga.com/wp-content/uploads/2021/07/image-20.png)
接下来下载bit文件,右键设备 然后选择 Program Device
![](http://www.hellofpga.com/wp-content/uploads/2021/07/image-22.png)
默认会出现生成的BIT文件,如果没有的话需要手动添加路径 ,点击PROGRAM 下载
![](http://www.hellofpga.com/wp-content/uploads/2022/10/image-3.png)
下载之后,板子就按照我们的代码开始跑了 D18 的LED 灯开始以1S的时间间隔开始闪烁(同时程序下载完成后 仅挨芯片的DONE 灯也亮起,代表芯片正常工作了)
![](http://www.hellofpga.com/wp-content/uploads/2022/10/image-4.png)
以上就是一个工程的完成实现过程
完整工程下载: