FPGA:Vivado流水灯设计详细流程(1)

这篇具有很好参考价值的文章主要介绍了FPGA:Vivado流水灯设计详细流程(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于Vivado的FPGA设计开发的流程主要包括以下步骤:

1)创建工程;

2)创建源设计文件,包括Verilog文本、IP核、模块文件、网表输入等方式;

3)行为仿真(Behavioral Simulation),Vivado自带仿真器,也可以选择第三方仿真软件ModelSim等工具进行仿真;

4)综合(Synthesis):根据设定的编译策略,对工程进行综合,生成网表文件;

5)引脚约束:通过I/O Planing或者直接编辑.XDC文件添加引脚约束信息;

6)实现(Implimentation):指针对某一具体的目标器件经布局布线(Plance&Route),或者适配器(Fitting),产生延时信息文件、报告文件(.rpt),以供时序分析、时序仿真使用;

7)生成Bitstream文件,产生.bit和.bin等编程文件;

8)将生成的Bitstream文件下载至FPGA芯片。


以Ver流水灯设计为例,介绍在Vivado环境下运行Verilog程序的流程,包括源程序的编写、编译、仿真及下载。本例基于Vivado18.3版本。

1.流水灯设计输入

(1)创建新工程

双击Vivado18.3,出现如图所示的界面,单击Quick Start栏中的Create Project,启动工程向导,创建一个新工程。

vivado课设,FPGA基础,fpga开发

 工程路径F:/FPGA/VIVADO/FPGA-Project/exam;

工程名称:flow_led

vivado课设,FPGA基础,fpga开发

选择项目类型

选择RTL项目,RTL仿真就是程序仿真,RTL用硬件描述语言描述出功能,然后经过逻辑综合,得到门级单元。

vivado课设,FPGA基础,fpga开发

添加源文件与选择设计语言,target language与simulator language都选择Verilog语言,单击next。

vivado课设,FPGA基础,fpga开发

 在器件选择页面中根据自己使用的FPGA开发板进行选择,我这里选择Xilinx的Artix-7开发板,封装形式package选择csg324,单击next;

vivado课设,FPGA基础,fpga开发

 工程创建成功页面如下所示,核对自己选择的信息,无误后点击finish。

vivado课设,FPGA基础,fpga开发

 (2)输入源文件设计

在Flow Navigator下的Project Manager中点击Add Sources,打开设计文件导入窗口;

vivado课设,FPGA基础,fpga开发

 在Add Sources窗口中选择Add or create design sources选项,表示创建源文件;

vivado课设,FPGA基础,fpga开发

 点击Create File新建文件;

vivado课设,FPGA基础,fpga开发

 填写源文件名称为flow_led;

vivado课设,FPGA基础,fpga开发

 在Sources栏中点击新建的flow_led.v文件,开始进行流水灯源文件的编写;

vivado课设,FPGA基础,fpga开发

流水灯设计源代码flow_led.v

module flow_led(clk,clr,led);

    input clk;

    input clr;

    output reg [7:0] led;

    reg [28:0] counter;

    //时序逻辑

    always @(posedge clk)

    begin

    if(!clr) begin counter <= 0; led <= 8'h01; end

        else

        if(counter < 50000000)//2Hz

            counter <= counter + 1;

        else

            begin

                counter <= 0;

                led <= {led[6:0],led[7]};

            end

    end

endmodule

(3)行为仿真

在Flow Navigator下的Project Manager中点击Add Sources, 在Add Sources窗口中选择Add or create simulation sources选项,表示创建仿真激励文件;

vivado课设,FPGA基础,fpga开发

  点击Create File新建文件; 填写激励文件名称为tb_led;

vivado课设,FPGA基础,fpga开发

vivado课设,FPGA基础,fpga开发

  在Sources栏中点击新建的tb_led.v文件,开始进行流水灯源文件的编写;

vivado课设,FPGA基础,fpga开发

流水灯测试代码激励文件tb_led

