基于Vivado的FPGA流程学习

本文介绍了FPGA开发中的关键步骤,包括使用工具如Vivado进行RTL语法检查,以及在综合前设置XDC约束,如管脚约束(引脚号和电压)、时序约束(时钟、输入和输出)。详细阐述了时钟约束的创建,如外部时钟、衍生时钟和异步时钟组的设定,以及输入、输出延迟和多周期、伪路径约束的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FPGA流程图说明

在这里插入图片描述
没啥好说的,首先你可以从Linux系统下的spyglass完成你RTL的语法检查,或者你可以使用window下的modsim。总之,在使用vivado进行综合之前要保证代码的正确性。
FPGA通过综合后将生成的门级网表进行管脚约束后进行布局布线最终生成比特文件,下载到FPGA中去。下面我将结合Vivado的图形界面展开描述。

一、约束(XDC)

进行综合之前要求,设置一部分的约束(XDC),将pin约束、模块布局即物理约束、时序约束进行设置。在这里插入图片描述

1.管脚(引脚)约束,又称为pin约束

约束文件的书写:(普通IO口只需约束引脚号和电压)
管脚约束:
set_property PACKAGE_PIN 引脚编号 [get_ports 端口名称]
电平信号约束:
set_property IOSTANDARD 电压 [get_ports 端口名称]
!!!此处需要注意大小写,端口名称如果是数组的话用{ }括起来,端口名称必须和源代码中的名字一致,且不能和关键字一样。
在XDC里面,每个完整的XDC约束指令不应当跨行,必须在一行之内表达完毕。同样,在一行之内也只允许存在一个约束指令,不可以把2个约束放在同一行。
以led[0]的约束为例:
set_property PACKAGE_PIN G14 [get_ports {led[0]}]
为了绑定led[0]的管脚
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
为了设置led[0]的电平约束

2.物理约束

主要对于一些特殊模块的位置进行规定

3.时序约束

时序约束简介
时序约束详细讲解
主要分为时钟约束、输入约束、输出约束、其他约束(多周期约束、伪路径约束)。
(1)时钟约束:
1.外部输入时钟clk_in周期为10ns,占空比为25%,相移为90°约束形式为:

create_clock -name clk_in -period 10 -waveform{
   
   2.5 5} [get_ports clk_in]
# {
   
   2.5 5} 表示一个周期的波形中2.5ns - 5ns 为高。如果没有指定waveform默认为
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北极光sdu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值