草庐IT

FPGA 学习笔记:Vivado 配置IO引脚约束

张世争 2023-04-20 原文

前言

  • FPGA 内部有大量的逻辑资源,可以实现简单到复杂的工程,但依旧需要基本的输入输出引脚,如时钟引脚,普通的IO引脚

配置IO 引脚

  • 这里配置一下LED的引脚与 FPGA的时钟输入引脚,也就是FPGA外部晶振的输入引脚

  • 首先需要通过查看原理图,确认FPGA的引脚,以下是我的开发板上的引脚配置

引脚引脚编号说明
40MHz 时钟输入U2740MHz 时钟输入
LED1AF28高电平 亮
LED2AE28高电平 亮
LED3Y29高电平 亮
  • 一般FPGA 会有 复位引脚,也就是 RESET引脚,我这个开发板没有找到,可以先随意制定一个没有使用的IO引脚

配置步骤

  • 在开发FPGA 的Module (模块)时,会定义输入与输出的网络,类型为:input 、output、 inout类型中的一种,然后定义一个 wire 线的 name,或者 port,引脚配置最终与这些 port 一一对应,如果port没有指定引脚,在生成Bitstream 文件时,Vivado 会报错,提示没有IO约束

  • 我当前的引脚定义

module led_flash(
    input sys_clk, //FPGA_40MHz
    input sys_rst_n,
    output reg [2:0] led
);
  • 也就是 :sys_clk 对应 FPGA 的晶振时钟输入, sys_rst_n 指定复位引脚,板子没有这个引脚,就随意制定一个不使用的IO,led,3位的,对应板子上的三个LED控制引脚

约束文件指定

  • 新建约束文件,Vivado 默认文件扩展名为:.xdc,在这个文件直接设置引脚即可
set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property CFGBVS VCCO [current_design]

# set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]
set_property BITSTREAM.CONFIG.SPI_32BIT_ADDR YES [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
#set_property BITSTREAM.CONFIG.SPI_FALL_EDGE YES [current_design]


set_property PACKAGE_PIN Y29 [get_ports {led[2]}]
set_property PACKAGE_PIN AE28 [get_ports {led[1]}]
set_property PACKAGE_PIN AF28 [get_ports {led[0]}]
set_property PACKAGE_PIN U27 [get_ports sys_clk]
set_property PACKAGE_PIN AH29 [get_ports sys_rst_n]
set_property IOSTANDARD LVCMOS33 [get_ports {led[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports sys_clk]
set_property IOSTANDARD LVCMOS33 [get_ports sys_rst_n]
set_property SLEW SLOW [get_ports {led[2]}]
set_property SLEW SLOW [get_ports {led[1]}]
set_property SLEW SLOW [get_ports {led[0]}]
set_property DRIVE 12 [get_ports {led[2]}]
set_property DRIVE 12 [get_ports {led[1]}]
set_property DRIVE 12 [get_ports {led[0]}]

set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]

使用 Vivado 图形配置

  • 需要 完成【实现】,也就是:【Run Implemention】完成后,打开【Open Implemented Design】

  • 右上角有个【I/O Planning】,选择 【I/O Ports】

  • 这里可以直接配置引脚,配置完成后,CTRL + S 保存,如果没有约束文件:【Constraints】文件,可以新建,如果已有,可以【覆盖】,也就是 overwrite。这样会更新到 .xdc 约束文件中

功能验证

  • 配置引脚后,可以点击【Generate Bitstream】,重新生成 bit文件,下载到 FPGA 运行,确认引脚是否设置正确

小结

  • 学习FPGA,方法很多,有的喜欢研究Verilog HDL、VHDL等硬件描述语言,有的喜欢仿真,不断的学习研究【数字逻辑】,有的喜欢工程式的开发,研究各个FPGA平台的使用,不过都需要持续深入的研究,才会有所得

  • 需要熟练使用开发工具,如Xilinx 的 Vivado,功能很强大,可以满足初学者的学习要求

有关FPGA 学习笔记:Vivado 配置IO引脚约束的更多相关文章

  1. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  2. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  3. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  4. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  5. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  6. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  7. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  8. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  9. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  10. 神州数码无线产品(AC+AP)配置 - 2

    注意:本文主要掌握DCN自研无线产品的基本配置方法和注意事项,能够进行一般的项目实施、调试与运维AP基本配置命令AP登录用户名和密码均为:adminAP默认IP地址为:192.168.1.10AP默认情况下DHCP开启AP静态地址配置:setmanagementstatic-ip192.168.10.1AP开启/关闭DHCP功能:setmanagementdhcp-statusup/downAP设置默认网关:setstatic-ip-routegeteway192.168.10.254查看AP基本信息:getsystemgetmanagementgetmanaged-apgetrouteAP配

随机推荐