1、用FPGA实现彩灯控制电路的设计。
2、彩灯控制电路具有1个复位按钮,当按钮按下后开始彩灯控制电路的工作。
3、彩灯控制电路至少有4种以上的控制模式,如左移、右移、循环移位和闪烁等,彩灯控制电
路开始工作后,各工作模式能自动切换。
4、用12只发光二极管(LED)显示彩灯控制电路的工作模式。
代码说明如下,请查看:
module cd2_6 (CLK,CLR,EN,S1,S2,LED); //定义模块名和输入、输出、使能、控制端口
input CLK,CLR,EN,S1,S2; //输入端口说明
output reg [11:0] LED; //输出端口说明
reg temp; //在always中被赋值的要定义为reg类型
reg c; //同上一条
initial
LED='b000000000001; //初始化LED状态为1
always @(posedge CLK) //posedge CLK表示always语句对CLK信号上升沿敏感,每次上升沿到来就执行always语句块
begin //begin 和end搭配,相当于括号()
if(EN==0) //使能端口EN==0,就执行下面的begin end之内的指令
begin
case({S1,S2}) //S1、S2为控制端,{}为位拼接运算符
'b00: //S1=0、S2=0时,执行下方的begin-end之间语句,为循环移位功能
begin
c=c+'b1; //c+1,因为c是1位二进制数,所以c要么等于0,要么等于1(超过1的部分被舍弃)
if(c=='b1) LED='b100100100100; // 部分LED亮,部分灭
else LED='b011011011011; // 上次亮的,这次灭;上次灭的,这次亮;
end
'b01: //S1=0、S2=1时,执行闪烁功能
begin
c=c+'b1;
if(c=='b1) LED='b000000000000; //LED全灭(或全亮)
else LED='b111111111111; //LED全亮(或全灭)
end
'b10: //S1=1、S2=0时,执行右移功能
begin
temp=LED[0]; //因为要实现首尾状态互换,所以用temp作为中间变量
LED=LED>>1; //右移
LED[11]=temp; //最后一位=首位
//例如:1010,temp=0,移位后x101,在对最后一位赋值,x=temp=0,所以:1010->0101,实现循环移位
end
'b11: //S1=1、S2=1时,执行左移功能,原理同右移
begin
temp=LED[11];
LED=LED<<1;
LED[0]=temp;
end
endcase
end
if (CLR==1) LED=000000000001; //如果复位信号CLR==1,LEN复位为初始状态
end
endmodule
这不是Verilog吗?