ZYNQ PL系列(一)VIVADO 的使用

第一章 VIVADO 的使用


文章目录

  • ZYNQ PL系列(一)VIVADO 的使用
  • 前言
  • 创建 Vivado 工程
  • 创建 Verilog HDL 文件点亮 LED
  • 添加管脚约束
  • 添加时序约束
  • 生成 BIT 文件

前言

使用黑金的开发板,安装VIVADO 2017.4。

创建 Vivado 工程

  1. 启动 Vivado
  2. 在 Vivado 开发环境里点击“Create New Project”,创建一个新的工程。
  3. 弹出一个建立新工程的向导,点击“Next”
  4. 在弹出的对话框中输入工程名和工程存放的目录,我们这里取一个 led 的工程名。
  5. 在工程类型中选择“RTL Project”
  6. 目标语言“Target language”选择“Verilog”,虽然选择 Verilog,但 VHDL 也可以使用,支
    持多语言混合编程。
  7. 点击“Next”,不添加任何文件
  8. 在“Part”选项中,器件家族“Family”选择“Zynq-7000”,“Package”选择“clg400”,Speed 选择”-1”,在下拉列表中选择“xc7z010clg400-1”
  9. 点击“Finish”就可以完成以后名为“led”工程的创建。

创建 Verilog HDL 文件点亮 LED

  1. 点击 Project Manager 下的 Add Sources 图标(或者使用快捷键 Alt+A)
  2. 选择添加或创建设计源文件“Add or create design sources”,点击“Next”
  3. 选择创建文件“Create File”
  4. 文件名“File name”设置为“led”,点击“OK”
  5. 点击“Finish”,完成“led.v”文件添加
  6. 在弹出的模块定义“Define Module”,中可以指定“led.v”文件的模块名称“Module name”,这里默认不变为“led”,还可以指定一些端口,这里暂时不指定,点击“OK”。
  7. 在弹出的对话框中选择“Yes”
  8. 双击“led.v”可以打开文件,然后编辑
  9. 编写“led.v”
