LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭
FPGA 8位流水灯设计
Yuk1n0 2018-03-08

module flashled(

input clk,

input switch,

output reg led1,led2,led3,led4,led5,led6,led7,led8

);

reg [26:0]count;

reg [2:0]sel;

reg [7:0]wave;

always@(posedge clk)//divide 100MHz to 1Hz;

begin

if (count[26] == 1 & count[25] == 1)//2^26 + 2^25 = 100,663,296;

begin

divide <= divide + 1;//if 100M,divide + 1;

count <= 0;//if 100M,clear count;

else

divide <= 0;i//divide keep zero until 100M;

count <= count + 1;//counter count until 100M;

end

end

always@(posedge divide)//sel 8bit counter

begin

sel <= sel + 1;//every 100M,sel + 1,until sel = 3'b111;

end


/*ANOTHER WAY TO DRIVE THE LED

always@(*)

begin

led1 = ~sel[2] * ~sel[1] * ~sel[0] * switch;

led2 = ~sel[2] * ~sel[1] *  sel[0] * switch;

led3 = ~sel[2] *  sel[1] * ~sel[0] * switch;

led4 = ~sel[2] *  sel[1] *  sel[0] * switch;

led5 =  sel[2] * ~sel[1] * ~sel[0] * switch;

led6 =  sel[2] * ~sel[1] *  sel[0] * switch;

led7 =  sel[2] *  sel[1] * ~sel[0] * switch;

led8 =  sel[2] *  sel[1] *  sel[0] * switch;

end


endmodule

*/


always@(*)//3-8decoder

begin

case(sel)

0: wave = 8'b00000001;

1: wave = 8'b00000010;

2: wave = 8'b00000100;

3: wave = 8'b00001000;

4: wave = 8'b00010000;

5: wave = 8'b00100000;

6: wave = 8'b01000000;

7: wave = 8'b10000000;

endcase

end

always@(*)//switch&wave drive led

begin

led1 = wave[0] * switch;

led2 = wave[1] * switch;

led3 = wave[2] * switch;

led4 = wave[3] * switch;

led5 = wave[4] * switch;

led6 = wave[5] * switch;

led7 = wave[6] * switch;

led8 = wave[7] * switch;

end


endmodule


推荐文章
评论(0)
分享到
转载我的主页