• 排列成一排的灯依次闪亮0.5s,借助野火的波形图进行说明,定义时钟信号sys_clk,定义复位信号sys_rst_n,控制4个灯闪亮定义位宽为4,每一个比特位控制一个LED灯。定义计数器cnt计数0.5s的时间为2.5e7(50MHz周期为20ns),表示计数器从0计数到2.5e7-1。用脉冲信号cnt_flag作为条件控制流水的效果,当计数器计数到最后一位减1时,保持一个时钟周期的高电平。当检测到脉冲标志信号cnt_flag时,点亮下一个LED灯。用右移运算符 >> 实现灯向右移动,左移和右移是在空位补零。当最后一个灯亮完后要实现第一个灯亮起,用判断语句 (led_out == 4'b0001) && (cnt_flag == 1'b1) 实现,且当标志信号有效时才实现移位。

  • 根据zedboard板子上灯亮起时为高电平则当led_out=4’b1000时为亮灭灭灭,按下复位按键时为高电平将sys_rst_n修改为sys_rst。

  • 以下代码是模仿视频示例时钟为50MHz,4个灯闪烁的效果

module water_led #(parameter CNT_MAX = 25'd24_999_999)
(input wire sys_clk,input wire sys_rst,output reg [3:0] led_out
);reg [24:0] cnt = 25'd0;reg cnt_flag = 0; always @(posedge sys_clk or posedge sys_rst)if(sys_rst == 1'b1)cnt <= 25'd0;else if(cnt == CNT_MAX)cnt <= 25'd0;else cnt <= cnt + 25'd1;always @(posedge sys_clk or posedge sys_rst)if(sys_rst == 1'b1)cnt_flag <= 1'b0;else if(cnt == (CNT_MAX - 25'd1))cnt_flag <= 1'b1;else cnt_flag <= 1'b0;always @(posedge sys_clk or posedge sys_rst)if(sys_rst == 1'b1)led_out <= 4'b1000;else if( (led_out == 4'b0001) && (cnt_flag == 1'b1) )led_out <= 4'b1000;else if (cnt_flag == 1'b1)led_out <= led_out >> 1;elseled_out <= led_out;
endmodule
  • 修改为8个灯闪亮
module water_led #(parameter CNT_MAX = 27'd49_999_999)
(input wire sys_clk,input wire sys_rst,output reg [7:0] led_out
);reg [26:0] cnt = 27'd0;reg cnt_flag = 0; always @(posedge sys_clk or posedge sys_rst)if(sys_rst == 1'b1)cnt <= 27'd0;else if(cnt == CNT_MAX)cnt <= 27'd0;else cnt <= cnt + 27'd1;always @(posedge sys_clk or posedge sys_rst)if(sys_rst == 1'b1)cnt_flag <= 1'b0;else if(cnt == (CNT_MAX - 27'd1))cnt_flag <= 1'b1;else cnt_flag <= 1'b0;always @(posedge sys_clk or posedge sys_rst)if(sys_rst == 1'b1)led_out <= 8'b1000_0000;else if( (led_out == 8'b0000_0001) && (cnt_flag == 1'b1) )led_out <= 8'b1000_0000;else if (cnt_flag == 1'b1)led_out <= led_out >> 1;elseled_out <= led_out;
endmodule
  • 编写仿真代码testbench
module testbench();reg sys_rst;reg sys_clk;wire [7:0] led_out;initial beginsys_clk = 1'b1;sys_rst <= 1'b1;#20sys_rst <= 1'b0;endalways #10 sys_clk = ~sys_clk;water_led#(.CNT_MAX(27'd24))water_led_inst(.sys_clk(sys_clk),.sys_rst(sys_rst),.led_out(led_out));
endmodule

  • 管脚约束文件
set_property PACKAGE_PIN U14 [get_ports {led_out[7]}]
set_property PACKAGE_PIN U19 [get_ports {led_out[6]}]
set_property PACKAGE_PIN W22 [get_ports {led_out[5]}]
set_property PACKAGE_PIN V22 [get_ports {led_out[4]}]
set_property PACKAGE_PIN U21 [get_ports {led_out[3]}]
set_property PACKAGE_PIN U22 [get_ports {led_out[2]}]
set_property PACKAGE_PIN T21 [get_ports {led_out[1]}]
set_property PACKAGE_PIN T22 [get_ports {led_out[0]}]set_property PACKAGE_PIN P16 [get_ports sys_rst]set_property PACKAGE_PIN Y9 [get_ports sys_clk]set_property IOSTANDARD LVCMOS33 [get_ports *]

