|
发表于 2012-2-19 21:54:37
|
显示全部楼层
找出前一段时间用EPM240做的一个水滴流水灯,用了211个逻辑单元。
module led(clk0,clk1,led);
input clk0;
input clk1;
output [21:0] led;
reg [21:0] div;
reg [21:0] led;
reg [4:0] t;
reg [4:0] cmp0,cmp1,cmp2,cmp3,cmp4,cmp5,cmp6,cmp7,cmp8,cmp9,cmp10,cmp11,cmp12,cmp13,cmp14,cmp15,cmp16,cmp17,cmp18,cmp19,cmp20,cmp21;
parameter c=1;
parameter level=32-12;
parameter div_val=1800000;
initial
begin
div=22'd0;
led=17'h1ffff;
t=level;
cmp0=c*0;
cmp1=c*1;
cmp2=c*2;
cmp3=c*3;
cmp4=c*4;
cmp5=c*5;
cmp6=c*6;
cmp7=c*7;
cmp8=c*8;
cmp9=c*9;
cmp10=c*10;
cmp11=c*11;
cmp12=c*12;
cmp13=c*13;
cmp14=c*14;
cmp15=c*15;
cmp16=c*16;
cmp17=c*17;
cmp18=c*18;
cmp19=c*19;
cmp20=c*20;
cmp21=c*21;
end
always @ (posedge clk0)
begin
div=div+1;
if(div==div_val)
div=0;
if(div==0)
begin
cmp0=cmp0-1;
cmp1=cmp1-1;
cmp2=cmp2-1;
cmp3=cmp3-1;
cmp4=cmp4-1;
cmp5=cmp5-1;
cmp6=cmp6-1;
cmp7=cmp7-1;
cmp8=cmp8-1;
cmp9=cmp9-1;
cmp10=cmp10-1;
cmp11=cmp11-1;
cmp12=cmp12-1;
cmp13=cmp13-1;
cmp14=cmp14-1;
cmp15=cmp15-1;
cmp16=cmp16-1;
cmp17=cmp17-1;
cmp18=cmp18-1;
cmp19=cmp19-1;
cmp20=cmp20-1;
cmp21=cmp21-1;
end
end
always @ (posedge clk0)
begin
t=t+1;
if(t==0)
t=level;
if((t<cmp0))
led[0]=1'b0;
else
led[0]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp1)
led[1]=1'b0;
else
led[1]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp2)
led[2]=1'b0;
else
led[2]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp3)
led[3]=1'b0;
else
led[3]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp4)
led[4]=1'b0;
else
led[4]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp5)
led[5]=1'b0;
else
led[5]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp6)
led[6]=1'b0;
else
led[6]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp7)
led[7]=1'b0;
else
led[7]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp8)
led[8]=1'b0;
else
led[8]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp9)
led[9]=1'b0;
else
led[9]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp10)
led[10]=1'b0;
else
led[10]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp11)
led[11]=1'b0;
else
led[11]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp12)
led[12]=1'b0;
else
led[12]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp13)
led[13]=1'b0;
else
led[13]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp14)
led[14]=1'b0;
else
led[14]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp15)
led[15]=1'b0;
else
led[15]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp16)
led[16]=1'b0;
else
led[16]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp17)
led[17]=1'b0;
else
led[17]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp18)
led[18]=1'b0;
else
led[18]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp19)
led[19]=1'b0;
else
led[19]=1'b1;
end
always @ (posedge clk0)
begin
if(t<cmp20)
led[20]=1'b0;
else
led[20]=1'b1;
if(t<cmp21)
led[21]=1'b0;
else
led[21]=1'b1;
end
endmodule |
|