FPGA开发流程以及Vivado的使用(一)

因为实验室项目需要学习fpga,自己看了些资料感觉整理的比较混乱,发现了b站小梅哥的视频,感觉思路终于被理清了,赶紧来记录一下。小梅哥爱漂流的个人空间-小梅哥爱漂流个人主页-哔哩哔哩视频哔哩哔哩小梅哥爱漂流的个人空间,提供小梅哥爱漂流分享的视频、音频、文章、动态、收藏等内容,关注小梅哥爱漂流账号,第一时间了解UP主动态。FPGA烤肉饭,多放孜然少放盐,不要香菜icon-default.png?t=N7T8https://space.bilibili.com/476579378?spm_id_from=333.337.0.0

师兄推荐使用zynq7000系列的开发板,因此主要针对Vivado的使用进行一个简单的介绍。我使用的是VIvado18.3主要是因为网上大量的学习资料和视频课程都是18.3的版本:

https://pan.baidu.com/s/1ftBMQjqbMkyiCAuEc4XCuw?pwd=js7j 提取码: js7j

软件安装参考的是这位大佬的博客:Vivado18.3的安装 安装教程_vivado2018.3安装教程-CSDN博客

因为我电脑上的matlab是2022版本,因此会出现与Vivado版本不匹配的报错,解决方法在Vivado18.3配置MATLAB R2019b_vivado18.3的matlab-CSDN博客中给出。直接修改ml_supported.xml文件,在其中添加对应的matlab版本号就可以。Vivado18.3默认的matlab版本为2016、2017和2018,但只要在这个文件中添加对应的matlab版本号就不会出现报错。

FPGA的开发流程可以分为7个步骤:

1.确定设计目标

2.设计输入:这个阶段需要使用Verilog或者VHDL语言来实现设计功能。

3.综合工具:个人理解这个部分相当于单片机中的编译功能,就是使用EDA软件将我们编写的程序转化为逻辑门级别的电路。在Vivado或者Quartus中都提供了相应的功能。

4.功能仿真:成功的生成组合电路只能说明我们的代码不存在语法和是时序问题,因此还需要进行功能仿真来确认设计目标能否实现。Vivado,Quartus和Modelsim等都提供了功能仿真的工具。

5.布局布线:功能仿真与预期效果一致后,我们需要考虑在实际应用中因为走线问题带来的延迟等问题。因此需要对我们设计的功能模块在开发板上进行布局操作。这里需要针对我们使用的开发板来选择相应的工具。如过使用的是XILINX的板子那么就需要用Vivado作为开发工具,如果使用的是Altera的板子那么就使用Quaturs。

6.性能分析:在完成布线后可是通过时序仿真或者静态时序分析来对电路的性能进行分析,查看我们设计的电路是否满足要求。

7.调试:在目标板上运行程序。

下面按照前面描述的步骤来熟悉Vivado的使用:

打开软件,点击Create Project->Next,会弹出如下对话框:

勾选Create project subdirectory,这样他就会在我们选择的路径下新建一个以项目名称命名的文件夹,方便我们查找。

下面我们需要新建两个文件,一个用来完成步骤2的操作:用来使用verilog语言对设计目标进行描述;另一个用来完成步骤4中的功能仿真操作。

新建project后会进入下面的页面,在左边Setting中选择Add Sources,弹出如下对话框:design sources对应的就是我们的设计文件,下面的simulation sources对应的就是仿真文件。分别新建两个文件,一般design sources就是用我们想要达到的目标来命名,比如:MUX2_1,LED,Dff等,仿真文件可以在该名称后加上testbenche加以区别。

在编写完设计文件的代码后,进行步骤3的操作(生成一个逻辑门级的电路):

运行成功后在右上角会显示已经完成,在message栏可以查看是否存在错误。

下面我们在仿真文件中设定时间,为输入配置一些波形,然后进行第4步的操作:

选择Run Simulation中的Run behavioral Simulation,完成后会弹出仿真结果:

在第一次仿真时可能会出现三条蓝线,一条红线的情况(显示我们的输入值为Z状态),只要再点击一下仿真就可以出现正确的波形。(有些uu说这个情况是Vivado中存在的bug)。但我的仿真时间设定的是1600ns,但是仿真却只进行了1000ns,此时点击下图中红框圈出的RUN ALL按键,再进行一次仿真,可以看到右上角现实的时间变成了1600ns。

