查看: 1776|回复: 4

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

[复制链接]
  • TA的每日心情
    开心
    2019-11-4 13:48
  • 签到天数: 14 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2020-1-13 09:45:25 | 显示全部楼层 |阅读模式
    分享到:
    设计内容
           将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,便于观察
                                  





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



    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-1-28 07:34
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2020-1-20 09:31:52 | 显示全部楼层
    认真学习感谢分享
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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



    手机版|小黑屋|与非网

    GMT+8, 2024-4-27 04:53 , Processed in 0.152996 second(s), 25 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.