Vivado 时序逻辑 计数器

Vivado 摸鱼记录 Day_3 ╮( ̄▽ ̄)╭

1. review

        已经学习过组合逻辑电路 译码器Vivado 3-8译码器 4-16译码器-CSDN博客

        以及Vivado使用流程Vivado 使用流程 二选一数据选择器-CSDN博客

2. 时序逻辑计数器

2.1 分析

        时序逻辑对比组合逻辑,增加了clk,即时钟信号。

        以led每500ms亮灭为例,学习时序逻辑语法。

2.2 design sources

module led_500ms(input clk , input reset_n , output reg led);

             / /led每秒交替闪烁500ms    //使用D触发器4位

            //50MHz  20ns   500ms/20ns = 25000000 25个4位D触发器

            reg [24:0] counter ;

    always@(posedge clk or negedge reset_n) //计数counter

            if(!reset_n)

                counter <= 0;

            else if(counter == 25000000-1)

                counter <= 0;

            else

                counter <= counter + 1'd1;

      

    always@(posedge clk or negedge reset_n)//led 

            if(!reset_n)

                led <= 0;

            else if(counter == 25000000-1)

                led <= !led;     

            //else led <= led;

endmodule

        always 是并行的 所以可以分开写  

               分开写方便修改 counter / led

        reg 在always@块中,被赋值对象类型为reg

        posedge 上升沿  

        negedge 下降沿        

        //else led <= led;  

                对于时序逻辑无else默认保持

                组合逻辑不可无else

        25000000-1 对于计数器:0-1 1-2 2-3 3-0 0-3是四位计数器 故需要减一

                   //此处可用 parameter 后续摸鱼记录会写滴

2.3 simulation sources

`timescale 1ns / 1ns

module led_500ms_tb();

            reg clk , reset_n  ;

            wire led ;

            led_500ms led_500ms2( .clk(clk) , .reset_n(reset_n) , .led(led) );

    

            initial clk = 1 ;//初始化时钟高电平    

            always #10 clk = ~clk ;  //50MHz 10ns翻转一次

            initial

                begin

                        reset_n = 0 ;

                        #201 ;

                        reset_n = 1 ;

                        #2000000000;

                        $stop;

                end

        

endmodule

        initial clk = 1 ;//初始化时钟高电平    

        always #10 clk = ~clk ;  //50MHz 10ns翻转一次          //初始化时钟

        led_500ms led_500ms2( ... );  //一定要记得写红色的名字鸭!!

                     //布吉岛是谁每次只记得改完括号参数就报错T_T

2.4 simulation

2.4.1 counter == 25000000

2.4.2 counter == 25000000 -1

        所以计数器这里要注意-1

        //对于parameter 下次摸鱼再写╮( ̄▽ ̄)╭

  • 28
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值