FPGA开发——vivado使用

本文详细介绍Vivado软件在FPGA设计中的应用,包括Verilog语法解析技巧、TCL脚本编写方法、常用IP模块介绍及FPGA芯片特性解析等。针对不同应用场景,提供了丰富的实例说明。

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

    小生才疏学浅,孤陋寡闻,下文若有不当之处,还请赐教

一、vivado使用概述

microblaze使用

microblaze是内嵌在FPGA中的软核,一个工程文件可设置多个micrablaze

vivado的verilog语法解析

vivado根据文件后缀名识别verilog或systemverilog文件,所以sv文件最好以.sv后缀。

如果.v文件中有sv的语法,可以使用如下命令强制工具以sv的语法解析该文件
set_property file_type SystemVerilog [get_files sram_data.v]

FPGA中组合逻辑环的处理

什么是好的FPGA编码风格?(1)--尽量避免组合逻辑环路(Combinational Loops) | 电子创新网赛灵思社区

二、vivado的tcl脚本运用

再进行block design开发时,可以先进行图形界面开发,然后再export到tcl脚本,再在生成的tcl脚本的基础上增加synthsis、implementation和write bitstream等命令。

重要命令

  1. apply_bd_automation
    该命令自动将板子上的资源连接到需要配置的信号,因此该命令一般要求需要调用的IP有对应的信号,例如reset信号、DDR信号等
    apply_bd_automation -rule xilinx.com:bd_rule:board -config {Board_Interface {reset (FPGA Reset)} Manual_Source {New External Port (ACTIVE_HIGH)}}  [get_bd_pins ddr4_0/sys_rst]

    该命令的作用是新建一个port口叫reset,并映射到FPGA开发板上的Reset信号,并连接到ddr4模块上的sys_rst的pin脚

    与该命令作用相同的可以用一下命令代替:

    set_property -dict [CONFIG.RESET_BOARD_INTERFACE {reset}] $ddr4_0

  2. get_cells、get_nets、get_ports、get_pins、get_clocks用法
    参考链接:Vivado中常用的5个Tcl命令-优快云博客

三、Vivado常用IP

3.1 基础模块

1)block RAM

 FPGA 的固有硬件资源,主要用于产生较大FIFO或timing要求较高。可配置为同步双端口RAM和单端口RAM。

FPGA芯片内实现存储器有两种方式:BRAM(块RAM)和DRAM(分布RAM)。二者最本质的区别是:BRAM默认输入有寄存器,所以它在读、写使能信号后的下一个时钟沿返回数据;而DRAM是由FPGA逻辑资源查找表LUT拼起来的组合逻辑,读、写使能的同一时刻返回数据,即给地址就给数据。从时序的角度上来说,BRAM更好,唯一不足的是它是比较珍贵的硬件资源。

使用coe文件初始化存储颗粒

COE文件与MIF文件使用方法 - 知乎d

读数据延迟

无输出寄存器:1个cycle延迟

有输出寄存器:2个cycle延迟

2)clock_wizard

时钟分频模块。

xilinx FPGA中有两种时钟资源:
MMCM(mixed-mode clock manager):混合模式时钟管理器,用于在与给定输入时钟有设定的相位和频率关系的情况下,生成不同的时钟信号。
PLL(phase-locked loop):锁相环,主要用于频率综合,使用一个PLL可以从一个输入时钟信号生成多个时钟信号。PLL输入时钟的频率范围为19~1066MHz。相较而言MMCM的频率范围更宽为10~1066MHz。

Vivado MMCM和PLL的区别 新人不想看,老人用不到系列._mmcm和pll区别-优快云博客

3.2 接口控制器模块

DDR controller

3.3 调试模块

1)VIO模块

VIO模块可以连接到目标设计的IO引脚来模拟真实的IO引脚,vivado可以借助jtag对设计中的VIO信号针对性的置位,以便获得自己想要的场景

 2)ILA模块

vivado信号波形trigger模块

四、XILINX FPGA芯片特性

1、IO特性

(1)输入输出标准:

单端模式:可配置为LVCMOS,LVTTL,HSTL,PCI,SSTL电平标准,例如按键输入,led驱动等;
差分输入输出(两个IO引脚):可以设置为LVDS,Mini_LVDS,RSDS,PPDS,BLVDS,以及差分HSTL和SSTL标准,这样可增强FPGA的应用范围,处理不同类型的信号。

(2)引脚可分为高效引脚(HP)和宽范围引脚(HR)

HP:追求高效率,例如访问高速存储器和其他芯片间接口,电压最高1.8V;
HR:满足宽范围应用的IO标准,电压最高3.3V

使用注意

Error记录

1、synth8-5535 ? clk100 has illegal connection Xvendor=%s Xleid=%d Xhiername=%s"

      解决:从引脚输入的clk100不可以直接作为多个模块的输入信号

2、vivado综合失败不报错

原因:可能是所需资源太大,所选板卡不支持,特别注意ram资源

Vivido synthesis failed(synth_design ERROR)问题的解决-优快云博客

使用细节

  • vivado HLS 代码中叠加或叠减符

在vivado HLS中写C/C++是不可使用叠加或者叠减符号,否则在RTL综合时或将某一个量定义成input/output型。

  • 关于Vivado IP的两种综合方式:Global 和 Out-Of-Context,见链接:

Vivado IP的两种综合方式:Global 和 Out-Of-Context_synth 8-5535-优快云博客

  • vivado SDK 中program FPGA时不能更新download.bit

鄙人用的是vivado 2018.2,原因到xilinx官方论坛,百度找了一圈都没找到,估摸着是SDK本身的BUG;最后我把原hw_platform_x的download.bit文件删掉,新建了一个空的download.bit文件,重新program FPGA就好了;本来是想直接新建一个hw_platform_x+1来着,找了一圈也没找到怎么新建;不知道有没有朋友遇到过这种情况,还望在评论区留言解惑。

  • vivado SDK 编译.C文件时出现头文件错误

我遇到的是SDK自己的头文件说没有声明,之前都好好的,突然说没有该文件,后来多编译几次就好了,很奇怪,不知道原因,难道是SDK 的BUG?

  • vivado的网表文件

参考链接:VIVADO网表文件DCP和EDF-优快云博客

### FPGA 开发 Vivado 使用指南 #### 安装 Vivado 工具 为了顺利开展 FPGA开发工作,安装 Vivado 是必不可少的第一步。Vivado 提供了一个集成化的环境用于设计输入、综合、实现以及仿真等功能[^1]。 #### 创建新项目 启动 Vivado 后,在欢迎界面选择 "Create New Project" 来创建一个新的工程文件夹来管理所有的源代码和其他资源文件。根据向导提示完成项目的配置设置,包括指定目标器件型号等重要参数。 #### 设计输入——编写 Verilog HDL 代码 对于初学者来说,可以先尝试简单的逻辑功能模块的设计练习,比如加法器。使用 Verilog Hardware Description Language (HDL) 编写描述硬件行为的程序,并将其保存到对应的 .v 文件中作为源码加入到当前工程项目里[^2]。 ```verilog module adder( input wire a, input wire b, output reg sum ); always @(*) begin sum = a ^ b; end endmodule ``` 这段代码定义了一个基本的一位全加器的功能模型,其中 `a` 和 `b` 表示两个待相加的操作数,而 `sum` 则表示计算得到的结果。注意这里仅展示了最基础的形式以便理解概念;实际应用中的多位二进制数值运算还需要考虑更多细节处理如进位传递等问题。 #### 综合与实现阶段 当完成了所有必要的 RTL 级别的编码之后就可以进入后续步骤了。点击菜单栏上的 “Run Synthesis”,这会将高级抽象的语言表达转换成具体的门级网表形式。接着运行 Implementation 流程直至 Bitstream Generation 步骤结束,则意味着整个编译过程顺利完成,生成可用于编程下载至物理芯片内的比特流数据文件。 #### 下载配置并测试验证 最后一步就是把之前产生的 bit 文件加载给真实的 FPGA 芯片上执行相应的操作检验预期效果是否满足需求。通常情况下可以通过连接 JTAG 接口适配器配合专用工具软件来进行在线调试分析性能指标等方面的情况评估。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

KGback

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

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

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

打赏作者

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

抵扣说明:

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

余额充值