4回答

0收藏

基础实践-------流水灯设计和实现

FPGA/DSP FPGA/DSP 3530 人阅读 | 4 人回复 | 2020-01-13

设计内容
       将4个LED每隔1s从左往右分别依次点亮熄灭,形成流水状。按复位键时进行复位,重新开始流水。
                                    
流程
       FPGA时钟频率为50MHz,所以要设置一个计数器就够,该计数器经历50 000 000个时钟周期,一个时钟周期20ns,共1s。设置一个Flag寄存器,计数达到要求数时产生一个高电压脉冲信号,LED检测到Flag信号进行流水操作。Flag信号目的在于仿真和下板的时候便于调试,代码书写良好规范。
循环过程led寄存器位拼接过程
                                    
原理图
                                          
led有共阴和共阳的,这里是共阴,高电平有效。
管脚led0:   D11
       led1:C11
       led2:   E10
       led3:F9
仿真文件
  • `timescale 1 ns/ 1 ns
  • module light_water_vlg_tst();
  • // constants
  • // general purpose registers
  • // test vector input registers
  • reg sys_clk;
  • reg sys_rst;
  • // wires
  • wire [3:0]  led;
  • // assign statements (IF any)
  • light_water i1 (
  •       .led(led),
  •       .sys_clk(sys_clk),
  •       .sys_rst(sys_rst)
  • );
  • initial
  • begin
  •      sys_clk = 1'd0;
  •      sys_rst = 1'd0;
  •      #100 sys_rst = 1'd1;
  •      #1000 $stop;
  • end
  • always
  • begin
  •       #10 sys_clk = ~sys_clk;
  • end
  • endmodule

[color=rgb(51, 102, 153) !important]复制代码

在仿真时将led变化缩短为6个时钟周期,也就是0~5计数,一个时钟周期为20ns,共120ns,便于观察
                              





游客,如果您要查看本帖隐藏内容请回复



关注下面的标签,发现更多相似文章
分享到:
回复

使用道具 举报

回答|共 4 个

倒序浏览

板凳

fmqwh626a

发表于 2020-1-20 09:31:52 | 只看该作者

认真学习感谢分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条