笔记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)
文章评论(0条评论)
登录后参与讨论