新闻  |   论坛  |   博客  |   在线研讨会
笔记3 john计数器!流水灯?
0750long | 2010-03-10 21:18:21    阅读:1631   发布文章

笔记3 john计数器!流水灯?

 

module lesson03

(

       CLK, RST,

       LED0, LED1, LED2, LED3,

);

       input CLK;

       input RST;

       output LED0,LED1,LED2,LED3;

      

       /////////////////////////////////////

       //33ms Counter

      

       reg [23:0]Counter;

      

       always @ (posedge CLK or negedge RST)

              if (!RST)

                     Counter <= 1'd0;

              else

                     Counter <= Counter + 1'b1;

             

       /////////////////////////////////////

       //John fucntion

      

       reg [3:0]LED_Reg;

      

       always @ (posedge CLK or negedge RST)

              if(!RST)

                     LED_Reg <= 4'b0001;

              else if (Counter == 24'hffffff)

                     LED_Reg <= {LED_Reg[0], LED_Reg[3:1]};

                    

       /////////////////////////////////////

      

       assign {LED0, LED1, LED2, LED3} = LED_Reg;

 

endmodule

 

看到这个实例,我说不出心中的激动,它让我想起多么怀念的流水等实验。这个实验很简单,就是使用一个计数寄存器计数一个恒定的间隔时间,然后另一个寄存分别执行值的Rotate 工作。以上的代码,只有一个问题点。就是 "{}" 位拼接运算符,它是如何工作,自己好好翻书吧,很简单而已。

 

以上的代码是从实验源码那里精简出来,个人一项喜欢简洁而且怕麻烦和猥琐的东西。如果该代码觉得很不适合,那么就无视这篇笔记的存在吧。

 

补上一个:延迟时间 =  (2^24 - 1) * (1/50Mhz)

                   = 大约335ms  (也就是说流水灯的间隔为335ms)

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客