|
4. 此我们用下面的一小段代码作为范例:其功能是驱动8 个发光管轮流点亮,因为是采用
了10M 频率晶体的边沿触发,所以速度很快,为了使我们肉眼能够看的清楚其工作的
流程,我们在里面安放了一个计数器,计数器计每次满一次就点亮一个发光管,依次类
推。。。。。。其源程序如下:
/* 流水灯的Verilog-HDL 描述 */
module LEDWATER(reset,CLK,LED);
input reset, CLK;
output [7:0] LED;
reg [7:0] LED;//=8'b11111111;
reg [17:0] buffer;//=0;
reg exchange;
always@(posedge CLK)
if(reset==0) //如果复位了就熄灭全部的灯
begin
LED=8'b1111_1111;
buffer=0;
exchange=0;
end
else
begin
if (exchange==0)
begin
buffer=(buffer +1);
if ( buffer == 17'b111111111111111111111111)
begin
buffer=0;
LED=(LED-1);
if(LED==8'b0000_0000)
begin
LED=8'b1111_1111;
exchange=1;
end
end
end
if(exchange==1)
begin
buffer=(buffer +1);
if ( buffer == 17'b111111111111111111111111)
begin
buffer=0;
LED=(LED>>1);
if(LED==8'b00000000)
begin
LED=8'b1111_1111;
exchange=0;
end
end
end
end
endmodule
注意:VERILOG HDL 的代码编写风格,begin end 代替了C 语言中的大括号{}。 |
|