燕 山 大 学 课 程 设 计 说 明 书
/*数码管模块*/
module number(SS,C,Q,CLK); input [1:3]C; input CLK; output [2:0]SS; output [1:7]Q;
reg [2:0]SS;//定义位选寄存器 reg [1:7]Q;//定义数选寄存器 reg [0:2]WX;
always@(posedge CLK) begin
if(WX=='b111) begin
SS<='b111;//位选赋值 WX<='b000; end else
SS<=WX; WX<=WX+1; end
always@(C) begin case(C)
'b000:Q='b1111110; 'b001:Q='b0110000; 'b010:Q='b1101101; 'b011:Q='b1111001; 'b100:Q='b0110011; 'b101:Q='b1011011; endcase end
endmodule
/*双色点阵模块*/
module matrix(C,ROW,RA,GA,CLK);
8
燕 山 大 学 课 程 设 计 说 明 书
input [1:3]C; input CLK;
output [1:8]ROW; output [1:5]RA; output [1:5]GA; reg [1:8]ROW; reg [1:5]RA; reg [1:5]GA; reg [0:2]S; reg [0:2]W;
always@(posedge CLK) begin
if(S=='b111) S='b000; else S=S+1; case(S)
'b000:ROW='b01111111; 'b001:ROW='b10111111; 'b010:ROW='b11011111; 'b011:ROW='b11101111; 'b100:ROW='b11110111; 'b101:ROW='b11111011; 'b110:ROW='b11111101; 'b111:ROW='b11111110; endcase end
always@(posedge CLK) begin
if(W=='b111) W='b000; else
W=W+1; case({C,W})
/*双色点阵显示0*/
'b000000:begin RA='b00000;GA='b11111;end 'b000001:begin RA='b00000;GA='b00000;end
9
燕 山 大 学 课 程 设 计 说 明 书
'b000010:begin RA='b01110;GA='b00000;end 'b000011:begin RA='b01010;GA='b00000;end 'b000100:begin RA='b01010;GA='b00000;end 'b000101:begin RA='b01010;GA='b00000;end 'b000110:begin RA='b01110;GA='b00000;end 'b000111:begin RA='b00000;GA='b00000;end /*双色点阵显示1*/
'b001000:begin RA='b10000;GA='b01111;end 'b001001:begin RA='b00000;GA='b00000;end 'b001010:begin RA='b00100;GA='b00000;end 'b001011:begin RA='b01100;GA='b00000;end 'b001100:begin RA='b00100;GA='b00000;end 'b001101:begin RA='b00100;GA='b00000;end 'b001110:begin RA='b01110;GA='b00000;end 'b001111:begin RA='b00000;GA='b00000;end /*双色点阵显示2*/
'b010000:begin RA='b01000;GA='b10111;end 'b010001:begin RA='b00000;GA='b00000;end 'b010010:begin RA='b01110;GA='b00000;end 'b010011:begin RA='b00010;GA='b00000;end 'b010100:begin RA='b01110;GA='b00000;end 'b010101:begin RA='b01000;GA='b00000;end 'b010110:begin RA='b01110;GA='b00000;end 'b010111:begin RA='b00000;GA='b00000;end /*双色点阵显示3*/
'b011000:begin RA='b00100;GA='b11011;end 'b011001:begin RA='b00000;GA='b00000;end 'b011010:begin RA='b01110;GA='b00000;end 'b011011:begin RA='b00010;GA='b00000;end 'b011100:begin RA='b01110;GA='b00000;end 'b011101:begin RA='b00010;GA='b00000;end 'b011110:begin RA='b01110;GA='b00000;end 'b011111:begin RA='b00000;GA='b00000;end /*双色点阵显示4*/
'b100000:begin RA='b00010;GA='b11101;end 'b100001:begin RA='b00000;GA='b00000;end 'b100010:begin RA='b01010;GA='b00000;end 'b100011:begin RA='b01010;GA='b00000;end 'b100100:begin RA='b01110;GA='b00000;end
10
燕 山 大 学 课 程 设 计 说 明 书
'b100101:begin RA='b00010;GA='b00000;end 'b100110:begin RA='b00010;GA='b00000;end 'b100111:begin RA='b00000;GA='b00000;end /*双色点阵显示5*/
'b101000:begin RA='b00001;GA='b11110;end 'b101001:begin RA='b00000;GA='b00000;end 'b101010:begin RA='b01110;GA='b00000;end 'b101011:begin RA='b01000;GA='b00000;end 'b101100:begin RA='b01110;GA='b00000;end 'b101101:begin RA='b00010;GA='b00000;end 'b101110:begin RA='b01110;GA='b00000;end 'b101111:begin RA='b00000;GA='b00000;end
endcase end
endmodule
/*蜂鸣器模块*/
module buzzer(CLK,C,SPEAKER); input CLK; input [1:3]C;
output SPEAKER;
integer N;//定义变量N用于蜂鸣器计时
reg [1:3]M;//定义寄存器M存放C的状态用以判断C是否产生变化 reg SPEAKER;
always@(posedge CLK) begin
if(C==0)begin N<=3000;SPEAKER<=0;M<=0;end else
if(C!=M) begin
N<=N-1;
if(N>0) SPEAKER<=1;
else begin SPEAKER<=0;N<=3000;M<=C;end/*当C变化之后小于以前那个值蜂鸣三秒,即多个输入信号T同时存在时,若优先级较高的输入消失,系统检测到新的输入,
11
燕 山 大 学 课 程 设 计 说 明 书
蜂鸣器响三秒*/ end end
endmodule
/*顶层模块*/
module top(R,T,CLK,L,ROW,RA,GA,SS,Q,SPEAKER);
input R; input [1:5]T; input CLK; output [1:5]L; output [1:8]ROW; output [1:5]RA; output [1:5]GA; output [2:0]SS; output [1:7]Q; output SPEAKER; wire [1:3]X1;
call u1(.R(R),.T(T),.L(L),.C(X1));
number u2(.CLK(CLK),.C(X1),.SS(SS),.Q(Q));
matrix u3(.CLK(CLK),.C(X1),.ROW(ROW),.RA(RA),.GA(GA)); buzzer u4(.CLK(CLK),.C(X1),.SPEAKER(SPEAKER));
endmodule
4.6管脚锁定及硬件连线 R PIN46 L1 T1 PIN39 L2 T2 PIN40 L3 T3 PIN41 L4 T4 PIN44 L5 T5 PIN45 ROW1 CLK PIN9 ROW2 SPEAKER PIN38 ROW3 SS1 PIN71 SS2 Q3 PIN27 Q4 Q7 PIN31
PIN12 PIN13 PIN14 PIN15 PIN17 PIN173 PIN174 PIN175 PIN74 PIN28 ROW4 ROW5 ROW6 ROW7 ROW8 RA1 RA2 RA3 Q1 Q5 PIN176 PIN177 PIN179 PIN187 PIN189 PIN190 PIN191 PIN192 PIN25 PIN29 RA4 RA5 GA1 GA2 GA3 GA4 GA5 SS0 Q2 Q6 PIN193 PIN195 PIN68 PIN70 PIN73 PIN170 PIN172 PIN69 PIN26 PIN30 12