课程设计同步二进制加法计数器的设计与仿真.docx
- 文档编号:10451778
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:31
- 大小:357.53KB
课程设计同步二进制加法计数器的设计与仿真.docx
《课程设计同步二进制加法计数器的设计与仿真.docx》由会员分享,可在线阅读,更多相关《课程设计同步二进制加法计数器的设计与仿真.docx(31页珍藏版)》请在冰豆网上搜索。
课程设计同步二进制加法计数器的设计与仿真
集成电路设计报告
同步二进制加法计数器的设计与仿真
院系:
材料与光电物理学院
专业:
微电子学一班
学号:
2*********
********
指导教师:
唐明华教授
报告提交日期:
2010年9月
摘要·····························································································1
关键词·······································································································1
1引言·································································································2
2时序逻辑电路·······································································4
2.1时序逻辑电路概述·············································································4
2.2同步时序逻辑电路的一般设计方法······················································5
3设计··················································································7
3.1二进制计数器原理······························································································7
3.1.1T触发器··········································································7
3.1.2同步二进制加法计数器的原理···············································7
3.2二进制计数器设计·······························································8
3.2.1四位二进制计数器的设计·························································9
3.2.2检查设计的电路能否自启动··························································13
4仿真························································································································14
4.1仿真原理·············································································14
4.2仿真结果与分析·······························································15
5硬件描述语言VHDL设计及仿真·································17
6结论····················································································22
7体会与展望···········································································23
参考文献···············································································24
致谢·······························································································25
附录····················································································26
同步二进制加法计数器的设计与仿真
摘要:
本文首先介绍了同步时序逻辑电路一般设计步骤,然后在理解和掌握同步二进制计数器原理的基础上,采用传统的设计方法设计出了一个同步四位二进制加法计数器,并且运用MAX+Plus2软件对四位二进制计数器进行了仿真,根据仿真结果,对时序和波形进行了分析。
最后采用VHDL语言设计了一个复杂的四位二进制加法计数器。
关键词:
时序逻辑电路,同步二进制加法计数器,VHDL语言,MUX+plus2,仿真
Designandsimulationofsynchronousbinarycarrycounter
Abstract:
thispaperintroducestheordinarydesignmethodofsequentiallogiccircuitatfirst.Thenonthebasisoftheprincipleandthestructureofsynchronousbinarycounters,Idesignsupafourbinarycarrycounter.ThecircuitisdesignedandthesimulationofthiscircuitiscarriedoutbyMUX+plus2.Accordingtotheresultsofthesimulation,itswaveformandtimingdelayareanalyzed.Atlast,withthehelpofVHDLlanguage,Idesignsupacomplexsynchronousbinarycarrycounter.
Keywords:
sequentiallogiccircuit,synchronousbinarycounters,VHDLlanguage,MUX+plus2,simulation
1引言
计数器是数字电子技术中应用的最多的时序逻辑电路。
计数器不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。
但是并无法显示计算结果,一般都是要通过外接LCD或LED屏才能显示。
20世纪70年代开始,用数字电路处理模拟信号的所谓“数字化”浪潮已经席卷了电子技术几乎所有的应用领域.时序电路的运用随处可见。
计数器是数字电路中使用最多的一种时序逻辑电路。
计数器是大规模集成电路中运用最广泛的结构之一。
在模拟及数字集成电路设计当中,灵活地选择与使用计数器可以实现很多复杂的功能,可以大量减少电路设计的复杂度和工作量。
计数器在现在电子电路中有着广泛的应用,它已经成为了数字设备常用的基本部件之一。
一个系统性能的好坏,常常与计数器的性能关系很大。
计数器的种类繁多。
按照计数器中的触发器是否同时翻转分类,可把计数器分为同步计数器和异步计数器,常用的同步计数器有74160系列、74LS190系列,常用的异步计数器有74LS290系列。
计数器是一种基础测量仪器,到目前为止已有30多年的发展史,早期设计师们追求的目标主要是扩展测量范围再加上提高测量精度和稳定度等,这些也是人们衡量电子计算器的技术水平,也决定电子计数器价格高低的主要依据,随着科学技术的发展,用户对电子计数器也提出了新的要求,对于低档产品要求使用操作方面,量程(足够)宽,可靠性高,价格低。
而对于中高档产品,则要求高分辨率,高精度,高稳定度,高测量速率。
目前主要采用两种设计方法来进行计数器的设计,第一种为采用传统的硬件电路设计方法来设计硬件,第二种为采用HDL语言来设计系统硬件。
电子设计自动化的普及与CPLD/FPGA器件的广泛应用,使得计数器的设计变得非常容易。
其中可编程计数器使用方便,灵活,能满足工程上的多种应用。
在已有的设计方法中,设计者通常采用2的多次分频法,这种设计方法从硬件结构上来说常常出现频率上不去的问题。
现在电子设计自动化的日益普及和CPLD/FPGA器件的广泛使用,使得计数器的设计变得非常容易。
这个问题源自曾专武等人《任意模值的计数器设计比较》[1],在现在的自动控制领域,虽然目前市场上的计数器非常多,但通用性比较差,要完成特定的功能往往需要把多片集成电路组合使用,产品的设计和开发周期比较长,且计数器在速度、抗干扰能力等多项指标上满足不了要求[2]。
为了提高工业控制器中高速计数器的计数频率,利用FPGA设计,采用层次化的VHDL语言程序设计,可以有效地提高效率和增加灵活性。
高速计数器[3]
累计比PLC扫描频率高得多的脉冲输入,利用中断事件完成既定的操作。
本文先对时序逻辑电路的分析方法进行一下简单的介绍,继而分析同步二进制加法计数器,最后对同步二进制加法计数器进行设计,对其性能进行分析,最后讨论了一下VHDL语言设计二进制加法计数器的优点及步骤。
2同步时序逻辑电路的设计方法
2.1时序逻辑电路[4]概述
在时序逻辑电路中,任意时刻的输出信号不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关。
具备这种逻辑功能特点的电路为时序逻辑电路(sequentiallogiccircuit,简称时序电路)。
时序逻辑电路在结构上有两个显著的特点,如图1所示。
第一,时序电路通常包含组合电路和存储电路两个组成部分,而存储电路是必不可少的。
第二,存储电路的输出状态必须反馈到组合电路的输入端,与输入信号一起,共同决定组合逻辑电路的输出。
由于存储电路中触发器的动作特点不同,在时序电路中又有同步时序电路和异步时序电路之分。
在同步时序电路中,所有触发器状态的变化都是在同一时钟信号操作下同时发生的。
而在异步时序电路中,触发器状态的变化不是同时发生的。
此课程设计的研究就是主要针对同步时序电路中的计数器。
图1时序逻辑电路的逻辑框图
时序电路的框图可以画成图1所示的普通形式,图中的
代表输入信号,
代表输出信号,
代表存储电路的输入信号,
代表存储电路的输出。
这些信号的逻辑关系可以用三个向量函数来描述:
2.2同步时序逻辑电路的一般设计方法
在设计时序逻辑电路时,要求设计者根据给出的具体逻辑问题,求出实现这一逻辑功能的逻辑电路。
所得到的设计结果应力求简单。
当选用小规模集成电路做设计时,电路最简的标准是所用的触发器和门电路的数目最少,而且触发器和门电路的输入端输入数目也最少。
而当使用中、大规模集成电路时,电路最简的标准是使用的集成电路数目最少,种类最少,而且互相间的连线也最少。
一般按如下步骤进行:
一、逻辑抽象,得出电路的状态转换图或状态转换表
就是将要求实现的时序逻辑电路功能表示为时序逻辑函数,可以用状态换
表的形式,也可以用状态转换图或状态机流程图的形式。
这就需要:
(1)分析给定的逻辑问题,确定输入变量、以及电路的状态数。
通常都是取原因(或条件)作为输入逻辑变量,取结果作输出逻辑变量。
(2)定义输入、输出逻辑状态和每个电路状态的含意,并将电路状态顺序编号。
(3)按照题意列出电路的状态转换表或画出电路的状态转换图。
这样,就把给定的逻辑问题抽象为一个时序逻辑函数了。
二、状态化简
若两个电路状态在相同的输入下有相同的输出,并且转换到同样一个次态去,则称这两个状态为等价状态。
显然,等价状态是重复的,可以合并为一个。
电路的状态数越少,设计出来的电路就越简单。
状态化简的目的就在于将等价状态合并,以求得最简的状态转换图。
三、状态分配
状态分配又称状态编码。
时序逻辑电路的状态是用触发器状态的不同组合来表示的。
首先,需要确定触发器的数目
。
因为
个触发器共有
种状态组合,所以为获得时序电路所需的
个状态,必须取
(1)
其次,要给每个电路状态规定对应的触发器状态组合。
每组触发器的状态组合都是一组二值代码,因而又将这项工作称为状态编码。
在
的情况下,从
个状态中取
个状态的组合可以有多种不同的方案,而每个方案中
个状态的排列顺序又有许多种。
如果编码方案选择得当,设计结果可以很简单。
反之,编码方案选得不好,设计出来的电路就会复杂的多,这里面有一定的技巧。
此外,为便于记忆和识别,一般选用的状态编码和它们的排列顺序都遵循一定的规律。
四、选定触发器的类型,求出电路的状态方程、驱动方程和输出方程
因为不同不同逻辑功能的触发器驱动方式不同,所以用不同类型触发器设计出的电路也不一样。
为此,在设计具体的电路前必须选定触发器的类型。
选择触发器类型时应考虑到器件的供应情况,并应力求减少系统中使用的触发器种类。
根据状态转换图(或状态转换表)和选定的状态编码、触发器的类型,就可以写出电路的状态方程、驱动方程和输出方程了。
五、根据得到的方程式画出逻辑图
六、检查设计的电路能否自启动
如果电路不能自启动,则需采取措施加以解决。
一种解决办法是在电路开始工作时通过预置数将电路的状态置成有效状态循环中的某一种。
另一种解决办法使通过修改逻辑设计加以解决。
至此,逻辑设计工作已经完成。
图2用方框图表示了上述设计工作的大致过程。
图2同步时序逻辑电路的设计过程
3设计
目前生产的同步计数器芯片基本上分为二进制和十进制两种,而十进制同步计数器的设计原理是以二进制同步计数器为基础的。
下面首先简单介绍二进制同步计数器构成所用到的T触发器的逻辑功能和特性,继而对同步二进制加法计数器的逻辑电路、驱动方程、状态方程、输出方程等等进行分析,再根据同步时序逻辑电路的设计步骤设计同步二进制加法计数器。
3.1二进制计数器原理
3.1.1T触发器[4]
同步计数器通常用T触发器构成,设计之前,首先要了解需要用到的T触发器的功能:
在某些场合,需要这样一种逻辑功能的触发器,当控制信号T=1时每来一个时钟信号它的状态就翻转一次;而当T=0时,时钟信号到达后它的状态保持不变。
具备这种逻辑功能的触发器称为T触发器。
它的特性表如表1所示。
从特性表写出T触发器的特性方程为
(2)它的状态转换图和逻辑符号如图3和图4所示。
事实上只要将JK触发器的两个输入端连在一起作为T端,就可以构成T触发器。
正因为如此在触发器的定型产品中通常没有专门的触发器。
因为MAX+plus
软件中含有T触发器,所以设计同步计数器时直接用的T触发器。
当T触发器的控制端接至固定的高电平时(即T恒等于1),则式
(2)变为
即每次CLK信号作用后触发器必然翻转成与初态相反的状态。
3.1.2同步二进制计数器的原理
根据二进制加法运算法则可知,在一个多位二进制数的末位加1时,若其第I位(即任何一位)以下各位皆为1时,则第I位应改变状态(由0变成1,由1变成0)。
而最低位的状态在每次加1时都要改变。
例如
1011011+1=1011100
按照上如原则,最低的三位改变了状态,而高四位状态未变。
由T触发器构成同步计数器,其结构形式有两种。
一种是控制输入端T的状态。
当每次CLK信号(也就是计数脉冲)到达时,是该翻转的那些触发器输入控制端
,不该翻转的
。
另一种形式是控制时钟信号,每次计数脉冲到达时,只能加到该翻转的那些触发器的CLK输入端上,而不能加给那些不该翻转的触发器。
同时,将所有的触发器接成
的状态。
由此可知,当通过T端的状态控制时,第i位触发器输入端的逻辑式应为
(3)
只有最低位例外,按照计数规则,每次输入计数脉冲时它都要翻转,故
。
3.2二进制计数器设计
自下向上的硬件电路设计方法的主要步骤是:
根据系统对硬件的要求,详细编制技术规格书,并画出系统控制流图,对系统的功能进行细化,合理地划分功能模块,并画出系统的功能框图;接着进行各功能模块的细化和电路设计;各功能模块的电路设计、调试完成后,将各功能模块的硬件电路连接起来再进行调试;最后完成整个系统的硬件设计。
自下至上的设计方法充分体现在各功能模块的电路设计中。
下面以四位二进制计数器为例加以说明。
图3四位二进制计数器的状态转换图
3.2.1四位二进制计数器设计
逻辑抽象,得到电路的状态转换图或状态转换表。
取进位信号为输出逻辑变量C,同时规定有进位输出时C=1,无进位输出时C=0。
十进制计数器应该有十六个有效状态若分别用S0、S1、···
表示,则可画出图4所示的电路状态转换图。
因为二进制计数器必须用16个不同的状态表示已经输入的脉冲数。
根据式
(1)知,现要求
,故应取触发器位数
,因为
16=24(4)
假如对状态分配无特殊要求,可以取自然二进制数0000~1111作为S0~S15的编码,于是得到了表3中的状态编码。
计数脉冲
电路状态
等效十进制数
进位输出C
Q3
Q2
Q1
Q0
0
0
0
0
0
0
0
1
0
0
0
1
1
0
2
0
0
1
0
2
0
3
0
0
1
1
3
0
4
0
1
0
0
4
0
5
0
1
0
1
5
0
6
0
1
1
0
6
0
7
0
1
1
1
7
0
8
1
0
0
0
8
0
9
1
0
0
1
9
0
10
1
0
1
0
10
0
11
1
0
1
1
11
0
12
1
1
0
0
12
0
13
1
1
0
1
13
0
14
1
1
1
0
14
0
15
1
1
1
1
15
1
16
0
0
0
0
0
0
表3:
二进制电路的状态转换表
由于电路的次态Q3*Q2*Q1*Q0*和进位输出C唯一地取决于电路的现态Q3Q2Q1Q0的取值,故可根据表3画出表示次态逻辑函数和进位输出函数的卡诺图,如图9所示。
为清晰起见,可将图9所示的卡诺图分解为图10所示的五个卡诺图,分别表示为Q3*、Q2*、Q1*、Q0*和C这五个逻辑函数。
从卡诺图可以得到电路的状态方程为:
(5)
电路的输出方程为
(6)
图5
(1)所示电路就是按式(3)接成的4位二进制同步加法计数器,所用T触发器为上升沿有效。
由图可见,各触发器的驱动方程为
(7)
Q1Q0
Q3Q2
00
01
11
10
00
0001/0
0010/0
0100/0
0011/0
01
0101/0
0110/0
1000/0
0111/0
11
1101/0
1110/0
0000/1
1111/0
10
1001/0
1010/0
1100/0
1011/0
图4电路次态输出
Q1Q0
Q3Q2
00
01
11
10
00
0
0
0
0
01
0
0
1
0
11
1
1
0
1
10
1
1
1
1
Q1Q0
Q3Q2
00
01
11
10
00
0
0
1
0
01
1
1
0
1
11
1
1
0
1
10
0
0
1
0
Q1Q0
Q3Q2
00
01
11
10
00
1
0
0
1
01
1
0
0
1
11
1
0
0
1
10
1
0
0
1
Q1Q0
Q3Q2
00
01
11
10
00
0
1
0
1
01
0
1
0
1
11
0
1
0
1
10
0
1
0
1
(c)Q1*
(d)Q0*
Q1Q0
Q3Q2
00
01
11
10
00
0
0
0
0
01
0
0
0
0
11
0
0
1
0
10
0
0
0
0
(e)C
图5卡诺图的分解
根据状态方程和输出方程求出电路的状态转换表,如表2所示。
利用第16个计数脉冲到达时C端电位的下降可作为向高位计数器电路进位的输出信号。
图7为所示电路的时序图。
有时序图可以看出,若计数输入脉冲的频率为
,则Q0、Q1、Q2和Q3端输出脉冲的频率将依次为
、
、
和
。
针对计数器的这种分频功能,也将它称为分频器。
此外,每输入16个计数脉冲计数器工作一个循环,并在输出端Q3产生一个进位输出信号,所以又将这个电路称为16进制计数器。
计数器中能计到的最大数称为计数器的容量,它等于计数器所有各位全为1时数值。
位二进制计数器的容量等于
-1。
在实际生产的计数器芯片中,往往还会附加一些控制电路,以增加电路的功能和使用的灵活性。
例如增加预置数、保持和异步置零等附加功能。
3.2.2检查设计的电路能否自启动
将6个无效状态1010、1011、1100、1101、1110和1111分别代入状态方程中,由得次态或次态的次态可知,电路能够自启动。
图7为完整的状态转换图。
4仿真
4.1仿真原理
本文使用了MAX+plusII[5]对设计的电路进行设计仿真。
MAX+plusII是世界最大的可编程器件供应商之一的Altera公司推出的一款CPLD/FPGA开发平台。
其全称为MultipleArrayMatrixandProgrammableLogicUserSystems。
它具有原理图输入和文本输入(采用硬件描述语言)两种输入手段,可支持VHDL、VerilogHDL、AHDL[6]多种硬件描述语言;利用该工具所配备的编辑、编译、仿真、综合、芯片编程等功能,将设计图电路或电路描述程序变成基本的逻辑单元写入到可编程的芯片中(如FPGA芯片),做成ASIC[7]芯片。
它是EDA设计中不可缺少的一种有用工具,目前在国内使用较为普遍,符合工业标准,能在各类设计平台上运行,操作方便、简单易学。
但是,由于该工具是针对可编程芯片而设计的,因此它不支持系统行为级的描述和仿真。
以下图八为MAX+plusII进行CPLD/FPGA设计的流程:
图8CPLD/FPGA设计的流程
4.2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 同步 二进制 加法 计数器 设计 仿真