找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于MSI的N进制计数器设计方法研究

[复制链接]
admin 发表于 2013-3-24 09:34:06 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
  1绪论
     计数器是数字逻辑系统中的基本部件,它是数字系统中用得最多的时序逻辑电路,其主要功能就是用计数器的不同状态来记忆输入脉冲的个数。除此以外还具有定时、分频、运算等逻辑功能。计数器不仅能用于对时钟脉冲的计数,还可使用于定时、分频、产生节拍脉冲以及进行数字运算等。只要是稍微复杂一些的
     数字系统,几乎没有不包含计数器的。通常把满足N=2n的计数器称为二进制规则计数器,有些数字定时、分频系统中,常需要N≠2n的任意进制计数器。
     当我们在设计任意进制计数器(即计数模不是2及10)时,一般采用现有的中规模集成电路(MediumScaleIntegratiON,MSI)芯片,通过适当的反馈连接加以实现。而市场上现成的中规模集成电路芯片常见的只有十进制计数器和十六进制计数器,而在实际应用中,如数字钟电路中,却需要二十四进制和六十进制计数器,因此要将现有计数器改造成任意进制计数器。利用MSI芯片进行适当的连接就可以构成任意进制计数,所使用的方法主要有反馈置零法、反馈预置法和级联法。
     采用中规模集成计数器来设计任意进制计数器,使设计和调试工作更趋于简单,并且具有体积小,功耗低,可靠性高等优点。本文主要阐述了用中规模集成计数器设计任意进制同步加法计数器的设计思想,并对设计方法和步骤作了讨论。
     2.MSI中规模计数器概述
     2.1MSI中规模计数器芯片种类
     MSI中规模计数器芯片有非常多的种类。若按触发时钟的方式分类有:同步计数器、异步计数器;若按进制的“模”分类有:二进制计数器、十进制计数器;若按计数的方式分类:有加法计数器、减法计数器和可逆(加/减)计数器;若按芯片的型号分类就更多了,如:仅74系列的4位二进制计数器芯片就有161、163、191、193、197等,十进制计数器芯片有160、162等。
     2.2MSI中规模计数器工作原理
     2.2.1.以十进制同步计数器74LS160为例
     74LS160的功能
   表174LS160功能表
   
   
     根据功能表,74LSl60的功能说明如下:
     (1)异步清零功能。当CR=0时,不论其他输入如何,输出Q3Q2Q1Q0为0000,表中“×”表示任意。
     (2)同步并行置数功能。LD为预置数控制端,在CR=1的条件下,LD=0时,在CP上升沿的作用下,预置好的数据d3d2dld0被并行地送到输出端,即此时的Q3Q2Q1Q0为d3d2dld0。
     (3)保持功能。在CR=1和LD=1的前提下,只要TTTP=0,则计数器不工作,输出保持原状态不变。
     (4)计数功能。正常计数时,必须使CR=1,LD=1,TTTP=1,此时在CP的上升沿的作用下,计
     数器对CP的个数进行加法计数。当计数到输出Q3Q2Q1Q0为1001时,C0=1,C0=1的维持时间是从Q3Q2QlQ0为1001时起到QaQ2Q1Q0状态变化时止。
     2.2.2以四位二进制计数器为例
     74LS161功能
   表274LS161功能表
    20121107050925032224859.jpg
   
     1绪论
     计数器是数字逻辑系统中的基本部件,它是数字系统中用得最多的时序逻辑电路,其主要功能就是用计数器的不同状态来记忆输入脉冲的个数。除此以外还具有定时、分频、运算等逻辑功能。计数器不仅能用于对时钟脉冲的计数,还可使用于定时、分频、产生节拍脉冲以及进行数字运算等。只要是稍微复杂一些的
     数字系统,几乎没有不包含计数器的。通常把满足N=2n的计数器称为二进制规则计数器,有些数字定时、分频系统中,常需要N≠2n的任意进制计数器。
     当我们在设计任意进制计数器(即计数模不是2及10)时,一般采用现有的中规模集成电路(MediumScaleIntegratiON,MSI)芯片,通过适当的反馈连接加以实现。而市场上现成的中规模集成电路芯片常见的只有十进制计数器和十六进制计数器,而在实际应用中,如数字钟电路中,却需要二十四进制和六十进制计数器,因此要将现有计数器改造成任意进制计数器。利用MSI芯片进行适当的连接就可以构成任意进制计数,所使用的方法主要有反馈置零法、反馈预置法和级联法。
     采用中规模集成计数器来设计任意进制计数器,使设计和调试工作更趋于简单,并且具有体积小,功耗低,可靠性高等优点。本文主要阐述了用中规模集成计数器设计任意进制同步加法计数器的设计思想,并对设计方法和步骤作了讨论。
     2.MSI中规模计数器概述
     2.1MSI中规模计数器芯片种类
     MSI中规模计数器芯片有非常多的种类。若按触发时钟的方式分类有:同步计数器、异步计数器;若按进制的“模”分类有:二进制计数器、十进制计数器;若按计数的方式分类:有加法计数器、减法计数器和可逆(加/减)计数器;若按芯片的型号分类就更多了,如:仅74系列的4位二进制计数器芯片就有161、163、191、193、197等,十进制计数器芯片有160、162等。
     2.2MSI中规模计数器工作原理
     2.2.1.以十进制同步计数器74LS160为例
     74LS160的功能
   表174LS160功能表
    20121107050925094724860.jpg
   
     根据功能表,74LSl60的功能说明如下:
     (1)异步清零功能。当CR=0时,不论其他输入如何,输出Q3Q2Q1Q0为0000,表中“×”表示任意。
     (2)同步并行置数功能。LD为预置数控制端,在CR=1的条件下,LD=0时,在CP上升沿的作用下,预置好的数据d3d2dld0被并行地送到输出端,即此时的Q3Q2Q1Q0为d3d2dld0。
     (3)保持功能。在CR=1和LD=1的前提下,只要TTTP=0,则计数器不工作,输出保持原状态不变。
     (4)计数功能。正常计数时,必须使CR=1,LD=1,TTTP=1,此时在CP的上升沿的作用下,计
     数器对CP的个数进行加法计数。当计数到输出Q3Q2Q1Q0为1001时,C0=1,C0=1的维持时间是从Q3Q2QlQ0为1001时起到QaQ2Q1Q0状态变化时止。
     2.2.2以四位二进制计数器为例
     74LS161功能
   表274LS161功能表
    20121107050925407214861.jpg
   
   
     从功能表(一)可以看到,74LS161处于计数状态时,引出端RD,LD,S:,S:都应为“1”(接高电平)。如果取其中一片T4161作为低位计数器〔记作(1)〕,对该片计数器来讲,每来一个CP就计一次数,它始终工作在计数状态。
     3.设计方案
     3.1采用反馈置零法来设计任意进制计数器
     对于74LS160属于异步置零输入端的计数器,它是当置零输入端出现有效电平(低电平)后计数器立即被置零,不受时钟信号的控制。而对于74LS162/74LS163属于同步置零输入端的计数器。它是当置零输入端出现有效电平(低电平)后计数器并不会立即被置零,必须等下一个时钟信号到达后,才能将计数器置零。两者用时必须加以区分。
     3.1.1采用并行法来设计24进制计数器
     用74LS160并行置零法设计24进制计数器的电路图如图1所示。此电路的工作原理:先假设两芯片的置零输入端为1,则个位芯片由于计数控制端ENP=ENT=1,故该芯片始终处于计数状态;而十位芯片的ENP、ENT连接的是个位芯片的进位控制端RCO,只有当个位芯片的计数状态Q3Q2Q1Q0为1001时,RCO才为1.十位芯片才能计数。如果没有反馈置零(即MR端恒接高电平)则电路是一个100进制计数器。现在电路中加上了反馈,当计数状态(00100100)8421BCD码=(24)10时,与非门输出为零。由于74LS160属于异步置零,且复位控制端MR低电平有效,所以计数器立即置零。由于电路中的状态(24)10转瞬即逝,显示不出。故电路的有效状态从(00)10到(23)10共24个,故此电路为24进制计数器。
    20121107050925454084862.jpg
   
   图1用74LS160并行置零法设计24进制计数器
     另外如果采用同步置零74LS162计数器来设计24进制计数器,那么反馈代码必须是(23)10相应的8421BCD码为00100011.由此可见反馈信号应取自十位芯片的Q1及个位芯片的Q1和Q0,相应的与非门应改成四输入端与非门。用74LS162并行置零法设计24进制计数器的电路图如图2所示。
    20121107050925500964863.jpg
   
   图2用74LS162并行置零法设计24进制计数器
     3.1.2采用串行法来设计48进制计数器
     用74LS160串行置零法设计48进制计数器的电路图如图3所示。
    20121107050925563464864.jpg
   
   图3用74LS160串行置零法设计48进制计数器
     此电路的工作原理:先假设两芯片的置零输入端为1,则个位芯片由于计数控制端ENP=ENT=1,故该芯片始终处于计数状态;而十位芯片的ENP=ENT=1,但十位芯片的计数脉冲CLK是通过个位芯片的进位控制端RCO取反来控制的。当个位芯片的计数状态Q3Q2Q1Q0为1001时,RCO为1.当下一个计数脉冲到来时RCO又为0.又由74LS160计数器的时钟脉冲CLK是上升沿有效,与此同时,个位的RCO由1到0相当于一个下降沿,通过非门74LS04控制就得到一个上升沿,同时十位芯片才能计数。如果没有反馈置零(即MR恒接高电平)则电路是一个100进制计数器。现电路中加上了反馈。当计数状
   态(01001000)8421BCD码=(48)10时,与非门输出为零。由于74LS160属于异步置零,且复位控制端低电平有效,所以计数器立即置零。如果采用同步置零74LS162计数器来设计48进制计数器,那么反馈代码必须是(47)10相应的8421BCD码为01000111.由此可见反馈信号应取自十位芯片的Q2及个位芯片的Q2,Q1及Q0,相应的与非门应改成四输入端与非门。74LS162串行置零法设计48进制计数器的电路图如图4所示。
    20121107050925610334865.jpg
   
   图4用74LS162串行置零法设计48进制计数器
     另外,采用串行法设计时,十位芯片的计数脉冲CLK还可以通过个位芯片的最高位Q3端通过非门取反来控制,其他线路保持不变。只要对图3或图4稍加修改即可。
     3.2采用反馈置数法来设计任意进制计数器
     此方法适用于某些具有预置数的计数器,它是采用预置数控制端LOAD来实现。对于74LS160属于同步式预置数的计数器来说,当LOAD出现有效电平低电平后待下一个时钟脉冲信号到来后计数器输出端的状态Q3Q2Q1Q0=D3D2D1D0.使其跳过某些状态来设计任意进制计数器。下面就以74LS160为例,用并行置数法设计23进制计数器,其中预置数端D3D2D1D0可以置零,也可以置十以内的任意四位二进制数。那么此电路在其置数时十位和个位的D3D2D1D0置入(01100110)8421BCD码=(66)10,而反馈代码十位和个位为(10001000)8421BCD码=(88)10,相当于十进制数的88.由此分析可得到计数器的模为(88-66)+1=23,故计数器为23进制计数器,其设计电路图如图5所示。由此可以得到置数法的设计要点为:反馈代码转换成的十进制数-预置数端的代码转换成的十进制数+1=所设计的计数器的模。同样我们也可以仿照前面的设计用串行置数法设计任意进制计数器。
    20121107050925672834866.jpg
   
   图5用74LS160并行置数法设计23进制计数器
     4设计步骤
     由于反馈置数法不太常用,且难于理解??下面我们就以反馈置零法为例,通过以上分析和经验总结,可以得出任意N进制计数器的设计方法及步骤。
     根据计数模N来确定所需要计数器芯片的个数n.n=INT(logm(N-1))+1,INT表示取整。m:当芯片为十进制计数器时m取10,当芯片为四位二进制计数器时m取16.
     (2)当n个计数器芯片连接成模为m的计数器
     (3)选用并行法或串行法将n个计数器连接起来。
     (4)确定反馈置零代码。如果计数器芯片采用异步置零反馈代码为(N)10,若是采用同步置零,则反馈代码为(N??1)10.
     (5)反馈置零代码形式的转换。如果芯片为十进制制计数器,将反馈代码转换成8421BCD码的形式。若是四位二进制计数器,则将反馈代码转换成二进制数。
     (6)将转换结果与计数器的状态输出端进行比较,让与1对应的引脚作用到与非门(反馈置零端低电平有效)或者与门(反馈置零端高电平有效)的输入端,然后将与非门或者与门的输出,连接到计数器芯片的反馈置零端即可。
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-25 23:51 , Processed in 0.085459 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表