EDA设计:流水灯

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


前言

  本次主要介绍一下关于EDA做的初次实验:流水灯设计。实验包括Vivado仿真的具体流程、实现EDA板子的实物仿真。


一、设计内容

  1.学习Vivado软件,并按照Vivado开发流程,熟练其Vivado的硬件、软件使用的流程。
  2.利用给定流水灯的原程序,仿真程序,进行软件仿真,观察其结果。
  3.利用给定流水灯的原程序,约束程序,进行硬件实物仿真,观察流水灯变化的情况。

二、设计过程(及设计步骤)

2.1 工程建立

(1)打开Vivado软件,出现下面窗口,打开Create Project创建项目
EDA设计:流水灯,EDA设计,fpga开发(2)点击Next
EDA设计:流水灯,EDA设计,fpga开发
(3)创建工程名字,选择保存路径,并选中创建项目子路径
EDA设计:流水灯,EDA设计,fpga开发
(4)选择RTL Project一项,并勾选Do not specify sources at this time。
EDA设计:流水灯,EDA设计,fpga开发(5)选择对应的FPGA对应的器件。这里选择的是xc7a35tcsg324-1。
EDA设计:流水灯,EDA设计,fpga开发(6)确认相关信息与设计所用的FPGA器件信息是否一致,一致的话点击Finish,完成空白工程建立。
EDA设计:流水灯,EDA设计,fpga开发

2.2 添加源文件

(1)打开Add Sources的对话框,点击Add or create design sources。
EDA设计:流水灯,EDA设计,fpga开发
(2)选择Create File,然后在弹出的框中输入File name,点击OK。
EDA设计:流水灯,EDA设计,fpga开发
(3)点击Finish。
EDA设计:流水灯,EDA设计,fpga开发
(4)输入设计模块所需的端口,并设置端口方向。如果端口为总线型,勾选Bus选项,并通过MSB和LSB确定总线宽度。最后点击OK。
EDA设计:流水灯,EDA设计,fpga开发(5)点击新建的源文件,添加源程序
EDA设计:流水灯,EDA设计,fpga开发
源程序如下所示:

