|
1 設計任務
基于VerilogHDL和狀態(tài)機,完成學號顯示控制電路設計。
例如學號:21002495
功能要求如下:
-用八個數(shù)碼管顯示;
-學號按照10hz的時鐘的節(jié)拍從右而左進入,從學號的高位開始進入;
-8位學號全部進入后停頓5s,然后全部熄滅,再重新開始;
設計要求:
-設計要用狀態(tài)機;
-信號源模塊輸出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; //用于延時,給脈沖計數(shù)的臨時變量
integer state = 4'b 0000; //狀態(tài)變化
//學號: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種狀態(tài)進行編碼,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: //初始狀態(tài),輸出全為1,使數(shù)碼管熄滅
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) //計數(shù)50個上升沿后,再轉移到S0狀態(tài),即延時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 //省略了一部分數(shù)字
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>>
全是知識點,滿滿細節(jié)控,看完點贊點關注~
|
|