为了更好地观测图像,点击绿色圆圈1中的内容可以让仿真结果框悬浮出来,方便我们自行调整大小。点击标号2绿圈的按钮可以让波形显示与对话框大小合适。调整后的结果如下:

下面进行第5步操作,点击Run Implementation,完成后也是在右上角会显示Implementation completed。

完成上述操作后,我们可以对设计的电路进行时序仿真,此时可以看到Simulation下本来灰色的两个选项变成了黑色:

选择Timing Simulation就完成了时序仿真。

因为板子还没有到,最后一步的操作过几天再进行记录。

<think>好的,我需要回答用户关于使用Vivado进行FPGA开发的整体流程的问题。首先,我要参考用户提供的三个引用内容,确保信息准确。根据引用1,流程包括创建工程、添加设计文件、编译、仿真、布局布线、生成比特流和烧录。引用2提到Vivado支持Verilog和VHDL,具备综合和仿真功能。引用3补充了仿真工具和时间单位设置等细节。 接下来,我需要按照用户要求的格式来组织回答。首先,结构要清晰,分步骤讲解每个流程,每个步骤下可能需要子步骤。例如,工程创建部分需要说明如何打开软件、选择项目类型等。添加设计文件时,要区分设计文件和约束文件,并提到可能的IP核使用。 在编译部分,需要解释综合、实现和生成比特流的具体过程,以及如何检查警告和错误。仿真阶段要区分行为仿真和时序仿真,并引用引用3提到的仿真工具。布局布线时要强调约束文件的作用,如时钟和引脚分配。 烧录部分需要说明硬件连接和两种配置模式,以及如何验证功能。最后,生成相关问题,确保问题覆盖流程细节、仿真工具、约束文件重要性、比特流作用、IP核应用和常见错误处理。 需要确保所有数学表达式和公式使用正确的LaTeX格式,如用户提到的$...$和$$...$$。同时,引用标识要自然添加在引用段落末尾,例如[^1]、[^2]、[^3]。最后检查是否符合中文回答、结构清晰、分步骤说明的要求,避免使用Markdown格式,保持口语化的思考过程。</think>### Vivado进行FPGA开发流程详解 #### 、工程创建 1. **启动Vivado**:打开软件后选择**Create Project**,设置工程名称与存储路径。 2. **选择项目类型**:根据需求选择RTL项目(默认)或包含IP核集成的项目。 3. **添加源文件**:可跳过初始添加步骤,后续通过**Add Sources**手动添加。 #### 二、设计文件添加 1. **设计文件类型**:支持Verilog(`.v`)和VHDL(`.vhdl`)文件,通过**Design Sources**添加。 - 示例:创建`top_module.v`作为顶层模块。 2. **约束文件**:通过**Constraints**添加`.xdc`文件,定义时钟、引脚位置等物理约束。 3. **IP核集成**:使用**IP Catalog**添加预置功能模块(如PLL、存储器控制器)。 #### 三、编译与综合 1. **运行综合(Synthesis)**:将HDL代码转换为逻辑门级网表。 - 关键输出:综合后需检查**Timing Report**,确认逻辑延迟是否达标。 2. **实现(Implementation)**:包含布局布线(Place & Route),将逻辑映射到FPGA物理资源。 - 资源利用率:通过**Utilization Report**查看LUT、FF、BRAM等资源占用率。 #### 四、仿真验证 1. **行为仿真**:使用Vivado自带的仿真器(如XSim)或第三方工具(如Questa)[^3]。 - 示例:添加`testbench.v`文件,设置仿真时间单位为`1ns/1ps`。 2. **时序仿真**:在布局布线后加入实际延时信息,验证时序收敛性。 #### 五、生成比特流与烧录 1. **生成比特流(Generate Bitstream)**:生成`.bit`配置文件,耗时取决于设计复杂度。 - 文件作用:包含FPGA逻辑配置的二进制数据流。 2. **硬件连接**:通过JTAG或USB接口连接开发板。 3. **烧录模式选择**: - **临时配置**:直接加载到FPGA易失性存储器。 - **固化配置**:烧录至外部Flash,重启后自动加载。 #### 六、调试与优化 1. **线上调试**:使用**Integrated Logic Analyzer (ILA)**插入探针,实时捕获信号波形。 2. **时序优化**:通过调整约束文件或代码结构解决时序违规(如`set_max_delay`命令)。 --- ### 示例:约束文件片段 ```tcl # 时钟约束(100MHz) create_clock -period 10 [get_ports clk] # 引脚位置约束 set_property PACKAGE_PIN "AC12" [get_ports {led[0]}] ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值