第章 常用数字逻辑电路单元与VHDL描述方法.doc
文本预览下载声明
第5章 常用数字逻辑电路单元与VHDL描述方法
第五章 常用数字逻辑电路与VHDL描述方法
我们在前面两章介绍了VHDL语言的基本语法、主要语句和VHDL程序的组成及结构。为了便于读者学习和掌握VHDL语言的设计方法,本章重点介绍用VHDL语言设计常用的组合逻辑电路、时序逻辑电路和有限状态机及存储器的设计方法。
5.1 组合逻辑电路的设计
所谓组合逻辑电路是指:在任何时刻,逻辑电路的输出状态只取决于电路的输入信号的组合,而与电路原有的状态无关,一旦输入发生变化,输出将立即做出响应。常用的组合逻辑电路主要有加法器、编码器、译码器、数据选择器、多路分配器、三态门及数据缓冲器、双向总线等。
5.1.1 加法器
完成n位二进制数相加的组合逻辑电路即为加法器,包含半加器和全加器两种逻辑电路。所谓半加器的运算只考虑了两个加数本身的加法运算,而没有考虑由低位来的进位,所以称为半加。而全加器是指两个多位二进制数相加时,除了最低位外,每一位都应考虑来自低位的进位,即将两个对应位的加数和来自低位的进位三个数相加,这种运算称为全加,实现全加运算的电路称为全加器。下面重点介绍全加器的实现。
根据全加器的功能,列出1位全加器的真值表,如表5-1所示。其中A和B分别是加数和被加数,Ci是相邻低位来的进位数,S为全加器的和,Co 是向相邻高位的进位数。
1
根据真值表,列出表达式:
S?ABCi?ABCi?ABCi?ABCi?A?B?CiCo?ABCi?ABCi?ABCi?ABCi?AB?(A?B)Ci
(2)VHDL代码
LIBRARY ieee;
USE ieee.std_logic_1164.all; ENTITY jiafaqi IS
PORT(a : IN STD_LOGIC; -- 加数 b : IN STD_LOGIC; --被加数 ci: IN STD_LOGIC; --相邻低位来的进位数 s : OUT STD_LOGIC; --全加器的和 co : OUT STD_LOGIC); --向相邻高位的进位数 END j iafaqi;
ARCHITECTURE one OF jiafaqi IS BEGIN
s lt;= a XOR b XOR ci;
co lt;= (a AND b)or ((a XOR b)AND ci); END one ;
5.1.2 编码器、译码器
1. 编码器
在数字系统中,将特定含义的输入信号(文字、数字、符号)转换成二进制代码的过程称为编码,而实现编码操作的数字电路称为编码器。
(1) 8线-3线优先编码器的功能
所谓优先编码器??是在任何时刻允许同时输入两个以上的编码信号,编码器只按预先约定的优先级别对其中一个优先级别最高的输入信号进行编码的编码器。8线-3线优先编码器有8个信号输入,3位二进制输出,ei为使能输入端,eo为使能输出端,gs为工作标志位,其真值表如表5-2所示。输入是低电平有效,输出是二进制反码输出。ei为使能输入端,低电平有效,只有当ei=0时,编码器才能正常工作;而在当ei=1时,所有的输出端均被封锁在高电平。i(7)的优先权最高,i(0) 的优先权最低;例如:输入信号i(7)=0时,对应输出是alt;=000。
2
(2)VHDL代码
-- 优先编码器的输入端i、优先编码器的使能输入端 ei、优先编码器的输出端a --优先编码器的使能输出端eo、 工作标志位gs ARCHITECTURE V1 OF decoder1 IS
BEGIN
PROCESS(i) BEGIN
IF ei=#39;1#39; THEN --使能端无效的情况 alt;=111; gslt;=#39;1#39;; eolt;=#39;1#39;;
ELSE --使能端有效,进行编码 IF i(7) = #39;0#39; THEN --对i(7) 编码 alt;=000; gslt;=#39;0#39;; eolt;=#39;1#39;;
ELSIF i(6) = #39;0#39; THEN --对i(6) 编码 alt;=001; gs
显示全部