多功能数字钟设计(Verilog语言编写) - 图文 联系客服

发布时间 : 星期三 文章多功能数字钟设计(Verilog语言编写) - 图文更新完毕开始阅读3325e3e6aff8941ea76e58fafab069dc50224713

多功能数字钟设计实验报告

6个7段码(用于显示时分秒 ),所以通过1个24选4MUX和一个3-8译码器配合,显示译码器采用7447,根据计数器的信号进行数码管的动态显示。

万年历模块:通过编程可以轻松实现,原理与上述计数模块,调节模块很是类似。由于未经硬件测试(时间限制),将在下面的子模块介绍中给出软件层面的实现和编译调试结果。

各子模块设计原理

本数字钟设计主要用Verilog语言实现,严格采用了模块化的程序设计思想,自顶向下逐步求精,模块之间高度独立。(仅译码显示模块采用原理图搭建)下面将分别介绍各主要子模块及其子模块以及算法语言的实现和部分波形仿真编译调试结果。 分频模块:

(clkout输出为1Hz,clkout1K输出为1Kz,clkout500输出为500Hz,clkout2输出为2Hz,clkout6M输出为6MHz,clkout4输出为4Hz.)

module clkdiv(clk,clkout,clkout1k,clkout500,clkout2,clkout6M,clkout4); input clk;

output clkout,clkout1k,clkout500,clkout2,clkout6M,clkout4; reg clkout,clkout1k,clkout500,clkout2,clkout6M,clkout4; reg [31:0]cnt,cnm,cnn,cmm,caa,cbb;

always@(posedge clk) //产生1Hz信号 begin

if(cnt== 32'd24000000) begin

clkout<=1'd1; cnt<=cnt+32'd1;

5 0704240213樊晓清

多功能数字钟设计实验报告

end

else if(cnt==32'd48000000) begin

clkout<=1'b0; cnt<=32'd0; end else

cnt<=cnt+32'd1; end

always@(posedge clk) //begin

if(cnm== 32'd24000) begin

clkout1k<=1'd1; cnm<=cnm+32'd1; end

else if(cnm==32'd48000) begin

clkout1k<=1'b0; cnm<=32'd0; end else

cnm<=cnm+32'd1; end

always@(posedge clk) //begin

if(cnn== 32'd48000) begin

clkout500<=1'd1; cnn<=cnn+32'd1; end

else if(cnn==32'd96000) begin

clkout500<=1'b0; cnn<=32'd0; end else

cnn<=cnn+32'd1; end

always@(posedge clk) //begin

if(cmm== 32'd12000000) begin

产生1KHz信号 产生500Hz信号 产生2Hz信号 6 0704240213樊晓清

多功能数字钟设计实验报告

clkout2<=1'd1; cmm<=cmm+32'd1; end

else if(cmm==32'd24000000) begin

clkout2<=1'b0; cmm<=32'd0; end else

cmm<=cmm+32'd1; end

always@(posedge clk) //begin

if(caa== 32'd4) begin

clkout6M<=1'd1; caa<=caa+32'd1; end

else if(caa==32'd8) begin

clkout6M<=1'b0; caa<=32'd0; end else

caa<=caa+32'd1; end

always@(posedge clk) //begin

if(cbb== 32'd6000000) begin

clkout4<=1'd1; cbb<=cbb+32'd1; end

else if(cbb==32'd12000000) begin

clkout4<=1'b0; cbb<=32'd0; end else

cbb<=cbb+32'd1; end

Endmodule

产生6MHz信号 产生4Hz信号 7 0704240213樊晓清

多功能数字钟设计实验报告

除了6MHz可以通过波形图直接观察,其他分频在程序设计原理上都可以确定是正确的,通过硬件可以作一定的观察(或者对仿真时间设定作相应调整)。 计数模块:

计数模块中包含三个校准模块和三个计数模块(分别对应着秒分时)。 (secondclka为秒脉冲输入信号1Hz,secondclkb为输入校准信号用频率2Hz,K5jiaomiao、K3jiaofen、K4jiaoshi分别为校秒、校分、校时输入信号,clkdff为D触发器输入信号(去开关抖动用),reset1K2为清零信号,start0K1为保持信号。输出分别对应秒分时的个位和十位)

8 0704240213樊晓清