1 / 18
文档名称:

计数器--徐艺萍.doc

格式:doc   大小:25KB   页数:18页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

计数器--徐艺萍.doc

上传人:wz_198614 2017/7/14 文件大小:25 KB

下载得到文件列表

计数器--徐艺萍.doc

相关文档

文档介绍

文档介绍:计数器--徐艺萍
计数器
计数器是最常用的时序电路之一,它们不仅可用于对脉冲进行计数,还可以用于分频、定时、产生节拍脉冲以及其他时序信号。计数器的种类不胜枚举,按触发器动作分类,可以分为同步计数器和异步计数器;按计数数值增减分类,可分为加计数器、减计数器和可逆计数器;按编码分类,又可分为二进制码计数器,BCD码(二-十进制)计数器、循环码计数器。此外,有的计数器也按计数容量来区分,例如五进制、六十进制计数器等等,计数器的容量也称为模,一个计数器的状态数等于其模数。
下面介绍一下异步二进制计数器、同步二进制计数器和非二进制计数器的FPGA实现。
异步二进制计数器

,是一个4位异步二进制计数器的逻辑图,它由4个T’触发器组成。计数脉冲CP通过输入缓冲器加至触发器FF0的时钟脉冲输入端,每输入一个计数脉冲,FF0翻转一次。FF1、FF2、FF3都以前级触发器的Q端输出作为触发信号,当Q0由1变0时,FF1翻转,其余类推。
4位异步二进制计数器逻辑图
由上图不难得出输出波形,,从初态0000(可由CR
输入高电平脉冲使4个触发器全部置0)开始,每输入一个计数脉冲,计数器的状态就按二进制编码值递增1,输入第16个计数脉冲后,计数器又回到0000状态。该计数器以16个CP脉冲构成一个计数周期,是模16加计数器。其中,Q0的频率是CP的1/2,即实现了2分频,Q1得到CP的4分频,以此类推,Q2 、Q3
分别对CP进行了8分频和16分频,因而,计数器也可作为分频器使用。
4位异步二进制计数器时序图
异步二进制计数器的原理、结构简单,因各触发器不是同时翻转,而是逐级脉动翻转实现计数进位,故也称为纹波计数器。由于各触发器的翻转时间有延迟,若用该计数器驱动组合逻辑电路,则可能出现瞬时逻辑错误。当计数脉冲频率很高时,输出甚至会出现编码输出分辨不清的情况。对于一个N位二进制异步计数器来说,从一个计数脉冲开始作用到第N个触发器翻转达到稳定状态的时间必须大大的小于计数脉冲CP的周期。

通过FPGA来实现异步二进制计数器的功能可以采用结构化描述方式,第一个模块通过4次调用第二个模块完成设计功能,第二个模块是带有异步清零功能的D触发器作为设计的底层。在第一个模块中,第一个触发器FF0的输出Q0经反相后与D触发器的输入相连,构成T’触发器,其时钟接到外部输入CP。第二个模块FF1的输出Q1经反相后与D触发器的输入相连,其时钟接到第一个触发器的输出。类似的将4个触发器级联在一起就构成了一个
4位异步二进制计数器。需要注意的是,例化模块时,如果采用位置关联时,注意端口的排列顺序。如果采用名字关联就没有这个限制。

(1) 创建工程
在创建工程的时候,注意器件族类型、器件型号、综合工具和仿真器的选择,
在这里选择的器件族类型(Device Family)是Virtex2P,器件型号(Device)是XC2VP30 ff896 -7,综合工具(Synthesis Tool)是XST (VHDL/Verilog),仿真器(Simulator)是ISE Simulator(VHDL/Verilog)。
(2) 设计输入
Verilog HDL 代码如下:
module ripplecounter(Q0,Q1,Q2,Q3,CP,CR);
input CP,CR;
output Q0,Q1,Q2,Q3;
D_FF FF0(Q0,~Q0,CP,~CR);
D_FF FF1(Q1,~Q1,Q0,~CR);
D_FF FF2(Q2,~Q2,Q1,~CR);
D_FF FF3(Q3,~Q3,Q2,~CR);
endmodule
module D_FF(Q,D,CP,Rd)
input D,CP,Rd;
output Q;
reg Q;
always @(negedge CP or negedge Rd) //注意在敏感表中最好都采用同一种沿触发
begin
if(~Rd) Q<=1'b0;
else Q<=D;
end
endmodule
(3) 功能仿真
①在sources窗口的“sources for”中选择“Behavioral Simulation”。
②由Test Bench WaveForm添加激励源,。。
激励波形
仿真结果
从仿真的结果中我们可以看到:当CR为1时,输出被清零,