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

2010-3-6 12:11 2711 7 7 分类: FPGA/CPLD

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


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

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)

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条