zedboard实现流水灯相关推荐

  1. Zedboard学习(三):PL下流水灯实验

    zynq系列FPGA分为PS部分和PL部分. PL: 可编程逻辑 (Progarmmable Logic), 就是FPGA部分. PS: 处理系统 (Processing System) , 就是与F ...

  2. ZedBoard+Vivado(一)——纯PL实现流水灯

    硬件:Zedboard 软件:Vivado2018.2 + Win10 本文参考了http://blog.chinaaet.com/cuter521/p/35946,原文代码有错误,已更正. 1 设计 ...

  3. 一步步玩pcDuino3--mmc下的裸机流水灯

    第一部分是玩pcduino3下的裸机.这个过程能够让我们更好的理解嵌入式系统,熟悉我们使用的这个平台. 首先介绍下开发环境: 虚拟机:VMware® Workstation 10.0.2 build- ...

  4. 经典模式流水灯实验的个人总结和思考

    问题叙述: 当拨码开关SW3处于OFF时, LED停止不动,只有一个LED处于点亮,并且点亮的LED不会变化:而SW3处于ON状态时,流水灯处于流动状态.导航按键S2被按下后,LED流动方向是从上到下 ...

  5. 记录使用Spartan-6进行流水灯控制的实验

    整个过程我没有记录,因为之前记录过了,都是一样的,这里只是记录了下思路.之前的博文:全过程实现一个最简单的FPGA项目之PWM蜂鸣器控制 这些LED的正极连接510欧姆限流电阻到3.3V电压,负极都连 ...

  6. 【原创】基于ARM的流水灯仿真示例

    本设计使用的仿真工具是Proteus 7.4,IDE是ADS 1.2,芯片是LPC2134 在Proteus中的电路图如下图所示: 本设计使用的是周立功的LPC2131的工程模板.LPC2131的RA ...

  7. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】【实验一】流水灯模块

    实验一:流水灯模块 对于发展商而言,动土仪式无疑是最重要的任务.为此,流水灯实验作为低级建模II的动土仪式再适合不过了.废话少说,我们还是开始实验吧. 图1.1 实验一建模图. 如图1.1 所示,实验 ...

  8. ISIS 7 Professional仿真——键控流水灯

    功能:K1是总开关,当K1首次按下时,流水灯由下往上流动:当K2按下时停止流动,且全部灯灭,当K3按下时使灯由上往下流动,K4则使灯由下往上流动. LED灯循环速度可以调整延时函数的整型调用参数值来改 ...

  9. 流水灯实例,点亮发光管LED并闪烁(查表操作)

    功能:流水灯实例,点亮发光管LED并闪烁

最新文章

  1. 范成法加工matlab_光学非球面技术原理与加工技术
  2. RSA的密钥把JAVA格式转换成C#的格式
  3. smartform 与调用程序间内表数据传递方法
  4. Seam - 无缝集成 JSF,第 3 部分: 用于 JSF 的 Ajax
  5. Unity手游开发札记——移动平台的天气系统实现
  6. AndroidStudio安卓原生开发_UI控件_Spinner用法_下拉选择框---Android原生开发工作笔记100
  7. 专家看台:阿里软件研发总监叶伟:如何处理技术和需求的矛盾
  8. 小程序路径与APPID获取
  9. dcs world f15c教学_烟台TSXP57353M【四点零自动化】DCS系统
  10. 机器学习——人工神经网络(NN)
  11. IMO2019 D1T1解答
  12. JavaScript 之 调用outlook发邮件功能mailto(附带换行问题)
  13. 哆啦A梦和小猪佩奇(Python实现)
  14. Python3 面向对象编程进阶
  15. pinpoint全链路监控安装部署(支持dubbo)
  16. 问卷调查系统的设计与实现【源码:文档:教程】
  17. 笔记本电脑的鼠标触控面板问题
  18. Cython配置安装(ubuntu)
  19. 技术视角看我的一码通-系列2
  20. 印尼医疗传感器行业调研报告 - 市场现状分析与发展前景预测

热门文章

  1. css3禅密花园叫什么名字_CSS秘密花园:灵活的椭圆形
  2. html div 边框只显示右侧,CSS-只显示角边框
  3. php分页显示多少页,php实现分页显示
  4. vue element-UI的树形结构,父级关联,返回数据反选的问题
  5. vue中使用flexible.js并配合px2rem-loader实现移动端布局
  6. 【java笔记】打印流printStream
  7. java水晶报表pull模式_水晶报表Pull模式 每次调用水晶报表的时候都要输入数据库密码的解决方案...
  8. vue 渲染函数处理slot_Vue源码全面解析七 initRender 函数(处理渲染相关的函数)...
  9. android recyclerview item自适应高度_web前端入门到实战:css让一个盒子的高度自适应屏幕剩余的部分...
  10. PowerDesigner生成的建表脚本中如何把对象的双引号去掉