一、实验目的
(1)熟练掌握分频器、各种进制的同步计数器的设计。
茶杯的英文(2)熟练掌握同步计数器的级联方法。
(3)掌握数码管的动态显示驱动方式。
(4)掌握计数器的功能和应用。
(5)理解开关防颤动的必要性。
(6)掌握简单控制器的设计方法。
yumei二、实验内容和原理
1、实验设计要求:
(1)计时范围0’0’.0’’~59’59’.9’’,分辨率为0.1s,用数码管显示计时值。
(2)秒表有一个按键开关:当电路处于“初始”状态时,第一次按键,计时开始(“计时”状态);再次按键。计时停止(“停止”状态);第三次按键,计时器复位为0’0’.0’’,且电路恢复到“初始”状态。
2、根据设计要求,可画出秒表电路的原理框图,如图1-2所示,秒表电路由时钟管理模块(DCM)、分频器模块、按键处理模块、控制器、计时模块和显示模块组成。
pul400Hz
clear count stop
图1-2 秒表电路的原理框图
(1)DCM模块
由于数字钟为低速电路,而XUP Virtex-II Pro 开发系统只提供100MHz主时钟,因此需插入DCM分频模块以降低系统的工作时钟,从而提高系统的可靠性。DCM可采用16分频,输出6.25MHz的sys_clk信号作为系统的主时钟。
ISE生成DCM内核的Verilog HDL 代码:
VgaDCM DCMInst(
.CLKIN_IN(clk),
.CLKDV_OUT(sys_clk),
.CLKIN_IBUFG_OUT(),
.CLK0_OUT(),
.LOCKED_OUT());
(2)分频器模块
产生用于计时的1/10秒脉冲信号pul10,频率为10Hz;
产生用于显示模块的扫描脉冲信号pul400,频率为400Hz。
1/10秒脉冲信号pul10和扫描脉冲信号pul400的脉冲宽度为一个系统主时钟信号sys_clk的周期。
分频器模块原理框图如图1-3所示,先设计一个15625分频器,产生400Hz的扫描信号pul400,再由pul400控制40分频器产生1/10秒脉冲信号pul10。
分频器设计:分频器实际上就是计数器:分频比n就是计数器的模。
pul400
en out
40进制
计数器
en out
15625进制
计数器
sys_clk
分频器模块的Verilog HDL 代码:
module div(sys_clk,c,scan); //分频器模块
input sys_clk;
output c,scan;
div_n1 u1(.cout(scan),.cin(1'b1),.clk(sys_clk)); //按原理框图级联分频器
div_n2 u2(.cout(c),.cin(scan),.clk(sys_clk));
endmodule
module div_n1(cout,cin,clk); // 15625进制计数器,产生400Hz扫描信号
parameter n=15625;
parameter counter_bits=14;
output cout;
input cin,clk;
reg [counter_bits:1]qout=0;
assign cout=(qout==(n-1))&cin; //进位bangladesh
always@(podge clk)
begin if(cin)
儿童英语教育begin if(qout==(n-1)) qout<=0;
el qout<=qout+1;//计数
end
end
endmodule
module div_n2(cout,cin,clk); //40进制计数器,产生10Hz的0.1秒计时信号
parameter n=40;
parameter counter_bits=6;
i phoneoutput cout;
input cin,clk;
reg [counter_bits:1]qout=0;
英语范文assign cout=(qout==(n-1))&cin; //进位
always@(podge clk)
artistic是什么意思
begin if(cin)
begin if(qout==(n-1)) qout<=0;
el qout<=qout+1; //计数
end
end
endmodule
(3)按键处理模块
按键处理模块完成按键输入的同步器、开关防颤动和脉冲宽度变换等功能,即当按键一次,输出一个宽度为sys_clk周期的脉冲信号Buttonout。其组成框图如图1-4所示。
图1-4 按键处理模块的示意框图
(i)同步器设计
在异步设计中,完全避免亚稳态是不可能的。因此,设计的基本思路是:首先尽可能的减少出线亚稳态的可能性,其次是尽可能地减少出线亚稳态给系统带来的危害的可能性。如图1-5所示的是一种基本同步器类型的原理框图,采用双锁存器法,即将输入的异步信号用两个锁存器连续锁存两次,这种设计理论上可以把出现亚稳态的几率降低到一个很小的程度,但这种方法对输入信号有一定延时。
图1-5 当异步脉冲宽度大于时钟周期时的同步器电路
同步器的Verilog HDL 代码:ending
module synch(asynch_in,clk,ret,synch_out); //同步器;
input asynch_in,clk,ret;
output synch_out;
wire a;
d_ff u1(.d(asynch_in),.ret(ret),.clk(clk),.q(a));
d_ff u2(.d(a),.ret(ret),.clk(clk),.q(synch_out));
endmodule
module d_ff(d,ret,clk,q); //D触发器;
input d,ret,clk;
output reg q;
always@(podge clk or podge ret) //异步复位;高电平有效;
begin
if(ret)
begin q<=0;end
el begin q<=d;end
end
endmodule
(ii)开关防颤动电路的设计
(a)开关的颤动即开关防颤动电路的功能
人们完成一次按键操作的指压力如图1-6(b)所示,按键开关从最初按下到接触稳态需要经过数毫秒的颤动,按键松开时也有同样的问题。因此,按键被按下或释放时,都有几毫秒的不稳定输出,从逻辑电平来看不稳定输出期间,其电平在“0”、“1”之间无规则摆动。因此,一次按键操作的输出如图1-6(c)所示。一般情况,按键一次时间大于100ms,颤动时间(按下或释放)小于10ms。
开关防颤动电路的目的是:按一次按键,输出一个稳定的脉冲,即将开关的输出作为开关防颤动电路的输入,而开关防颤动电路的输出作为理想输出,如图1-6(d)所示。
(b)开关防颤动电路的设计
开关防颤动电路的关键是避免在颤动期采样。颤动期时间长短与开关类型及按键指压力有关,一般为10ms左右。据此可以画出防颤动电路的设计流程图,如图1-7所示。