module flowfight(     //声明模块名,方便后面的调用
    input clk,        //声明端口的输入输出信号
    input rst,
    output [15:0] led
    );
    reg [23:0] cnt_reg;    //寄存24位的中间参量,为下面时钟分频做准备
    reg [15:0] light_reg;   //对应16位的输出信号led
    always @ (posedge clk)   //clk上升沿触发
    begin
    if(!rst)   cnt_reg <= 0;        //rst为0时,cnt_reg赋值为0
    else   cnt_reg <= cnt_reg + 1;  //rst为1时, cnt_reg加一
    end
    always @ (posedge clk)    //clk上升沿触发
    begin
    if (!rst)
       light_reg <= 16'h 0003;   // light_reg初始赋值,第0,1位为高电平
    else if (cnt_reg == 24'hffffff)  //利用cnt_reg,进行时钟分频,方便硬件观察现象
    begin
    if (light_reg == 16'hc000)   //流水灯循环一个流程后
     light_reg <= 16'h0003;    //重新对light_reg初始赋值,第0,1位为高电平
    else
    light_reg <= light_reg << 1; //流水灯左移一位
    end
    end
    assign  led = light_reg;   //将寄存的light_reg的值赋值到led输出端口
endmodule

2.3 添加约束文件

(1)打开Add Sources的对话框,点击Add or create constraints。
EDA设计:流水灯,EDA设计,fpga开发
(2)选择Create File,然后在弹出的框中输入File name,点击OK。
EDA设计:流水灯,EDA设计,fpga开发(3)点击Finish。
EDA设计:流水灯,EDA设计,fpga开发(4)点击新建的约束文件,添加约束程序
EDA设计:流水灯,EDA设计,fpga开发
约束程序如下所示:

set_property PACKAGE_PIN K3 [get_ports {led[0]}]
set_property PACKAGE_PIN M1 [get_ports {led[1]}]
set_property PACKAGE_PIN L1 [get_ports {led[2]}]
set_property PACKAGE_PIN K6 [get_ports {led[3]}]
set_property PACKAGE_PIN J5 [get_ports {led[4]}]
set_property PACKAGE_PIN H5 [get_ports {led[5]}]
set_property PACKAGE_PIN H6 [get_ports {led[6]}]
set_property PACKAGE_PIN K1 [get_ports {led[7]}]
set_property PACKAGE_PIN K2 [get_ports {led[8]}]
set_property PACKAGE_PIN J2 [get_ports {led[9]}]
set_property PACKAGE_PIN J3 [get_ports {led[10]}]
set_property PACKAGE_PIN H4 [get_ports {led[11]}]
set_property PACKAGE_PIN J4 [get_ports {led[12]}]
set_property PACKAGE_PIN G3 [get_ports {led[13]}]
set_property PACKAGE_PIN G4 [get_ports {led[14]}]
set_property PACKAGE_PIN F6 [get_ports {led[15]}]
set_property PACKAGE_PIN P15 [get_ports rst]
set_property PACKAGE_PIN P17 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports {led[15]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[14]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[13]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[12]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[11]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[10]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[9]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[8]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {led[3]}]
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 clk]
set_property IOSTANDARD LVCMOS33 [get_ports rst]

2.4 添加仿真文件,并仿真

(1)打开Add Sources的对话框,点击Add or create simulation sources。
EDA设计:流水灯,EDA设计,fpga开发(2)选择Create File,然后在弹出的框中输入File name,点击OK。
EDA设计:流水灯,EDA设计,fpga开发(3)点击Finish。

EDA设计:流水灯,EDA设计,fpga开发
(4)点击OK。
EDA设计:流水灯,EDA设计,fpga开发
(5)点击新建的仿真文件,添加仿真程序

EDA设计:流水灯,EDA设计,fpga开发

仿真程序如下所示:

module con_flowfight1(
    );
       reg clk;
       reg rst;
       wire [15:0] led;
       flowfight u0(   //调用源程序,并给调用的模块进行命名
       .clk(clk),       //将端口映射进行例化名
       .rst(rst),
       .led(led));
       parameter PERIOD = 10;  //参数声明,并赋值为10
       always                 //每隔5ns,时钟翻转一次
       begin
       clk = 1'b0;
       #(PERIOD/2) clk = 1'b1;
       #(PERIOD/2);
       end
       initial     //对clk,rst进行赋值
       begin
       clk = 1'b0;
       rst = 1'b0;
       #100;      
       rst = 1'b1;
       #100;
       rst = 1'b0;
      #100;
       rst = 1'b1;
       end
endmodule

(6)点击左侧Run simulation下的Run Behavioral simulation进行仿真。
EDA设计:流水灯,EDA设计,fpga开发

2.5 生成比特文件,并进行硬件仿真

(1)如下图所示,点击Setting 下的_bin_file,可以保存生成的Bit文件
EDA设计:流水灯,EDA设计,fpga开发
(2)如图点击Generate Bitstream,工程会自动完成综合、实现、Bit文件生成的工程
EDA设计:流水灯,EDA设计,fpga开发
(3)点击Open Target,选择Auto Connect连接到板卡。
EDA设计:流水灯,EDA设计,fpga开发
(4)选择生成的bit文件对FPGA芯片进行编程仿真。
EDA设计:流水灯,EDA设计,fpga开发

三、 仿真结果

  如下图所示,该仿真结果是流水灯循环一个周期的过程。其中高电平表示亮灯,从led[0],led[1]亮起,逐渐向led的高位循环一位,其结果和预期相符。
EDA设计:流水灯,EDA设计,fpga开发

四、 硬件验证

  下图是流水灯实物仿真的其中的一个过程:
EDA设计:流水灯,EDA设计,fpga开发

五、 问题解决

  1.问题:添加的源文件/仿真文件,在保存时,显示有错误警示,并且点击错误查询,总是指向module的第一行。
  解决办法:我在源文件/仿真文件命名时,没有太过注意,应该满足: (1) 源文件保存的文件名必须和源文件module后面的文件名一致;(2)仿真文件保存的文件名也必须和仿真文件module后面的文件名一致。
  2.问题:添加的仿真程序,在调用源程序时,显示错误。
  解决办法:仿真文件里在调用源程序时,‘U0’前那个文件名必须和源文件中module后的文件名一致。其中‘U0’是是模块的命名,没有特定要求。
  3.问题:硬件仿真时,不了解其操作流程。
  解决办法:在进行硬件仿真时,确实不知道该怎么做,后来询问的同学,才完成流程,出来实验现象。
  4.问题:看不懂流水灯源代码的程序,尤其是其中设定的中间24位的参量cnt_reg,不知道他起到的作用是什么。
  解决办法:仔细的研读了流水灯的程序,例如<<是左移一位。其中使用cnt_reg,编写的一段程序是为了降低时钟的频率,实现时钟的分频。由于EGO1上时钟的频率是100Mhz,人眼无法识别流水灯的现象,因此需要时钟分频,增大流水灯一次循环的时间,方便人眼识别。

六、 心得体会

  这是我第一次接触Vivado,在进行流水灯的实验中,虽然不用自己编写代码,但是由于并不了解Vivado的开发流程,也是遇到了很多问题,但是最终都顺利的解决了,但是也是感触良多。
  首先在进行程序仿真时,总是显示错误,但是程序又没有问题。在这一点上,确实花费了很长的时间,我开始时,逐字逐句的读取了log,error等等,然而并没用找到解决办法。后来百度后,发现可能是杀毒软件的问题,我又试着重新安装了Vivado,最后成功进行了仿真。
  再者进行流水灯的实验时,只是按照学习通上的步骤按图索骥完成了实验,不太懂得源程序,仿真程序,约束程序之间的关系。百度查询了一些资料,才知道,其中仿真时,只需要用到源程序,仿真程序,而约束文件是负责连接源程序中端口信号和EGO1板子上对应的引脚的。因此在进行实物仿真时,可以先在Vivado上进行仿真,观察现象是否符合预期。
  最后一点体会就是看懂流水灯的程序花了很长时间,但是也对我后续编写源代码提供了很大的助力。文章来源地址https://www.toymoban.com/news/detail-778995.html

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

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

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

相关文章

  • FPGA综合设计实验:基于PWM脉宽调制的呼吸流水灯设计

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

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

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

    2024年02月06日
    浏览(45)
  • FPGA开发之Vivado安装及HLS环境配置,并实现流水灯实例

    HLS(High-Level Synthesis)高层综合,就是将 C/C++的功能用 RTL 来实现,将 FPGA 的组件在一个软件环境中来开发,这个模块的功能验证在软件环境中来实现,无缝的将硬件仿真环境集合在一起,使用软件为中心的工具、报告以及优化设计,很容易的在 FPGA 传统的设计工具中生成 IP。

    2024年02月05日
    浏览(51)
  • fpga--流水灯

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

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

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

    2024年02月16日
    浏览(48)
  • 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日
    浏览(47)
  • FPGA学习——verilog实现流水灯

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

    2024年02月16日
    浏览(56)
  • FPGA新起点V1开发板(三)——Quartus II软件的使用(流水灯的烧录以及sof转jic的方法记录)

    先创建一个工程文件夹 flow_led 再创建四个子文件夹 doc存放工程的设计文档或者其他一些datasheet文档、数据手册 par存放工程文件 rtl存放设计文件,也就代码 sim存放工程的仿真文件 第一个第四个可以为空,但是做此可以有良好的习惯 这是打开一个工程向导 这是选择FPGA的芯片

    2024年02月04日
    浏览(43)
  • FPGA入门————LED流水灯(超详细教程)

    本文使用软件为vivado,其实用哪个软件都是一样的,主要是掌握核心编程思想。 如有需要下载vivado软件下载可以参考: vivado及ISE各版本软件下载方法、链接及详细步骤,官方网页下载_ise软件下载_千寻xun的博客-CSDN博客 目录 一、新建工程及设计文件 二、编写LED流水灯程序

    2024年02月08日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包