目的:在ED板上的8个数字显示器打出HELLO,用时钟控制它循环,就是HELLO往左边跑
代码:
module div(clk,clkout);
input clk;
output clkout;
reg[20:0]m;
always@(posedge clk)
m=m+1;
assign clkout=m[20];
endmodule
module counter(clk,rst,cnt);
input clk,rst;
output[3:0]cnt;
reg [3:0]cnt1;
parameter d=4'b1001;
always@(posedge clk or posedge rst)
begin
if(rst) cnt1=0;
else if(cnt1==d) cnt1=0;
else cnt1=cnt1+1;
end
assign cnt=cnt1;
endmodule
module connect(cnt,a7,a6,a5,a4,a3,a2,a1,a0);
input[3:0]cnt;
output[2:0]a7,a6,a5,a4,a3,a2,a1,a0;
reg a7,a6,a5,a4,a3,a2,a1,a0;
always@(cnt)
case(cnt)
4'b0001:
begin
a7=3'b111;a6=3'b111;a5=3'b111;a4=3'b000;a3=3'b001;a2=3'b010;a1=3'b010;a0=3'b011;
end
4'b0010:
begin
a7=3'b111;a6=3'b111;a0=3'b111;a5=3'b000;a4=3'b001;a3=3'b010;a2=3'b010;a1=3'b011;
end
4'b0011:
begin
a7=3'b111;a1=3'b111;a0=3'b111;a6=3'b000;a5=3'b001;a4=3'b010;a3=3'b010;a2=3'b011;
end
4'b0100:
begin
a7=3'b000;a6=3'b001;a5=3'b010;a4=3'b010;a3=3'b011;a2=3'b111;a1=3'b111;a0=3'b111;
end
4'b0101:
begin
a7=3'b111;a6=3'b111;a5=3'b111;a4=3'b111;a3=3'b111;a2=3'b111;a1=3'b111;a0=3'b000;
end
4'b0110:
begin
a7=3'b111;a6=3'b111;a5=3'b111;a4=3'b111;a3=3'b111;a2=3'b111;a1=3'b000;a0=3'b001;
end
4'b0111:
begin
a7=3'b111;a6=3'b111;a5=3'b111;a4=3'b111;a3=3'b111;a2=3'b000;a1=3'b001;a0=3'b010;
end
4'b1000:
begin
a7=3'b111;a6=3'b111;a5=3'b111;a4=3'b111;a3=3'b000;a2=3'b001;a1=3'b010;a0=3'b010;
end
default:
begin
a7=3'b111;a6=3'b111;a5=3'b111;a4=3'b111;a3=3'b111;a2=3'b111;a1=3'b111;a0=3'b111;
end
endcase
endmodule
module top(a,ENX);
input[2:0]a;
output[6:0]ENX;
reg[6:0]ENX;
always@(a)
case(a)
3'b000:ENX=7'b0001001;
3'b001:ENX=7'b0000110;
3'b010:ENX=7'b1000111;
3'b011:ENX=7'b1000000;
default:ENX=7'b1111111;
endcase
endmodule
module wyt2(clk,rst,ENX7,ENX6,ENX5,ENX4,ENX3,ENX2,ENX1,ENX0);
input clk,rst;
output [6:0]ENX7,ENX6,ENX5,ENX4,ENX3,ENX2,ENX1,ENX0;
div u0(clk,clkout);
counter u1(clkout,rst,cnt);
connect u2(cnt ,a7,a6,a5,a4,a3,a2,a1,a0);
top u3(a7,ENX7);
top u4(a6,ENX6);
top u5(a5,ENX5);
top u6(a4,ENX4);
top u7(a3,ENX3);
top u8(a2,ENX2);
top u9(a1,ENX1);
top u10(a0,ENX0);
endmodule
第一个模块是用来分频的,第二个是计数,第三个是用来赋值的,把各个数对应的a赋过去,第四个是控制显示频的,第5个就是顶层模块