当前位置:文档之家› 秒表电路设计

秒表电路设计


wire [3:0] ge,shi;
fenpin inst (
.CLK_50M(CLK),
always @ (A)
//8段码译码模块
begin
case(A)
0: LED7<=8'b00111111;
1: LED7<=8'b00000110;
2: LED7<=8'b01011011;
3: LED7<=8'b01001111;
4: LED7<=8'b01100110;
5: LED7<=8'b01101101;
知识回顾
分频器电路设计
本讲知识点
掌握层次化系统设计方法 元件例化语句 模块化设计
一、设计任务
采用Verilog HDL语言,设计简 易秒表电路,在数码管上显示结 果。
二、设计原理
采用计数器原理,如果计数器时钟信号是1Hz(基准单位周期为1S),那么计 数结果即可表示0~59秒,然后采用数码管动态扫描进行译码显示。
end
endmodule
//组合电路之过程,构建进位信号
//当counter=59时,输出进位标志为1 //否则,输出进位标志为0
3.动态扫描显示模块

•【例3-16】秒表显示模块设计

module display (CLK,SEC_GE,SEC_SHI,LED7_CS,LED7);

input
// 输入时钟上升沿

begin

if (counter1==25000000)
//如果计数器等于分频比一半

begin

counter1<=0;
//分频计数器清0

clk1<= ~ clk1;
//clk1hz进行翻转

end

else counter1<=counter1+1;
//计数器累加

end

reg address;

always @(posedge CLK)
选状态变量
//构建2个数码管对应的2个状态位t;=address+1;

end

always @(address)
数码管位置和与内容统一
//2选1多路选择器,确定

begin

if (address) begin A<=SEC_SHI; LED7_CS<='B001; end
设计方案
三、实现过程
分频器模块 计数器模块 动态扫描显示模块 顶层设计(原理图或文本)
1.分频器模块
1Hz 根据系统功能需求,此分频器模块需要实现两个信号分频输出,一个是
的标准秒信号提供基准时钟,另一个是用于数码管动态显示的扫描信号,频率为
1KHz。

•【例3-14】分频器设计
• module fenpin(CLK_50M,CLK_1Hz,CLK_1KHz);
always @ (posedge CLK_50M ) begin if (counter2==25000) begin counter2<=0; clk1k<= ~ clk1k; end else counter2<=counter2+1; end
assign CLK_1Hz=clk1; assign CLK_1KHz=clk1k; endmodule
//计数器对10取余,提取个位

assign SEC_SHI=counter/10;
//对10取整,提取十位

always @(posedge CLK or negedge RST )

begin

if ( ! RST) counter<=0;
//RST=0时,异步清0

else if (EN)
// EN=1,同步使能允许计数

input CLK_50M;
//输入时钟信号50MHz

output CLK_1Hz;
//分频输出信号1Hz

output CLK_1KHz;

reg clk1,clk1k;
//中间变量clk1

reg [24:0] counter1;

reg [14:0] counter2;

always @ (posedge CLK_50M )

begin

if ( counter<59 ) counter<=counter+1;

else counter<=0;
//否则counter>=9时,清0

end

end
always @ ( counter )
begin
if (counter==59) COUT<=1;
else
COUT<=0;
//频率为1KHz的扫描信号
CLK;

input [3:0] SEC_GE,SEC_SHI;
十位
//输入的秒个位和

output [7:0] LED7;
段码
//8位

output [2:0] LED7_CS;
//3位位选

reg
[2:0] LED7_CS;

reg
[7:0] LED7;

reg
[3:0] A;
6: LED7<=8'b01111101;
7: LED7<=8'b00000111;
8: LED7<=8'b01111111;
9: LED7<=8'b01101111;
default : LED7<=8'b00000000;
endcase
end
endmodule
4.顶层设计(原理图)

4.顶层设计(文本)

input CLK,RST,EN;
//时钟、复位和暂停

output [3:0] SEC_GE,SEC_SHI;
//秒的个位、十位输出0~9

output COUT;
//分钟进位信号

reg [5:0] counter;
//定义计数器变量

reg COUT;

assign SEC_GE=counter %10;
【例3-17】秒表顶层设计代码
module miaobiao_top (CLK,RST,EN,LED7_CS,LED7,COUT);
input CLK,RST,EN; output [7:0] LED7;
//8位段码
output [2:0] LED7_CS;
output COUT;
wire clka, clkb;
// 输入时钟上升沿 //如果计数器等于分频比一半
//分频计数器清0 //clk1khz进行翻转 //计数器累加 //将中间结果向端口输出
2.计数器模块
该模块功能主要是实现0-59的计数,并将计数结果的个位和十位分别输出。

•【例3-15】秒表计数器设计
• module cnt60(CLK,RST,EN,SEC_GE,SEC_SHI,COUT);
相关主题