
实验BCD码加法器.docx
14页实验二 文本输入方式设计数字逻辑电路一、实验目的:1、 掌握VHDL语言的基本语法和设计文件的基本结构2、 掌握组合逻辑电路的特性及设计和调试方法3、 掌握时序逻辑电路的特性及设计和调试方法4、 掌握常用的组合逻辑电路和时序逻辑电路的设计方法二、 实验的硬件要求:1 、 EDA/SOPC 实验箱2、 计算机三、 实验原理 数字逻辑电路可分为两类:组合逻辑电路和时序逻辑电路组合逻辑电路中不包含记忆单元(触发器、锁存器等),主要由逻辑门电路构成,电路在任何时刻的输出只和当前时刻 的输入有关,而与以前的输入无关时序电路则是指包含了记忆单元的逻辑电路,其输出不 仅跟当前电路的输入有关,还和输入信号作用前电路的状态有关1、组合逻辑电路 ①组合逻辑电路的定义通常组合逻辑电路可以用图1.1所示结构来描述其中,X0、XI、…、Xn为输入信号, L0、 L1、„、 Lm 为输出信号输入和输出之间的逻辑函数关系可用式1.1 表示:X0组合逻辑电路►L0XnL0=F0(X0,X1,・・・ Xn) j• 卜(1.1)Lm=F0(X0,X1,・• • Xn) J图 2.1 组合逻辑电路框图②组合逻辑电路的设计方法 组合逻辑电路的设计任务是根据给定的逻辑功能,求出可实现该逻辑功能的最合理组 合电路。
理解组合逻辑电路的设计概念应该分两个层次:(1)设计的电路在功能上是完整的, 能够满足所有设计要求;(2)考虑到成本和设计复杂度,设计的电路应该是最简单的,设计 最优化是设计人员必须努力达到的目标在设计组合逻辑电路时,首先需要对实际问题进行逻辑抽象,列出真值表,建立起逻辑 模型;然后利用代数法或卡诺图法简化逻辑函数,找到最简或最合理的函数表达式;根据简 化的逻辑函数画出逻辑图,并验证电路的功能完整性设计过程中还应该考虑到一些实际的 工程问题,如被选门电路的驱动能力、扇出系数是否足够,信号传递延时是否合乎要求等 组合电路的基本设计步骤可用图 1.2 来表示图 2.2 组合电路设计步骤示意图图③组合逻辑电路的特点及设计时的注意事项a) 组合逻辑电路的输出具有立即性,即输入发生变化时,输出立即变化实际电路中还要考虑器件和导线产生的延时)b) 组合逻辑电路设计时应尽量避免直接或间接的反 馈,以免出现不确定的状态或形成振荡如右图设计的 基本触发器,当输入〜S、〜R从“00”变为“11”时,无 法确定Q和〜Q的值尖峰干扰图 2.3 竞争-冒险实例c) 组合逻辑电路容易出现"毛刺”,这是由于电路"竞 争-冒险”产生的。
如图 1.3 所示,图中与门的两个输入 分别由信号A经过不同路径传递而来按照理想情况分 析,电路输出端应该始终为L=A •〜A=0考虑到信号在逻辑门中的传输延迟,〜A到达 与门输入端的时间始终落后于A图3.2-1 (b)的波形显示,信号A的四次变化都产生了 竞争但这四次竞争引起的结果是不一样的第一次和第三次竞争造 成输出错误,第二次 和第四次竞争则没有造成输出错误换言之,只有第一次和第三次竞争引起了冒险,产生了由于“毛刺”的影响,应避免使用组合逻辑电路直接产生时钟信号,也应避免将组合逻 辑电路的输出作为另一个电路的异步控制信号d) 用VHDL描述组合逻辑电路时,所有的输入信号都应放在敏感信号表中e) 用IF语句和CASE语句描述电路分支时,一定要列举出所有输入状态(一般在最后 加上“else”或“when others”分支),否则在综合时将引入LATCH,使电路输出出现延时2、时序逻辑电路① 时序逻辑电路的定义 数字逻辑电路可分为两类:组合逻辑电路和时序逻辑电路组合逻辑电路中不包含记忆单元(触发器、锁存器等),主要由逻辑门电路构成,电路在任何时刻的输出只和当前时刻 的输入有关,而与以前的输入无关。
时序电路则是指包含了记忆单元的逻辑电路,其输出不 仅跟当前电路的输入有关,还和输入信号作用前电路的状态有关② 同步时序逻辑电路的设计方法 同步时序逻辑电路的设计是分析的逆过程,其任务是根据实际逻辑问题的要求,设计出能实现给定逻辑功能的电路同步时序电路的设计过程:(1)根据给定的逻辑功能建立原始状态图和原始状态表a)明确电路的输入条件和相应的输出要求,分别确定输入变量和输出变量的数目和符 号;b) 找出所有可能的状态和状态转换之间的关系;c) 根据原始状态图建立原始状态表;(2)状态化简---求出最简状态图 合并等价状态,消去多余状态的过程称为状态化简 等价状态:在相同的输入下有相同的输出,并转换到同一个次态去的两个状态称为等价 状态3)状态编码(状态分配) 给每个状态赋以二进制代码的过程根据状态数确定触发器的个数,2n-1ZM < 2n (M为状态数;n为触发器的个数)4)选择触发器的类型 5 )求出电路的激励方程和输出方程 6 )画出逻辑图并检查自启动能力 ③时序逻辑电路的特点及设计时的注意事项a) 时序逻辑电路与组合逻辑电路相比,输出会延时一个时钟周期b) 时序逻辑电路一般容易消除“毛刺”c) 用VHDL描述时序逻辑电路时,一般只需将时钟信号和异步控制(如异步复位)信 号作为敏感信号。
d) 用IF语句描述时序逻辑电路时,异步控制逻辑应写在前面的分支中,最后一个ELSIF 分支作为时钟边沿检测,后面不允许再有ELSE语句e) 不能同时使用时钟的上升沿和下降沿3、VHDL 语言简介①VHDL设计文件的基本结构*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1*i*T* rTx rTx--NOT Gate Simulation--Filename:NOTGATE*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* k1* *1* *1* *1* *1* k1* *1* *1* rT» i*T* ^Tx rTx rTxLibrary IEEE;Use IEEE. std_logic_1164. all;Entity notgate isport(A:in STD_LOGIC;F:out STD_LOGIC;);End notgate ;Architecture notgate _arch of notgate isBeginF<= not AEnd notgate _arch注释栏库和程序包实体定义 定义输入输出 引脚(即电路 的外观)结构体 描述电路的行 为(即电路的 功能实现)②一些约定♦ 实体、信号、文件等的命名♦注释的使用♦ 书写代码时使用层次缩进格式♦ 一个文件中只定义一个实体,实体名与文件名一致♦ 尽量不使用“变量”,而使用“信号”不使用硬件无法实现的一些语句,如断言语句、等待语句等③使用原理图工具栏的“block tool”生成设计文件的框架④使用“Edit”菜单中的“Insert Template 四、实验内容:1、设计一个BCD码加法器。
插入设计模版BCD码是二进制编码的十进制码,也就是用4位二进制数来表示十进制中的0〜9这十 个数由于4位二进制数有0000〜1111共16种组合,而十进制数只需对应4位二进制数的 10种组合,故从4位二进制数的16种组合中取出10种组合来分别表示十进制中的0〜9, 则有许多不同的取舍方式,于是便形成了不同类型的BCD码本实验我们只针对最简单的情况,也是最常见的BCD码,就是用4位二进制的0000〜 1001来表示十进制的0〜9,而丢弃4位二进制的1010〜1111共6种组合,这样一来,就相 当于用4位二进制的0〜9对应十进制的0〜9这样的BCD码进行相加时会出现两种可能, 一种可能是当两个BCD码相加的值小于10时,结果仍旧是正确的BCD码;另外一种可能是 当两个码相加的结果大于或者等于10时,就会得到错误的结果,这是因为4位二进制码可 以表示0〜15,而BCD码只取了其中的0〜9的原因对于第二种错误的情况,有一个简单 的处理方法就是作加6处理,就会得到正确的结果面举例说明第二种情况的处理过程假如 A=(7)10=(0111)2=(0111)BCD, B=(8)10=(1000)2=(1000)BCD,那么 A+B=(15)10=(1111)2 工(0001 0101)BCD。
但是对于(1111)2+(0110)2=(0001 0101)2=(0010 0001)BCD因此在程序设计时要注意两个输入的BCD码相加结果是否会出现大于或等于 10的情况,如果是则必须作加6的修正处理BCD 码加法器的 VHDL 源码如下:.1:;13141516171819202122232425262728293031323334-- Title : BCD码•加法器— I-1 at a■: 2 0 0 9 — 4 — 151 iljrary ieee;use ieee ・ st.d_ 1 □ iic_ 1164 ・ all; use ieee ・ 31d_1□gic_arith・ all;u曰已 i已已已.std logic unsign已匚1・all;S entity BCDADDER isS port ( E: : in std_ 1 □ gic_vect□ r (3 cloTiTntu □);ni_Re s Li 11: □ li匚 s td_ lu g i c_ve c t □ r i: 7 do Tijnt □ 0 :i)~ ~end BCDADDER;--输入:2个耳位BCD码—转换结果H architecture luehave uf BCDADDEP. issigna 1 A_Temp f B_T已mp : 曰td_logic_vect.ur (7 downt.u u); S beginprocess (A, E) --判断第果IjFginA_TeiEip<=pr □□□□".£ A;eFt已眄=U 1 ■£' 0 1 ■£ 1 U 1 ■£' U 1 -£B :if (A<1U and B
]ccunterW :elk Q[3.0]-D[3..O] COLDCR4:inst图 2.5 十进制加法计数器如图2.5所示,elk为时钟输入,Q为十进制的8421BCD码输出,CO为进位输出,CR 为异步清零,LD为异步置数,CR具有最高优先级,D为LD有效时置入的数据CR、LD 一般用按钮控制,通常为低电平有效。
