module yima (clkout_2ms,seg,AN,shi,fen,miao,k,dp,D,shi1,T); input clkout_2ms,k,T; input [5:0]miao; input [5:0]fen; input [4:0]shi,shi1; output reg [6:0] seg; output reg [3:0] AN; reg [1:0]cnt_clkout; output reg dp,D; reg [3:0]Q; reg [3:0]q1,q2,q3,q4; always@(posedge clkout_2ms) cnt_clkout<=cnt_clkout+1; always @ (posedge clkout_2ms) begin dp<=0; if(k==0) begin case(cnt_clkout) 0:begin AN<=4'b0111; if(T==0) q1 <= shi/10; else q1 <= shi1/10; end 1:begin AN<=4'b1011; dp<=1; if(T==0) q2 <= shi%10; else q2 <= shi1%10; end 2:begin AN <= 4'b1101; q3 <= fen/10; end 3:begin AN <= 4'b1110; q4 <= fen%10; end endcase end else begin case(cnt_clkout) 0:begin AN<=4'b1111; q1 <= 0; end 1:begin AN<=4'b1111; q2 <= 0; dp<=1; end 2:begin AN <= 4'b1101; q3 <= miao/10; end 3:begin AN <= 4'b1110; q4 <= miao%10; end endcase end end always@(Q) begin case(cnt_clkout) 3:Q<=q4; 2:Q<=q3; 1:Q<=q2; 0:Q<=q1; endcase end always@(posedge clkout_2ms) case(Q) 0:seg<= 7'b1111110;//0 1:seg<= 7'b0110000;//1 2:seg<= 7'b1101101;//2 3:seg<= 7'b1111001;//3 4:seg<= 7'b0110011;//4 5:seg<= 7'b1011011;//5 6:seg<= 7'b1011111;//6 7:seg<= 7'b1110000;//7 8:seg<= 7'b1111111;//8 9:seg<= 7'b1111011;//9 default: seg<=7'b1111110; endcase always@(posedge clkout_2ms) if(fen==0&&miao<=6) D <= D + 1; endmodule
时间: 2024-04-28 12:22:03 浏览: 12
这是一个 Verilog HDL 代码,实现了一个数字时钟的功能。具体来说,该模块有以下输入和输出:
输入:
- clkout_2ms:2ms 时钟信号;
- k:时钟是否停止的信号,0 表示不停止,1 表示停止;
- T:是否显示时钟的第二个小时数,0 表示不显示,1 表示显示;
- shi:时钟的小时数;
- shi1:时钟的第二个小时数;
- fen:时钟的分钟数;
- miao:时钟的秒数;
输出:
- seg:数码管的显示数值;
- AN:数码管的选通信号;
- dp:小数点的显示信号;
- D:时钟的天数。
该模块的处理逻辑为:
- 当 k=0 时,表示时钟不停止,根据 cnt_clkout 的值控制数码管的显示,其中:
- cnt_clkout=0:选通第一位数码管,显示时钟的十位小时数或第二个小时数的十位数;
- cnt_clkout=1:选通第二位数码管,显示时钟的个位小时数或第二个小时数的个位数;
- cnt_clkout=2:选通第三位数码管,显示时钟的十位分钟数;
- cnt_clkout=3:选通第四位数码管,显示时钟的个位分钟数。
- 当 k=1 时,表示时钟停止,根据 cnt_clkout 的值控制数码管的显示,其中:
- cnt_clkout=0:选通所有数码管,不显示任何数字;
- cnt_clkout=1:选通所有数码管,不显示任何数字;
- cnt_clkout=2:选通第三位数码管,显示时钟的十位秒数;
- cnt_clkout=3:选通第四位数码管,显示时钟的个位秒数。
- 根据 Q 的值,选择要显示的数值,并将其赋值给 seg;
- 当 fen=0 且 miao<=6 时,表示一天的时间已经过去,将 D 的值加一。
这个 Verilog HDL 代码实现了一个数字时钟的基本功能,可以用于 FPGA 或其他数字电路的实现。