1 设计任务
基于VerilogHDL和状态机,完成学号显示控制电路设计。
例如学号:21002495
功能要求如下:
-用八个数码管显示;
-学号按照10hz的时钟的节拍从右而左进入,从学号的高位开始进入;
-8位学号全部进入后停顿5s,然后全部熄灭,再重新开始;
设计要求:
-设计要用状态机;
-信号源模块输出10hz的基准时钟,用于同步学号显示;
-设计应有的BCD码和7段码输出,仿真波形要有BCD学号;
分频模块:
module divider50M_10hz(
input clk_50M,
input reset_n,
output reg clk_10hz);
reg [25:0] cnt;
always@(posedge clk_50M or posedge reset_n)
begin if(reset_n)
cnt<=26'b0;
else begin
cnt=cnt+1'b1;
if(cnt==5000_000) //50M/10=5M,占空比为50%
cnt<=1'b0;
else if(cnt<2500_000)
clk_10hz=1'b0;
else if(cnt>=2500_000)
clk_10hz=1'b1;
end
end
endmodule
学号显示控制模块
module xuehao
(
clk,
q1, q2, q3, q4, q5, q6, q7, q8,
rst
);
input clk;
input rst;
output reg [3:0] q1, q2, q3, q4, q5, q6, q7, q8; //输出给译码器进行译码,用于学号输出的输出端
integer i = 1'd 0; //用于延时,给脉冲计数的临时变量
integer state = 4'b 0000; //状态变化
//学号:21002495的二进制码
parameter temp_1 = 4'b 0010, temp_2 = 4'b 0001,temp_3 = 4'b 0000,temp_4 = 4'b 0000,
temp_5 = 4'b 0010, temp_6 = 4'b 0100,temp_7 = 4'b 1001,temp_8 = 4'b 0101;
//给9种状态进行编码,S0--S8
parameter S0 = 4'b 0000, S1 = 4'b 0001, S2 = 4'b 0010, S3 = 4'b 0011,
S4 = 4'b 0100, S5 = 4'b 0101, S6 = 4'b 0110, S7 = 4'b 0111,
S8 = 4'b 1000;
always @(posedge clk or posedge rst)
begin if(rst)
begin
q1 = 4'b 1111; q2 = 4'b 1111; q3 = 4'b 1111; q4 = 4'b 1111;
q5 = 4'b 1111; q6 = 4'b 1111; q7 = 4'b 1111; q8 = 4'b 1111;
end
else case(state)
S0: //初始状态,输出全为1,使数码管熄灭
begin
state <= S1;
q1 = 4'b 1111; q2 = 4'b 1111; q3 = 4'b 1111; q4 = 4'b 1111;
q5 = 4'b 1111; q6 = 4'b 1111; q7 = 4'b 1111; q8 = 4'b 1111;
end
S1: begin q1 = temp_1; state <= S2;end
S2: begin q2 = temp_1;q1 = temp_2; state <= S3;end
S3: begin q3 = temp_1; q2 = temp_2;q1 = temp_3; state <= S4;end
S4: begin q4 = temp_1; q3 = temp_2; q2 = temp_3; q1 = temp_4;state <= S5;end
S5: begin
q5 = temp_1; q4 = temp_2; q3 = temp_3; q2 = temp_4;
q1 = temp_5;
state <= S6;
end
S6: begin
q6 = temp_1; q5 = temp_2; q4 = temp_3; q3 = temp_4;
q2 = temp_5;q1 = temp_6;
state <= S7;
end
S7: begin
q7 = temp_1; q6 = temp_2; q5 = temp_3; q4 = temp_4;
q3 = temp_5; q2 = temp_6; q1 = temp_7;
state <= S8;
end
S8: begin
if(i >= 50) //计数50个上升沿后,再转移到S0状态,即延时5s
begin
state <= S0;
i = 0; end
else
begin
i= i + 1;
q8 = temp_1; q7 = temp_2; q6 = temp_3; q5 = temp_4;
q4 = temp_5; q3 = temp_6; q2 = temp_7; q1 = temp_8;
end
end
default:
begin
q1 = 4'b 1111; q2 = 4'b 1111; q3 = 4'b 1111; q4 = 4'b 1111;
q5 = 4'b 1111; q6 = 4'b 1111; q7 = 4'b 1111; q8 = 4'b 1111;
end
endcase
end
endmodule
译码模块:
module my4_7decoder
(
in,
out,
en
);
input [3:0]in;
input en;
output reg [6:0] out;
always @(*)
begin
if(en)
out = 7'b 111_1111;
else
begin
case(in) //g-a //省略了一部分数字
4'b 0000: out = 7'b 100_0000;
4'b 0001: out = 7'b 111_1001;
4'b 0010: out = 7'b 010_0100;
4'b 0011: out = 7'b 011_0000;
4'b 0100: out = 7'b 001_1001;
4'b 0101: out = 7'b 001_0010;
4'b 0110: out = 7'b 000_0011;
4'b 0111: out = 7'b 111_1000;
4'b 1000: out = 7'b 000_0000;
4'b 1001: out = 7'b 001_0000;
4'b 1010: out = 7'b 010_0111;
4'b 1111: out = 7'b 111_1111;
default: out = 7'b 111_1111;
endcase
end
end
endmodule
顶层设计:
绑定管脚:
管脚:
clk_50M Input PIN_AD15 7 B7_N3 PIN_AD15 3.3-V LVTTL (default) 24mA (default)
en Input PIN_L7 2 B2_N1 PIN_L7 3.3-V LVTTL (default) 24mA (default)
reset_n Input PIN_L8 2 B2_N1 PIN_L8 3.3-V LVTTL (default) 24mA (default)
segcode0[6] Output PIN_AD12 8 B8_N1 PIN_AD12 3.3-V LVTTL (default) 24mA (default)
segcode0[5] Output PIN_AD11 8 B8_N2 PIN_AD11 3.3-V LVTTL (default) 24mA (default)
segcode0[4] Output PIN_AF10 8 B8_N2 PIN_AF10 3.3-V LVTTL (default) 24mA (default)
segcode0[3] Output PIN_AD10 8 B8_N2 PIN_AD10 3.3-V LVTTL (default) 24mA (default)
segcode0[2] Output PIN_AH9 8 B8_N1 PIN_AH9 3.3-V LVTTL (default) 24mA (default)
segcode0[1] Output PIN_AF9 8 B8_N2 PIN_AF9 3.3-V LVTTL (default) 24mA (default)
segcode0[0] Output PIN_AE8 8 B8_N3 PIN_AE8 3.3-V LVTTL (default) 24mA (default)
segcode1[6] Output PIN_AD17 7 B7_N2 PIN_AD17 3.3-V LVTTL (default) 24mA (default)
segcode1[5] Output PIN_AF17 7 B7_N2 PIN_AF17 3.3-V LVTTL (default) 24mA (default)
segcode1[4] Output PIN_AE17 7 B7_N3 PIN_AE17 3.3-V LVTTL (default) 24mA (default)
segcode1[3] Output PIN_AG16 7 B7_N3 PIN_AG16 3.3-V LVTTL (default) 24mA (default)
segcode1[2] Output PIN_AF16 7 B7_N3 PIN_AF16 3.3-V LVTTL (default) 24mA (default)
segcode1[1] Output PIN_AE16 7 B7_N3 PIN_AE16 3.3-V LVTTL (default) 24mA (default)
segcode1[0] Output PIN_AG13 8 B8_N0 PIN_AG13 3.3-V LVTTL (default) 24mA (default)
segcode2[6] Output PIN_AE19 7 B7_N1 PIN_AE19 3.3-V LVTTL (default) 24mA (default)
segcode2[5] Output PIN_AB19 7 B7_N1 PIN_AB19 3.3-V LVTTL (default) 24mA (default)
segcode2[4] Output PIN_AB18 7 B7_N1 PIN_AB18 3.3-V LVTTL (default) 24mA (default)
segcode2[3] Output PIN_AG4 8 B8_N3 PIN_AG4 3.3-V LVTTL (default) 24mA (default)
segcode2[2] Output PIN_AH5 8 B8_N3 PIN_AH5 3.3-V LVTTL (default) 24mA (default)
segcode2[1] Output PIN_AF7 8 B8_N3 PIN_AF7 3.3-V LVTTL (default) 24mA (default)
segcode2[0] Output PIN_AE7 8 B8_N3 PIN_AE7 3.3-V LVTTL (default) 24mA (default)
segcode3[6] Output PIN_M6 2 B2_N2 PIN_M6 3.3-V LVTTL (default) 24mA (default)
segcode3[5] Output PIN_M7 2 B2_N2 PIN_M7 3.3-V LVTTL (default) 24mA (default)
segcode3[4] Output PIN_M8 2 B2_N1 PIN_M8 3.3-V LVTTL (default) 24mA (default)
segcode3[3] Output PIN_N7 2 B2_N2 PIN_N7 3.3-V LVTTL (default) 24mA (default)
segcode3[2] Output PIN_N10 2 B2_N2 PIN_N10 3.3-V LVTTL (default) 24mA (default)
segcode3[1] Output PIN_P4 2 B2_N3 PIN_P4 3.3-V LVTTL (default) 24mA (default)
segcode3[0] Output PIN_P6 2 B2_N3 PIN_P6 3.3-V LVTTL (default) 24mA (default)
segcode4[6] Output PIN_M2 2 B2_N3 PIN_M2 3.3-V LVTTL (default) 24mA (default)
segcode4[5] Output PIN_M1 2 B2_N3 PIN_M1 3.3-V LVTTL (default) 24mA (default)
segcode4[4] Output PIN_N3 2 B2_N3 PIN_N3 3.3-V LVTTL (default) 24mA (default)
segcode4[3] Output PIN_N2 2 B2_N3 PIN_N2 3.3-V LVTTL (default) 24mA (default)
segcode4[2] Output PIN_P3 2 B2_N3 PIN_P3 3.3-V LVTTL (default) 24mA (default)
segcode4[1] Output PIN_P2 2 B2_N3 PIN_P2 3.3-V LVTTL (default) 24mA (default)
segcode4[0] Output PIN_P1 2 B2_N3 PIN_P1 3.3-V LVTTL (default) 24mA (default)
segcode5[6] Output PIN_K5 2 B2_N1 PIN_K5 3.3-V LVTTL (default) 24mA (default)
segcode5[5] Output PIN_K4 2 B2_N2 PIN_K4 3.3-V LVTTL (default) 24mA (default)
segcode5[4] Output PIN_K1 2 B2_N2 PIN_K1 3.3-V LVTTL (default) 24mA (default)
segcode5[3] Output PIN_L3 2 B2_N2 PIN_L3 3.3-V LVTTL (default) 24mA (default)
segcode5[2] Output PIN_L2 2 B2_N3 PIN_L2 3.3-V LVTTL (default) 24mA (default)
segcode5[1] Output PIN_L1 2 B2_N3 PIN_L1 3.3-V LVTTL (default) 24mA (default)
segcode5[0] Output PIN_M3 2 B2_N3 PIN_M3 3.3-V LVTTL (default) 24mA (default)
segcode6[6] Output PIN_E4 2 B2_N0 PIN_E4 3.3-V LVTTL (default) 24mA (default)
segcode6[5] Output PIN_F4 2 B2_N0 PIN_F4 3.3-V LVTTL (default) 24mA (default)
segcode6[4] Output PIN_G4 2 B2_N0 PIN_G4 3.3-V LVTTL (default) 24mA (default)
segcode6[3] Output PIN_H8 2 B2_N0 PIN_H8 3.3-V LVTTL (default) 24mA (default)
segcode6[2] Output PIN_H7 2 B2_N0 PIN_H7 3.3-V LVTTL (default) 24mA (default)
segcode6[1] Output PIN_H4 2 B2_N1 PIN_H4 3.3-V LVTTL (default) 24mA (default)
segcode6[0] Output PIN_H6 2 B2_N0 PIN_H6 3.3-V LVTTL (default) 24mA (default)
segcode7[6] Output PIN_G1 2 B2_N2 PIN_G1 3.3-V LVTTL (default) 24mA (default)
segcode7[5] Output PIN_H3 2 B2_N1 PIN_H3 3.3-V LVTTL (default) 24mA (default)
segcode7[4] Output PIN_H2 2 B2_N2 PIN_H2 3.3-V LVTTL (default) 24mA (default)
segcode7[3] Output PIN_H1 2 B2_N2 PIN_H1 3.3-V LVTTL (default) 24mA (default)
segcode7[2] Output PIN_J2 2 B2_N2 PIN_J2 3.3-V LVTTL (default) 24mA (default)
segcode7[1] Output PIN_J1 2 B2_N2 PIN_J1 3.3-V LVTTL (default) 24mA (default)
segcode7[0] Output PIN_K3 2 B2_N2 PIN_K3 3.3-V LVTTL (default) 24mA (default)
rst Unknown 3.3-V LVTTL (default) 24mA (default)
<<new node>>
全是知识点,满满细节控,看完点赞点关注~
|