集成电路方案VerilogHDL时序电路方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
个人资料整理仅限学习使用
赣南师院
物理与电子信息学院集成电路课程设计报告书基于Verilog HDL的时序电路设计
姓名:
班级:
学号:
指导老师:陈建萍
时间:2018年5月
目录
摘要 (1)
关键词 (1)
1引言 (2)
2 时序逻辑电路 (3)
2.1 时序逻辑电路概述 (3)
2.2 同步时序逻辑电路的一般设计方法 (4)
3 设计 (5)
3.1 二进制计数器原理······························································53.1.1 同步
二进制加法计数器的原理 (5)
3.2 二进制计数器设计 (6)
3.2.1 四位二进制计数器的设计 (6)
4 硬件描述语言VHDL设计及仿真 (8)
4.1:用VHDL设计四位二进制加法计数器 (8)
4.2:仿真 (9)
4.2.1仿真波形 (9)
4.2.2时序分析 (10)
5体会与展望 (11)
6参考文献 (12)
7 附件 (13)
同步二进制加法计数器的设计与仿真
摘要:本文首先介绍了同步时序逻辑电路一般设计步骤,然后在理解和掌握同步二进制计数器原理的基础上,采用传统的设计方法设计出了一个同步四位二进制加法计数器,并且运用软件对四位二进制计数器进行了仿真,根据仿真结果,对时序和波形进行了分析。
最后采用VHDL语言设计了一个复杂的四位二进制加法计数器。
关键词:时序逻辑电路,同步二进制加法计数器,VHDL语言,仿真
Design and simulation of synchronous binary carry counter Abstract:this paper introduces the ordinary design method of sequential logic circuit at first. Then on the basis of theprinciple and the structure of synchronous binary counters,I designs up a four binary carry counter.The circuit is designed and the simulation of thiscircuit is carried out by. According to the results of the simulation, its waveform and timing delay are analyzed.At last, with the help of VHDL language,I designs up a complex synchronous binary carry counter.
Keywords:sequential logic circuit, synchronous binary counters,VHDL language,,simulation
1引言
计数器是数字电子技术中应用的最多的时序逻辑电路。
计数器不仅能用于对时钟脉冲计数,还可以用于分频、定时、产生节拍脉冲和脉冲序列以及进行数字运算等。
但是并无法显示计算结果,一般都是要通过外接LCD或LED屏才能显示。
20世纪70年代开始,用数字电路处理模拟信号的所谓“数字化”浪潮已经席卷了电子技术几乎所有的应用领域.时序电路的运用随处可见。
计数器是数字电路中使用最多的一种时序逻辑电路。
计数器是大规模集成电路中运用最广泛的结构之一。
计数器在现在电子电路中有着广泛的应用,它已经成为了数字设备常用的基本部件之一。
一个系统性能的好坏,常常与计数器的性能关系很大。
计数器的种类繁多。
按照计数器中的触发器是否同时翻转分类,可把计数器分为同步计数器和异步计数器,常用的同步计数器有74160系列、74LS190系列,常用的异步计数器有74LS290系列。
计数器是一种基础测量仪器,到目前为止已有30多年的发展史,早期设计师们追求的目标主要是扩展测量范围再加上提高测量精度和稳定度等,这些也是人们衡量电子计算器的技术水平,也决定电子计数器价格高低的主要依据,随着科学技术的发展,用户对电子计数器也提出了新的要求,对于低档产品要求使用操作方面,量程(足够>宽,可靠性高,价格低。
而对于中高档产品,则要求高分辨率,高精度,高稳定度,高测量速率。
目前主要采用两种设计方法来进行计数器的设计,第一种为采用传统的硬件电路设计方法来设计硬件,第二种为采用HDL语言来设计系统硬件。
电子设计自动化的普及与CPLD/FPGA器件的广泛应用,使得计数器的设计变得非常容易。
其中可编程计数器使用方便,灵活,能满足工程上的多种应用。
为了提高工业控制器中高速计数器的计数频率,利用FPGA设计,采用层次化的VHDL语言程序设计,可以有效地提高效率和增加灵活性。
高速计数器
累计比PLC扫描频率高得多的脉冲输入,利用中断事件完成既定的操作。
本文先对时序逻辑电路的分析方法进行一下简单的介绍,继而分析同步二进制加法计数器,最后对同步二进制加法计数器进行设计,对其性能进行分析,最后讨论了一下VHDL语言设计二进制加法计数器的优点及步骤。
2同步时序逻辑电路的设计方法
2.1 时序逻辑电路概述
在时序逻辑电路中,任意时刻的输出信号不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关。
具备这种逻辑功能特点的电路为时序逻辑电路(sequential logic circuit,简称时序电路>。
时序逻辑电路在结构上有两个显著的特点,如图1所示。
第一,时序电路通常包含组合电路和存储电路两个组成部分,而存储电路是必不可少的。
第二,存储电路的输出状态必须反馈到组合电路的输入端,与输入信号一起,共同决定组合逻辑电路的输出。
由于存储电路中触发器的动作特点不同,在时序电路中又有同步时序电路和异步时序电路之分。
在同步时序电路中,所有触发器状态的变化都是在同一时钟信号操作下同时发生的。
而在异步时序电路中,触发器状态的变化不是同时发生的。
此课程设计的研究就是主要针对同步时序电路中的计数器。
图1 时序逻辑电路的逻辑框图
时序电路的框图可以画成图1所示的普通形式,图中的()
i x x x X ,2,1 代表输入信号,
()j y y y Y ,2,1 代表输出信号,()k z z z Z ,2,1 代表存储电路的输入信号,()l q q q Q ,2,1 代
表存储电路的输出。
这些信号的逻辑关系可以用三个向量函数来描述:[]Q X F Y ,= []Q X G Z ,= []Q Z H Q ,*=
2.2 同步时序逻辑电路的一般设计方法
在设计时序逻辑电路时,要求设计者根据给出的具体逻辑问题,求出实现这一逻辑功能的逻辑电路。
所得到的设计结果应力求简单。
当选用小规模集成电路做设计时,电路最简的标准是所用的触发器和门电路的数目最少,而且触发器和门电路的输入端输入数目也最少。
而当使用中、大规模集成电路时,电路最简的标准是使用的集成电路数目最少,种类最少,而且互相间的连线也最少。
一般按如下步骤进行:
一、逻辑抽象,得出电路的状态转换图或状态转换表
二、状态化简
三、状态分配
四、选定触发器的类型,求出电路的状态方程、驱动方程和输出方程
五、根据得到的方程式画出逻辑图
六、检查设计的电路能否自启动
至此,逻辑设计工作已经完成。
上述设计工作的大致过程如图2所示。
图2 同步时序逻辑电路的设计过程
3设计
目前生产的同步计数器芯片基本上分为二进制和十进制两种,而十进制同步计数器的设计原理是以二进制同步计数器为基础的。
下面首先简单介绍二进制同步计数器构成所用到的T 触发器的逻辑功能和特性,继而对同步二进制加法计数器的逻辑电路、驱动方程、状态方程、输出方程等等进行分析,再根据同步时序逻辑电路的设计步骤设计同步二进制加法计数器。
3.1 二进制计数器原理
3.1.1同步二进制计数器的原理
根据二进制加法运算法则可知,在一个多位二进制数的末位加1时,若其第I 位<即任何一位)以下各位皆为1时,则第I 位应改变状态<由0变成1,由1变成0)。
而最低位的状态在每次加1时都要改变。
例如1011011+1=1011100
按照上如原则,最低的三位改变了状态,而高四位状态未变。
由T 触发器构成同步计数器,其结构形式有两种。
一种是控制输入端T 的状态。
当每次CLK 信号(也就是计数脉冲>到达时,是该翻转的那些触发器输入控制端1=i T ,不该翻转的0=i T 。
另一种形式是控制时钟信号,每次计数脉冲到达时,只能加到该翻转的那些触发器的CLK 输入端上,而不能加给那些不该翻转的触发器。
同时,将所有的触发器接成1=T 的状态。
由此可知,当通过T 端的状态控制时,第i 位触发器输入端的逻辑式应为∏-=--=∙∙∙∙=1
0121...i j j i i i Q Q Q Q Q T )1,...2,1(-=n i (1>
只有最低位例外,按照计数规则,每次输入计数脉冲时它都要翻转,故
10=T 。
3.2二进制计数器设计
自下向上的硬件电路设计方法的主要步骤是:根据系统对硬件的要求,详细编制技术规格书,并画出系统控制流图,对系统的功能进行细化,合理地划分功能模块,并画出系统的功能框图;接着进行各功能模块的细化和电路设
计。
各功能模块的电路设计、调试完成后,将各功能模块的硬件电路连接起来再进行调试;最后完成整个系统的硬件设计。
自下至上的设计方法充分体现在各功能模块的电路设计中。
下面以四位二进制计数器为例加以说明。
3.2.1四位二进制计数器设计
逻辑抽象,得到电路的状态转换图或状态转换表。
取进位信号为输出逻辑变量C,同时规定有进位输出时C=1,无进位输出时C=0。
十进制计数器应该有十六个有效状态若分别用S0、S1、···
S表示
15假如对状态分配无特殊要求,可以取自然二进制数0000~1111作为S0~S15的编码,状态编码如表1所示。
表1: 二进制电路的状态转换表
由于电路的次态Q 3*Q 2*Q 1*Q 0*和进位输出C 唯一地取决于电路的现态Q 3Q 2Q 1Q 0的取值,故可根据表1画出表示次态逻辑函数和进位输出函数的卡诺图,从卡诺图可以得到电路的状态方程为:
'*00Q Q = 10101''*Q Q Q Q Q +=
2102102)'('*Q Q Q Q Q Q Q +=(2> 321032103)'('*Q Q Q Q Q Q Q Q Q +=
电路的输出方程为 3210Q Q Q Q C = (3> 各触发器的驱动方程为
10=T 01Q T = 102Q Q T =
2103Q Q Q T = (4>
表2 电路次态输出
根据状态方程和输出方程求出电路的状态转换表。
利用第16个计数脉冲到达时C 端电位的下降可作为向高位计数器电路进位的输出信号。
若计数输入脉冲的频率为0f ,则Q 0、Q 1、Q 2和Q 3端输出脉冲的频率将依次为021f 、041f 、081f 和016
1f 。
针对计数器的这种分频功能,也将它称为分频器。
此外,每输入16个计数脉冲计数器工作一个循环,并在输出端Q 3产生一个进位输出信号,所以又将这个电路称为16进制计数器。
计数器中能计到的最大数称为计数器的容量,它等于计数器所有各位全为1时数值。
n 位二进制计数器的容量等于n 2-1。
在实际生产的计数器芯片中,往往还会附加一些控制电路,以增加电路的功能和使用的灵活性。
例如增加预置数、保持和异步置零等附加功能。
4硬件描述语言VHDL 设计及仿真
4.1用VHDL 设计四位二进制加法计数器
采用VHDL 语言设计一个4位二进制计数器74163,它具有同步清零、同步置数、计数控制和进位输出控制功能。
如图3所示。
图3 4位二进制计数器74163 各端口功能:
CLK :时钟信号,上升沿计数; CLRL :同步清零端,低电平有效; LDL :同步置位控制端,低电平有效;
ENP:与ENT同时为‘1’时,计数使能;
ENT:为‘1’时,可进行进位;
D[3..0]:计数器置数输入;
Q[3..0]:计数器状态输出;
RCO:计数器进位输出。
4.2 仿真
4.2.1仿真波形
图4 仿真波形
从仿真波形看,非常好的实现了既定的功能,从理论上来讲,这是一个比较合理的设计,功能比较复杂,但是实现过程还是比较的简单。
但是在实际的应用过程之中还要考虑延时,抖动等诸多因素。
4.2.2时序分析
1:建立和保持时间分析:
图5 建立和保持时间分析
建立和保持时间分析用来计算从输入引脚到触发器,锁存器和异步RAM的信号输入所需的最少建立时间和保持时间。
图显示clrl到触发器count_40.Q所需的最小建立/保持时间为 3.3ns/0.0ns,而其他的输入到各个触发器的时间各有差异。
2:时序逻辑电路性能分析:
图6 性能分析图
图6显示被分析的时钟名称为clk, 制约性能的源节点为cout_43.Q. 时钟信号的最高频率为113.63MHz,所需的最小时钟周期为8.8ns.
3:传输延迟分析:
图7 传输延迟图
通过图,可以看到输入节点clk到所有目标之间的延迟为2.8ns,因为clk 为全局时钟,它到所有逻辑单元的延迟相同。
单击List Paths 按钮,弹出的时间分析结果提示对话框提示设计者已完成了最长延迟路径的分析。
5体会与展望
通过做课程设计,我基本掌握了同步二进制加法计数器的设计与仿真方法,自己的动手能力有了进一步的提高。
采用传统的时序逻辑电路的设计方法,做出来的四位二进制计数器能够满足基本的设计要求,但是不易实现复杂的控制功能。
在仿真的时候,存在波形延时和时序误差,给它的应用带来的不利的影响。
在实际设计过程中要根据实际情况来选择器件和电路,以求达到最佳的效果。
在设计过程中我根据要求,只设计要计数器的核心部分,与实际在市场上流通的计数器相比,还有许多的不足之处,需要加以改进。
由于本人能力有限,目前只能够做到这样的水平,我会在以后加以提高。
6参考文献
[1] 曾专武黄卫立.任意模值的计数器设计比较[J].湖南城市学院学报.2003,6
期:119-121页
[2] 李锋卢佩刘成臣.应用VHDL语言在PLD器件上设计实现可编程计数器[J].
现代电子技术.2002年,5期:51-53页
[3] 何永泰肖丽仙.基于FPGA的高速计数器设计[J].电气应用.2006年,4期:140-
142页.
[4] 阎石. 数字电子技术基础(第五版>[M]. 北京:高等教育出版社,2006.
[5] 王辉殷颖陈婷.MAX+plus2和Quartus 2应用与开发技巧[M].机械工业出版
社,2007
[6] 侯伯亨,刘凯,顾新. VHDL硬件描述语言与数字逻辑电路设计(第三版)[M].
西安:电子科技大学出版社,2009.
[7] 东方人华.MAX+plus2入门与提高[M].北京:清华大学出版社.2004
[8]郑燕.基于VHDL语言与QuartusⅡ软件的可编程逻辑器件应用与开发.2007.
[9]杨晓慧.基于FPGA的EDA/SOPC技术与VHDL.2007.
[10]张霞.VHDL在现代EDA中的应用.2001.
[11]潘松、黄继业.EDA技术实用教程2002.
[12]李志方.EDA技术简介.2001.
[13] T Onomi.high-speed single flux-quantum up/down counter for neural
computation using stochastic logic[J].Journal of physics,Issue 1,2008
[14]Krishnaswamy,S.。
Plaza,S.M.。
Markov,I.L.。
Hayes,J.P. Signature-Based SER
Analysis and Design of Logic puter-Aided Design of Integrated
Circuits and Systems,IEEE Transactions on,2009, V ol.28 ,No.1:3-8
[15] T. Grzes。
V. Salauyou and I. Bulatova.Power estimation methods in digital
circuit design. Optoelectronics, Instrumentation and Data Processing,2009,V ol.45,No.6:4-7.
7附件
library ieee。
use ieee.std_logic_1164.all。
use ieee.std_logic_unsigned.all。
entity k74163 is
port(clk,clrl,ldl,enp,ent:in std_logic。
d:in std_logic_vector(3 downto 0>。
q:out std_logic_vector(3 downto 0>。
rco:out std_logic>。
end entity k74163。
architecture rtl of k74163 is
signal count_4:std_logic_vector(3 downto 0>。
begin
q<=count_4。
process(clk,clrl,ldl,enp,ent> is
begin
if (clk'event and clk='1'>then
if (clrl='0'> then
count_4<="0000"。
elsif (ldl='0'> then
count_4<=d。
elsif(ent='1'> then
if(count_4="1111">
then rco<='1'。
count_4<="0000"。
elsif(enp='1'>
end if。
end if。
end if。
end process。
end architecture rt
赣南师范学院2018—2018学年第_二_学期课程设计行政班级09级电子科学与技术学号0908030姓名
选课班级09级电子科学与技术任课教师陈建萍成绩。