`timescale 1ns / 1ns  //时间尺度/时间精度

module tb_led( );

    parameter DELY = 20;

    reg clk;

    reg clr;

    wire [7:0] led;

    flow_led i1(

        .clk (clk),

        .clr (clr),

        .led (led));

    initial begin

    clk = 1'b0; clr = 1'b0;

    #(DELY*2) clr = 1'b1;

    end

    always

    begin

    #(DELY/2) clk = ~clk;

    end

endmodule

开始进行行为级仿真,在Flow Navigator下的Simulation中点击Run Simulation选择Run Behavioral Simulation;

vivado课设,FPGA基础,fpga开发

 100ms表示仿真的时间长度。得出如下的仿真图,观察此波形是否和预想的一致,验证原设计问价的正确性。

vivado课设,FPGA基础,fpga开发

(4)创建引脚约束文件

在Flow Navigator下的Project Manager中点击Add Sources, 在Add Sources窗口中选择Add or create constraints选项,表示创建引脚约束文件;

vivado课设,FPGA基础,fpga开发

 输入文件名;

vivado课设,FPGA基础,fpga开发

创建完成后,双击sources栏中的Constraints下的flow_led.xdc文件,输入引脚约束文件。

XDC 编写的语法:

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

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

重点:

通过原理图,查看LED与FPGA中实际引脚相连位置,然后看驱动该FPGA的Bank是多大的电压,如果是1.5V电压驱动,那就是LVCMOS15 ,如果是1.8V驱动,那就是LVCMOS18

解读:

set_property:设置属性

IOSTANDARD :IO标准

LVCMOS15 :1.5V

get_ports :获取端口

led_tri_o[3]:第3个led端口

PACKAGE_PIN :引脚

F5 :引脚约束到F5

通俗理解:

set_property IOSTANDARD LVCMOS15 [get_ports {led_tri_o[3]}]修改led_tri_o[3]的IO标准为1.5V

set_property PACKAGE_PIN G6 [get_ports {led_tri_o[3]}] 将led_tri_o[3]约束到G6引脚

vivado课设,FPGA基础,fpga开发

流水灯引脚约束文件

#//时钟和复位

set_property -dict {PACKAGE_PIN P17 IOSTANDARD LVCMOS33} [get_ports clk]

set_property -dict {PACKAGE_PIN P15 IOSTANDARD LVCMOS33} [get_ports clr]

#//LED0-LED7

set_property -dict {PACKAGE_PIN K1 IOSTANDARD LVCMOS33} [get_ports {led[7]}]

set_property -dict {PACKAGE_PIN H6 IOSTANDARD LVCMOS33} [get_ports {led[6]}]

set_property -dict {PACKAGE_PIN H5 IOSTANDARD LVCMOS33} [get_ports {led[5]}]

set_property -dict {PACKAGE_PIN J5 IOSTANDARD LVCMOS33} [get_ports {led[4]}]

set_property -dict {PACKAGE_PIN K6 IOSTANDARD LVCMOS33} [get_ports {led[3]}]

set_property -dict {PACKAGE_PIN L1 IOSTANDARD LVCMOS33} [get_ports {led[2]}]

set_property -dict {PACKAGE_PIN M1 IOSTANDARD LVCMOS33} [get_ports {led[1]}]

set_property -dict {PACKAGE_PIN K3 IOSTANDARD LVCMOS33} [get_ports {led[0]}]

(6)综合编译生成电路图

点击左侧导航栏中的Synthesis下的Run Synthesis进行综合编译,为缩短编译时间,此处选择8;

vivado课设,FPGA基础,fpga开发

直接选择的打开综合设计文件;

vivado课设,FPGA基础,fpga开发

 编译成功后点击导航栏中的Open Synthesis Design下的Schematic,可以查看综合后的电路图。

vivado课设,FPGA基础,fpga开发

(7)生成比特流文件并下载

点击导航栏中的Program and Debug下的Generate Bitstream生成比特流文件;

vivado课设,FPGA基础,fpga开发

 选择打开硬件管理器;

vivado课设,FPGA基础,fpga开发

 电脑外接开发板后点击Hradware manager栏中下方的Open target中的Auto Connect,进行开发板的连接。

vivado课设,FPGA基础,fpga开发

搜索电脑外接的FPGA开发板,由于我还没有开发板,目前就演示到这里,后面再更新。文章来源地址https://www.toymoban.com/news/detail-778716.html

到了这里,关于FPGA:Vivado流水灯设计详细流程(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【FPGA第一天】Verilog基础与简易流水灯设计

    有关更多细节,请参考: verilog语法基础 1.1 新建文件夹用来存放项目文件,请注意你的文件夹路径不要有中文,不过系统自带的桌面和文档这些路径除外。 1.2 新建项目文件 prj 项目文件 rtl 寄存器转换级,用来描述各级寄存器,用来存放.v文件 tb 仿真文件 tcl tool command langu

    2024年02月01日
    浏览(70)
  • FPGA综合设计实验:基于PWM脉宽调制的呼吸流水灯设计

    目录 一、引言 二、项目准备 1.项目预期目标 2.项目原理及总体实现思路

    2024年02月13日
    浏览(60)
  • 5.2 FPGA:基于verilog的LED流水灯设计(多种方法)

    目录 设计目标:8个LED灯以每0.5s的速率进行循环闪烁 方法1:移位法实现 设计模块 仿真代码 实验结果  方法2:循环移位方法  设计模块 方法3:使用三八译码器实现流水灯 顶层模块 底层模块 当仿真时时间长,可以减小设计代码的计数次数,对分析移位功能没有影响。 设计

    2024年02月06日
    浏览(44)
  • fpga--流水灯

    fpga流水灯的设计 思路:外部时钟频率50mhz,若要实现每隔0.5s闪烁一次,则使用内部计数器计数到24999999拉高一个周期电平,当电平被拉高的时候,进行LED灯电平的设置,每次检测到高电平,就进行一位LED灯的设置,进行循环设置,就形成了流水灯的设计。 测试代码  

    2024年02月15日
    浏览(41)
  • 流水灯——FPGA

    环境: 1、Quartus18.0 2、vscode 3、板子型号:EP4CE6F17C8 要求: 每隔0.2s循环亮起LED灯 从LED0开始亮起到LED3又回到LED0循环往复。 流水灯 这里使用了拼接符对LED进行处理加上一个0.2s的计时器进行控制即可。 led流水灯

    2024年02月16日
    浏览(47)
  • FPGA学习——点亮流水灯

    在FPGA开发板中,一般板载LED默认高电平点亮,因此我们只需要将想要亮起的LED赋值为1即可。 本入门实验要求为每隔1s开发板上的LED轮流亮起,因此我们需要一个1s的计数器, 由于开发板晶振时钟为50MHz,因此我们计数50_000_000即为1s。 注意:为了后续方便仿真所以这里MAX设置

    2024年02月13日
    浏览(48)
  • 按键控制流水灯方向——FPGA

    环境: 1、Quartus18.0 2、vscode 3、板子型号:EP4CE6F17C8 要求: 按键1按下,流水灯从右开始向左开始流动,按键2按下,流水灯从左开始向右开始流动,按键3按下LED每隔1s进行亮灭,按键4按下LED常亮。 “自锁”是指开关能通过锁定机构保持某种状态(通或断),“轻触”是说明操

    2024年02月07日
    浏览(46)
  • FPGA学习——verilog实现流水灯

    学习芯片: EP4CE6F17C8 verilog代码如下: 配置引脚,查看芯片的指导书: 烧录运行结果如下: 如图我们可以看见开发板上四个led灯同时被电亮。 代码如下: 配置引脚,查看clock和key的引脚: 运行结果如下图: 此时可以看见四个led灯同时闪烁。 流水灯代码实现: 实验效果图如

    2024年02月16日
    浏览(56)
  • FPGA学习分享--01 led流水灯的实现

    需求 : 博宸电子的ZYNQ7020DEV开发板 Vivado 2018.3 一定的verilog语言基础 博主目前学习的是 博宸电子的ZYNQ7020DEV开发板 ,下面是关于本次分享led流水灯的原理图 图1 涉及本次led流水灯的电路 首先,从图1来看,每个led端口都和一个阻值为4.7k的电阻和一个发光二极管相连,并且发光

    2024年02月04日
    浏览(39)
  • FPGA 学习笔记:Verilog 实现LED流水灯控制

    在初步了解 Xilinx Vivado 的使用后,开启了FPGA Hello World 程序:LED 流水灯控制 在嵌入式MCU中,流水灯需要延时来实现,FPGA的延时,使用外部晶振来实现 实现 3个 LED 流水灯控制,也就是循环依次点亮, LED 低电平亮, 高电平灭,FPGA 有一个40MHz的外部晶振,作为系统时钟输入开

    2023年04月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包