进制计数器verilog设
计代码
TTA standardization office【TTA 5AB- TTAK 08- TTA 2C】
module count60(Clk,Rst,Display,Sel); input Clk; //产生10KHZ时钟输入 input Rst; // 复位输入
output[2:0] Sel; //七段码管扫描驱动 output[6:0] Display; // 七段码管显示输出
reg[2:0] Sel;
reg[6:0] Display;
reg[13:0]Clk_Count1; // 产生 1Hz 时钟的分频计数器 reg[13:0]Count2; // reg Clk_1HZ;
reg[3:0] SECL,SECH;
reg[3:0] MINL,MINH; reg[3:0] Disp_Temp;
always@(posedge Clk) begin
if(Clk_Count1==900) //对计数器进行判断,以确定Clk_1HZ 信号是否反转 begin
Clk_Count1<=0; Clk_1HZ<=~Clk_1HZ; end
else Clk_Count1<=Clk_Count1 1; end
always@(posedge Clk_1HZ or negedge Rst) if(!Rst) // 系统复位 begin SECL<=0; SECH<=0; MINL<=0; MINH<=0; Count2=0; end
else begin
if(SECL==9) //一般运行状态 begin SECL<=0; if(SECH==5) begin
SECH<=0; if(MINL==9) begin
MINL<=0; if(MINH==5) begin
MINH<=0; end else MINH<=MINH 1; end else MINL<=MINL 1; end else SECH<=SECH 1; end
else SECL<=SECL 1; end
always@(posedge Clk) begin Sel<=Sel 1; //扫描累加 end
always@(Sel) begin case(Sel) 3'b000: Disp_Temp=4'b0000; 3'b001: Disp_Temp=4'b0000; 3'b010: Disp_Temp=4'b0000; 3'b011: Disp_Temp=MINH; 3'b100: Disp_Temp=MINL; 3'b101: Disp_Temp=4'b1010; 3'b110: Disp_Temp=SECH; 3'b111: Disp_Temp=SECL; endcase end
always@(Disp_Temp) //显示转换 begin
case(Disp_Temp) 4'b0000: Display=7'b1111110; //0 4'b0001: Display=7'b0110000; //1 4'b0010: Display=7'b1101101; //2
4'b0011: Display=7'b1111001; //3 4'b0100: Display=7'b0110011; //4 4'b0101: Display=7'b1011011; //5 4'b0110: Display=7'b1011111; //6 4'b0111: Display=7'b1110000; //7 4'b1000: Display=7'b1111111; //8 4'b1001: Display=7'b1111011; //9 4'b1010: Display=7'b0000001; //- default: Display=7'b0000000; //endcase end
endmodule
全灭
因篇幅问题不能全部显示,请点此查看更多更全内容