实验一 组合逻辑电路的设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一 组合逻辑电路的设计

一、实验目的:

1、 掌握组合逻辑电路的设计方法。

2、 掌握组合逻辑电路的静态测试方法。

3、 加深FPGA 设计的过程,并比较原理图输入和文本输入的优劣。

4、 理解“毛刺”产生的原因及如何消除其影响。

5、 理解组合逻辑电路的特点。 二、实验的硬件要求:

1、 EDA/SOPC 实验箱。

2、 计算机。 三、实验原理

1、组合逻辑电路的定义 数字逻辑电路可分为两类:组合逻辑电路和时序逻辑电路。组合逻辑电路中不包含记忆单元(触发器、锁存器等),主要由逻辑门电路构成,电路在任何时刻的输出只和当前时刻的输入有关,而与以前的输入无关。时序电路则是指包含了记忆单元的逻辑电路,其输出不仅跟当前电路的输入有关,还和输入信号作用前电路的状态有关。

通常组合逻辑电路可以用图1.1所示结构来描述。其中,X0、X1、…、Xn 为输入信号, L0、L1、…、Lm 为输出信号。输入和输出之间的逻辑函数关系可用式1.1表示: 2、组合逻辑电路的设计方法

组合逻辑电路的设计任务是根据给定的逻辑功能,求出可实现该逻辑功能的最合理组 合电路。理解组合逻辑电路的设计概念应该分两个层次:(1)设计的电路在功能上是完整的,能够满足所有设计要求;(2)考虑到成本和设计复杂度,设计的电路应该是最简单的,设计最优化是设计人员必须努力达到的目标。

在设计组合逻辑电路时,首先需要对实际问题进行逻辑抽象,列出真值表,建立起逻辑模型;然后利用代数法或卡诺图法简化逻辑函数,找到最简或最合理的函数表达式;根据简化的逻辑函数画出逻辑图,并验证电路的功能完整性。设计过程中还应该考虑到一些实际的工程问题,如被选门电路的驱动能力、扇出系数是否足够,信号传递延时是否合乎要求等。组合电路的基本设计步骤可用图1.2来表示。

3、组合逻辑电路的特点及设计时的注意事项

①组合逻辑电路的输出具有立即性,即输入发生变化时,输出立即变化。(实际电路中

图 1.1 组合逻辑电路框图

L0=F0(X0,X1,···Xn) · · ·

Lm=F0(X0,X1,···Xn)

(1.1)

图 1.2 组合电路设计步骤示意图图

还要考虑器件和导线产生的延时)。

②组合逻辑电路设计时应尽量避免直接或间接的反馈,以免出现不确定的状态或形成振荡。如右图设计的基本触发器,当输入~S 、~R 从“00”变为“11”时,无法确定Q 和~Q 的值。

③组合逻辑电路容易出现“毛刺”,这是由于电路“竞争-冒险”产生的。如图1.3所示,图中与门的两个输入分别由信号 A 经过不同路径传递而来。按照理想情况分

析,电路输出端应该始终为 L=A ·~A =0。考虑到信号在逻辑门中的传输延迟,~A 到达与门输入端的时间始终落后于 A 。图 3.2-1(b )的波形显示,信号 A 的四次变化都产生了竞争。但这四次竞争引起的结果是不一样的。第一次和第三次竞争造 成输出错误,第二次和第四次竞争则没有造成输出错误。换言之,只有第一次和第三次竞争引起了冒险,产生了尖峰干扰。

由于“毛刺”的影响,应避免使用组合逻辑电路直接产生时钟信号,也应避免将组合逻辑电路的输出作为另一个电路的异步控制信号。如右图,本意是设计一个计数范围为“0~5”的六进制计数器,即输出QD 、QC 、QB 、QA 从5“0101”变到6“0110”时,与门输出“1”,控制“CLR ”异步复位到“0000”,但是由于输出从3“0011”变到4“0100”时,QC 先于QB 从“0”变到“1”,导致短暂的“0111”出现,使与门输出“1”,引起复位,从而使实际的电路计数范围为“0~3”,与设计的初衷相悖。

④用VHDL 描述组合逻辑电路时,所有的输入信号都应放在敏感信号表中。

⑤用IF 语句和CASE 语句描述电路分支时,一定要列举出所有输入状态(一般在最后加上“else ”或“when others ”分支),否则在综合时将引入LATCH ,使电路输出出现延时。

4、VHDL 语言简介

①VHDL 设计文件的基本结构

图 1.3 竞争-冒险实例

②一些约定

◆ 实体、信号、文件等的命名 ◆ 注释的使用

◆ 书写代码时使用层次缩进格式

◆ 一个文件中只定义一个实体,实体名与文件名一致 ◆ 尽量不使用“变量”,而使用“信号”

◆ 不使用硬件无法实现的一些语句,如断言语句、等待语句等 ③使用原理图工具栏的“block tool ”生成设计文件的框架

④使用“Edit ”菜单中的“Insert Template ……”插入设计模版 四、实验内容:

1、 用原理图方式设计1位二进制半加器半加器。

--********************** --NOT Gate Simulation --Filename:NOTGATE --********************** Library IEEE;

Use IEEE. std_logic_1164. all;

Entity notgate is port(

A :in STD_LOGIC; F :out STD_LOGIC; ); End notgate ;

Architecture notgate _arch of notgate is Begin

F<= not A End notgate _arch

注释栏

库和程序包

实体定义

定义输入输出引脚(即电路的外观) 结构体

描述电路的行为(即电路的功能实现)

图1.4 一位二进制半加器原理图

建立波形文件,对半加器电路分别进行时序仿真和功能仿真,其波形如下:

半加器时序仿真波形,注意观察输出延时,以及毛刺的产生原因

半加器功能仿真波形

用开关K1、K2输入A、B,用两个LED显示S和C。

2、设计BCD码译码器设计。

图1.4 七段数码管译码显示原理图

源码如下:

相关文档
最新文档