module led(input sys_clk,input rst_n,output reg [3:0] led
);
reg[31:0] timer_cnt;
always@(posedge sys_clk or negedge rst_n)
beginif (!rst_n)beginled <= 4'd0 ;timer_cnt <= 32'd0 ;endelse if(timer_cnt >= 32'd49_999_999)beginled <= ~led;timer_cnt <= 32'd0;endelsebeginled <= led;timer_cnt <= timer_cnt + 32'd1;end
end
endmodule
  1. 编写好代码后保存

添加管脚约束

Vivado 使用的约束文件格式为 xdc 文件。xdc 文件里主要是完成管脚的约束,时钟的约束,
以及组的约束。这里我们需要对 led.v 程序中的输入输出端口分配到 FPGA 的真实管脚上。

  1. 点击“Open Elaborated Design”
  2. 在弹出的窗口中点击“OK”按钮
  3. 在菜单中选择“Window -> I/O Ports”
  4. 在弹出的 I/O Ports 中可以看到管脚分配情况
  5. 将复位信号 rst_n 绑定到 PL 端的按键,给 LED 和时钟分配管脚、电平标准,完成后点击保存图标
  6. 弹出窗口,要求保存约束文件,文件名我们填写“led”,文件类型默认“XDC”,点击“OK”
  7. 打开刚才生成的“led.xdc”文件,我们可以看到是一个 TCL 脚本,如果我们了解这些语
    法,完全可以通过自己编写 led.xdc 文件的方式来约束管脚

下面来介绍一下最基本的 XDC 编写的语法,普通 IO 口只需约束引脚号和电压,管脚约束
如下:

set_property PACKAGE_PIN "引脚编号" [get_ports “端口名称”]

电平信号的约束如下:

set_property IOSTANDARD "电平标准" [get_ports “端口名称”]

这里需要注意文字的大小写,端口名称是数组的话用{ }刮起来,端口名称必须和源代码中
的名字一致,且端口名字不能和关键字一样。
电平标准中“LVCMOS33”后面的数字指 FPGA 的 BANK 电压,LED 所在 BANK 电压为 3.3
伏,所以电平标准为“LVCMOS33”。Vivado 默认要求为所有 IO 分配正确的电平标准和管脚编
号。

添加时序约束

一个 FPGA 设计除了管脚分配以外,还有一个重要的约束,那就是时序约束,这里通过向
导方式演示如果进行一个时序约束。

  1. 点击“Run Synthesis”开始综合
  2. 弹出对话框点击“OK”
  3. 综合完成以后点击“Cancel”
  4. 点击“Constraints Wizard”
  5. 在弹出的窗口中点击“Next”
  6. 时序约束向导分析出设计中的时钟,这里把“sys_clk”频率设置为 50Mhz,然后点击“Skip to Finish”结束时序约束向导。
  7. 弹出的窗口中点击“OK”
  8. 点击“Finish”
  9. 这个时候 led.xdc 文件已经更新,点击“Reload”重新加载文件,并保存文件。

生成 BIT 文件

  1. 编译的过程可以细分为综合、布局布线、生成 bit 文件等,这里我们直接点击“Generate Bitstream”,直接生成 bit 文件。
  2. 在弹出的对话框中可以选择任务数量,这里和 CPU 核心数有关,一般数字越大,编译越快,点击“OK
  3. 这个时候开始编译,可以看到右上角有个状态信息,在编译过程中可能会被杀毒软件、电脑管家拦截运行,导致无法编译或很长时间没有编译成功。
  4. 编译中没有任何错误,编译完成,弹出一个对话框让我们选择后续操作,可以选择“Open Hardware Manger”,当然,也可以选择“Cancel”,我们这里选择 “Cancel”,先不下载。

ZYNQ PL系列(一)VIVADO 的使用相关推荐

  1. ZYNQ开发系列——使用AXI4LITE接口进行PS和PL交互

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--使用AXI4LITE接口进行PS和PL交互 前言 PS端AXI接口 AXI4LITE slave模块的设计 后记 ...

  2. zynq开发系列5:通过AXI GPIO的中断实现PL端按键控制PS端LED(SDK开发详解)

    axi_gpio是PL端gpio(FPGA资源搭建的软核),ps7_gpio是ps端gpio(硬核).打开Documentation的示例Examples,可知第二个是关于中断的示例.导入示例impo ...

  3. ZYNQ开发系列——PS响应PL中断请求

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--PS响应PL中断请求 前言 中断的设置 PS部分代码 前言 PS和PL的交互中,还有一个中断没有讲到,在<从 ...

  4. ZYNQ开发系列——为PS和PL的交互做准备

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--为PS和PL的交互做准备 我们使用ZYNQ的片子,肯定存在PS和PL交互的情况.一般来说大部分应用都是以PS为主机 ...

  5. ZYNQ开发系列——把PS和PL程序烧写到FLASH中

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--把PS和PL程序烧写到FLASH中 生成 fsbl.elf 生成 BOOT.bin 下载 BOOT.bin 文件到 ...

  6. ZYNQ开发系列——PS和PL交互之PS端开发

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--PS和PL交互之PS端开发 前言 函数封装 后记 前言 前面<ZYNQ开发系列--使用AXI4LITE接口进 ...

  7. ZYNQ开发系列——PS开发之HelloWorld

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--PS开发之HelloWorld 前言 外设接口 SDK建立工程相关操作记录 前言 俗话说一日不见,如隔三秋.两年没 ...

  8. ZYNQ开发系列——hw_platform包和BSP包中的一些理解

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ZYNQ开发系列--hw_platform包和BSP包中的一些理解 前言 hw_platform BSP包 前言 前面我们完成了PS输 ...

  9. zynq开发系列4:EMIO连接按键控制MIO连接的灯

    EMIO是负责PL端和PS端通信,PL侧按键可以通过连接EMIO来控制连接到MIO的PS侧的LED.原理和实验3 zynq开发系列3:GPIO连接MIO通过按键控制LED灯亮起 类似,只是由MIO侧的 ...

最新文章

  1. word2013插入excel对象报错_在 Excel 电子表格中插入对象
  2. Mysql Connector 5.1 好用的新特性
  3. 记我面试6家公司的感悟
  4. MFC和c#中模拟对另一进程的窗口按钮点击
  5. mysql约束添加删除数据_mysql中约束的添加,修改,与删除
  6. Python 新手入门引导
  7. mybatis配置文件祥解(mybatis.xml)
  8. MyBatis3:SQL映射
  9. Linux下安装PHP扩展 pdo_sqlsrv
  10. JAVA 基础语法(五)——数组
  11. javaweb网上购物系统,jsp网页线上购物,mysql(源码+报告)
  12. 语音芯片播报方案选型补充说明
  13. 收件人、寄件人如何根据快递单号查询物流进度
  14. c语言错误:error C2018: unknown character '0xa3'
  15. 活动星投票千人共读一本书网络评选微信的投票方式线上免费投票
  16. 实施MES系统的成功率只有50%,你知道为什么吗?
  17. python处理excel和word文档
  18. IP防护等级解释说明
  19. Speech Separation
  20. 博一就完成了SCI论文发表要求是一种怎样的体验?

热门文章

  1. 【Foobar 2000】如何为本地歌曲音乐评级、打分、评分、打小星星?喜爱程度分级-playcount、quick tagger
  2. 《中华百寺》专题片开机 江苏13古刹入选百大名寺
  3. 穷人最讨人嫌的地方其实不是穷,而是太在意面子
  4. 前端学习笔记--注册表单
  5. 【快代理】独享代理使用教程
  6. Redis内存淘汰策略LRU、LFU详解
  7. 软件测试工程师必看:如何使用JMeter中的正则表达式?
  8. oracle存小数用 number(m,n)
  9. 1248 NYOJ 海岛争霸
  10. 回环接口(loopback)