数字电路与系统设计(txt+pdf+epub+mobi电子书下载)


发布时间:2020-12-07 05:26:28

点击下载

作者:黄丽亚 杨恒新 朱莉娟 张苏

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

数字电路与系统设计

数字电路与系统设计试读:

前言

数字电路是电子、通信、计算机、自动化、航天等专业的重要专业基础课。在当今信息数字化时代,随着CMOS工艺的发展,数字电子技术中TTL的主导地位被撼动。在工程实践中,数字电路的文本描述已逐渐取代图形描述。FPGA/CPLD器件的大量应用,也改变了数字系统的设计理念、设计方法,使数字电子技术开创了新局面,不仅规模大,而且将硬件与软件相结合,使器件的功能更加完善,使用更灵活。因而,数字电路的教学内容也需要不断更新和改进,以适应人才培养的需要。

本书参照教育部“数字电路与逻辑设计课程教学基本要求(讨论稿)”,在东南大学出版社出版的《数字电路与系统设计》的基础上,总结多年本科“数字电路”课程教学改革经验编写而成。压缩了函数化简内容,精简了MSI、SSI电路介绍,加强了有限状态机设计、数字系统的分析与设计、HDL语言及典型电路描述等内容。本教材的特色如下。

●进一步强化自顶向下的数字系统设计理念。在整个设计过程中尽量运用概念(即抽象)去描述和分析设计对象,而不过早地考虑实现该设计的具体电路、元器件和工艺,以抓住主要矛盾,避免纠缠在具体细节上。本书详细介绍了如何设计一个思路清晰、可靠性高、维护性好的数字系统,并增设多个设计案例进行说明。

●按工作特点不同,将ROM和RAM分开介绍。以PROM为重点,将ROM与其他PLD器件(PAL、PLA、GAL、CPLD和FPGA)有机地串接在一起;以SRAM为重点,将RAM与触发器有机地融合在一起。

●每章设有浅显易懂的VHDL编程实例,让读者在潜移默化中理解VHDL语言的精髓。为便于查阅VHDL语法规范,同时考虑Verilog也广泛使用,以附录形式提纲挈领地讲解了这两种硬件描述语言的基本知识。

●为让读者更好地适应主流CAD开发工具,顺利地阅读国外文献,本书的门电路符号均采用IEEE Std 91a-1991中的特定外形图形符号。为便于教学,中规模器件使用了示意性的简化符号;在门电路中缩减了逐渐退出的TTL门电路,重点介绍CMOS门电路。

本书由黄丽亚、杨恒新、朱莉娟和张苏共同编写。其中第3章、第4章、第5章由黄丽亚编写,第8章和第5章中的5.7小节由杨恒新编写,第1章、第2章和附录C由朱莉娟编写,第6章、第7章、附录A和附录B由张苏编写。全书由黄丽亚、杨恒新统稿、定稿,张盼盼进行汇总和格式整理。作者向多年从事数字电路课程教学、为本书积累了大量资料和编写思路的张顺兴老师表示衷心的感谢。此外,南京邮电大学电子科学与工程学院电子电路教学中心的老师为本书的编写提供了宝贵的意见,编者在此一并表示衷心的感谢!

由于编者水平有限,书中难免有不妥之处,恳请读者批评指正。编者2014年10月

教学建议

续表

第1章 数制与码制

内容提要本章首先介绍数字电路的一些基本概念及数字电路中常用的数制与码制;然后介绍二进制数的算术运算及数字逻辑中的基本逻辑运算;最后介绍硬件描述语言。

随着数字电路与系统的开发和应用,现在众多的电子系统,如电子计算机、通信系统、自动控制系统、影视音响系统等,均使用了数字电路。相对于模拟电路而言,数字电路具有不可比拟的突出优势。数字电路中使用了二进制,通常采用“0”和“1”构成的代码来描述各种有关对象。而硬件描述语言则是对数字电路和系统进行性能描述和模拟的语言。

1.1 数字信号与数字电路概述

数字电路同模拟电路一样,也经历了由分立器件电路到集成电路的发展,且集成度已达到超大规模集成电路的水平。数字电路与系统的体积小,工作可靠性高,应用极其广泛。

1.1.1 数字信号

数字电路中处理的信号是数字信号。在现代技术的信号处理中,数字信号发挥的作用越来越大,几乎复杂的信号处理都离不开数字信号。

信号数据可用于表示任何信息,如符号、文字、语音、图像等。从表现形式上可归结为两类:模拟信号和数字信号。模拟信号与数字信号的区别可根据幅度取值是否离散来确定。

模拟信号指幅度的取值是连续的(幅值可由无限个数值表示)。模拟信号常常是物理现象中被测量对变化的响应。例如,声音、光、温度、位移、压强,这些物理量可以使用传感器测量。时间上离散的模拟信号是一种抽样信号,它是对模拟信号每隔时间T抽样一次所得到的信号。虽然其波形在时间上是不连续的,但其幅度取值是连续的,所以仍是模拟信号。当然,在电学上所提的模拟信号往往是指幅度和相位都连续的电信号,此信号可以被模拟电路进行各种运算,如放大、相加和相乘等。图1.1.1就是模拟信号的例子,正弦波信号是典型的模拟信号。

数字信号指人们抽象出来的时间上不连续的信号,其幅度的取值是离散的,且幅值被限制在有限个数值之内。十字路口的交通信号灯、数字式电子仪表、自动生产线上产品数量的统计等都是数字信号。图 1.1.2 就是数字信号的例子,矩形波信号是典型的数字信号。由图1.1.2可以看出,数字信号的特点是突变和不连续。数字电路中的波形都是这类不连续的波形,通常这类波形又称为脉冲。图1.1.1 模拟信号图1.1.2 数字信号

1.1.2 数字电路与系统

传递与处理数字信号的电子电路称为数字电路或数字系统。由于它具有逻辑运算和逻辑处理功能,所以又称数字逻辑电路。数字电路与模拟电路相比主要有下列优点。

① 数字电路是以二值数字逻辑为基础的,只有“0”和“1”两个基本数字,易于用电路来实现。例如,可用二极管、三极管的导通与截止这两个对立的状态来表示数字信号的逻辑“0”和逻辑“1”。

② 由数字电路组成的数字系统工作可靠,精度较高,抗干扰能力强。它可以通过整形很方便地去除叠加于传输信号上的噪声与干扰,还可利用差错控制技术对传输信号进行查错和纠错。

③ 数字电路不仅能完成数值运算,而且能进行逻辑判断和运算,这在控制系统中是不可缺少的。

④ 数字信息便于长期保存。例如,可将数字信息存入磁盘、光盘等长期保存。

⑤ 数字集成电路产品系列多、通用性强、成本低。

由于具有一系列优点,数字电路在电子设备或电子系统中得到了越来越广泛的应用,计算机、计算器、电视机、音响系统、视频记录设备、光碟、长途电信及卫星系统等,无一不采用了数字系统。

按照电路有无集成元器件来分,数字电路可分为分立元件数字电路和集成数字电路。现代的数字电路大多是由半导体工艺制成的若干数字集成器件构造而成。按集成电路的集成度进行分类,数字电路可分为小规模集成数字电路(SSI,Small Scale Integrated Circuits)、中规模集成数字电路(MSI,Medium Scale Integrated Circuits)、大规模集成数字电路(LSI,Large Scale Integrated Circuits)和超大规模集成数字电路(VLSI,Very Large Scale Integrated Circuits)。

数字电路根据逻辑功能的不同特点,又可以分成两大类,一类叫组合逻辑电路(简称组合电路),另一类叫时序逻辑电路(简称时序电路)。组合逻辑电路在逻辑功能上的特点是任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关。而时序逻辑电路在逻辑功能上的特点是任意时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态,或者说,还与以前的输入有关。

1.2 数制

数制是计数体制(即计数的方法)的简称,有累加计数制和进位计数制两种。累加计数制是原始的计数方法,计多大的数就要使用与所计数目个数相等的各不相同的计数符号,很不方便。比较方便的计数方法是进位计数制,本章所述数制即指进位计数制。常用的进位计数制有十进位计数制(十进制)以及二进制、八进制、十六进制。

1.2.1 数制的基本知识

在介绍各种数制之前,首先介绍数制的基础知识。

1.基本数码

基本数码是指计数制中使用的基本数字符号,简称数码。例如,十进制中的0、1、2、3、4、5、6、7、8、9便是数码。

2.基数(R)

计数制中所使用的数码的个数称为基数,亦称底数。基数常用R表示,在十进制中R=10。在基数为R的数制中,每一个数位上可以使用的数码包括0在内共有R个,最大数码是R-1,而没有R,因此计数时当某位数计到R时,则在该位记作0,并向高位进一,即逢R进一,故基数为R的计数制称为R进制计数制。

3.数位(i)

在由一串数码构成的数中,数码所在的位置称数位。数位的排序用i表示,i的计算以小数点为界,向左依次为第0位、第1位……向右依次为第-1位、第-2位……例如,在十进制数123.45中,3是第0位数,2是第1位数,4是第-1位数等。

4.位权(Weight)

位权亦称权值。在进位计数制的由一串数码构成的数中,各个数位上的数码所表示的数值的大小不但和该数码本身的大小有关,而且还和该数码所处的数位有关。例如,在十进制数44 中,十位数4表示104×10,个位数4表示4×10。可见,不同的数位赋予该位上的数码以不同的表示数的大小的权力。我们把数位上的数码在表示数时所乘的倍数称为该数位的位权。i

在R进制数中,第i位数位的权值用W表示,W=R。其中,R是基ii数,i是数位的位数。例如,十进制数的第0位(个位)、第1位、第-101-1位的位权分别为10、10、10。

在由一串数码表示的数中,相邻两个数位中左边数位的位权是右边的R倍。

5.数的表示方式

在进位计数制中,数的表示方式有位置记数法、按权展开式、和式3种。

以十进制数123.45为例,分别可以表示为(N)=123.45····························································位10

置计数法210-1-2=1×10+2×10+3×10+4×10+5×10·················按权展开式i=D×10·······················································和i式

其中,(N)的脚标10表示N为十进制数。二进制、八进制、十进10制、十六进制数分别用脚标2、8、10、16或B、O、D、H表示。位置记数法是用一串数码来表示数,也称并列记数法;按权展开式是用多项式来表示一个数,又称多项式表示法,多项式中的各个乘积项由各个数位上的数码加权(即乘上权值)构成;和式则是把按权展开式表i示为 ∑的形式,D表示第i位数位上的十进制数码,10为第i位的权i值。

对于任意一个R进制数(N),可以用三种方式表示为R(N)=aa…aa.aa…a································· 位置Rm-1m-210-1-2-n

计数法m-1m-210=a×R+a×R+…+a×R+a×R+m-1m-210-1-2-na×R+a×R…a×R·····························按权展-1-2-n开式i=a×R······················································和式i

式中,a,a,…,a分别为第m-1,m-2,…,-n位上的数码;Rm-1m-2-n为基数;m和n分别为整数部分和小数部分的位数;i为数位的序号。

1.2.2 常用数制

人们通常采用的数制有十进制、二进制、八进制和十六进制。下面将分别介绍二进制、八进制和十六进制。

1.二进制(Binary)

数码:0、1;

基数:R=2;i

第i位的权值:W=2。i

表示方式示例:210-1-2(101.01)=1×2+0×2+1×2+0×2+1×22i=B×2i

2.八进制(Octal)

数码:0、1、2、3、4、5、6、7;

基数:R=8;i

第i位的权值:W=8。i

表示方式示例:10-1(25.6)=2×8+5×8+6×88i=O×8i

3.十六进制(Hexadecimal)

数码:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F;

基数:R=16;i

第i位的权值:W=16 。i

其中,数码A、B、C、D、E、F依次与十进制数10、11、12、13、14、15等值,但A、B、C、D、E、F在十六进制中是1位数。

表示方式示例:210-1(12D.23)=1×16+2×16+13×16+2×16+3×16-216i=H×16i

需要说明的是,在数字技术中用得最多的是二进制数。这是因为二进制中只有两个数码,很容易用高低电平来表示;如果采用十进制,则需要用10个不同的状态来表示十进制中10个不同的数码,很不容易。此外,二进制数的运算也比较简单,因此机器数都用二进制数表示。但是用二进制表示的数往往很长,不便于书写和记忆,相对而言,八进制、十六进制数的书写和记忆比较方便,而且和二进制数之间的转换也很方便,因此,又常用八进制和十六进制数作为二进制数的缩写形式用于书写、输入和显示。

1.2.3 数制转换

下面将介绍各种数制间的转换方法。

1.二(八、十六)进制数→十进制数

将二进制、八进制、十六进制数转换成十进制数,只要把原数写成按权展开式再相加即可。

例1.2.1分别将(101.01)、(74.5)、(3C.A)转换成十进制数。2816210-1-2

解:(101.01)=1×2+0×2+1×2+0×2+1×2=(5.25)21010-1(74.5)=7×8+4×8+5×8=(60.625)81010-1(3C.A)=3×16+12×16+10×16=(60.625)1610

2.十进制数→二进制数

十进制数转换成二进制数只需将整数部分和小数部分分别转换成二进制数,再将转换结果连接在一起即可。

整数的转换用“除2取余法”:将十进制数除以基数2,得商和余数,取下余数作为目标数制数的最低位数码;将所得的商再除以基数又得商和余数,取下余数作为目标数制数的次低位数码……如此连续进行,直至商为0,余数小于目标数制的基数2为止,末次相除所得的余数为目标数制数的最高位数码。

小数的转换用“乘2取整法”:将被转换的十进制小数乘以目标数制的基数2,取下所得乘积中的整数作为目标数小数的最高位;再将乘积中的小数部分乘以基数 2,取下乘积中的整数作为目标数小数的次高位……如此反复进行,直到乘积的小数部分为0或达到所需精度为止。各次相乘所得的整数即可构成目标数的小数,第一次相乘所得的整数为小数的最高位,末次相乘所得的整数为小数的最低位。

例1.2.2将(60.625)转换成二进制数。10

解:(1)对整数60进行“除2取余”

所以,(60)=(111100)。102(2)对小数0.625进行“乘2取整”

所以,(0.625)=(0.101)。102(3)整数和小数部分的转换结果连接在一起(60.625)=(111100.101)102

采用乘基数取整法将十进制小数转换成二进制、八进制、十六进制小数时,可能出现多次相乘后乘积的小数部分仍不为0的情况。这时应按照所需的精度来确定位数。-n-2

一个R进制n位小数的精度为R ,如(0.95)的精度为10。10

例1.2.3(0.39)=( ? ),要求精度达到1%。102-n

解:设转换后的二进制数小数点后面有n位小数,则其精度为2,由题意可知-n2≤1%

解得n≥7,取n=7。

所以,(0.39)=(0.0110001)。102

3.二进制数和十六进制数之间的相互转换4

十六进制数的进位基数是 16=2,因此二进制数和十六进制数之间的转换非常简单。将二进制数转换成十六进制数时,整数部分从低位起每4位分成一组,最高位一组不足4位时以零补足,小数部分从高位起每4位分成一组,最低位一组不足4位时也以零补足,然后,依次以1位16进制数替换4位二进制数即可。

例1.2.4将二进制数101101.01001转换成十六进制数。

解:(101101.01001)=(0010 1101.0100 1000)=(2D.48)2216

将十六进制数转换成二进制数时,其过程正好相反,即用4位二进制数替换1位16进制数。

例1.2.5将十六进制数(23A.D)转换成二进制数。16

解:(23A.D)=(0010 0011 1010.1101)=(1000111010.1101)1622

4.二进制数和八进制数之间的相互转换3

八进制数的进位基数是8=2,将二进制数转换成八进制数时,整数部分从低位起每3位分成一组,最高位一组不足3位时以零补足,小数部分从高位起每3位分成一组,最低位一组不足3位时也以零补足,然后,依次以1位8进制数替换3位二进制数即可。

例1.2.6将二进制数10101.00111转换成八进制数。

解:(10101.00111)=(010 101.001 110)=(25.16)228

将八进制转数换成二进制数时,用3位二进制数依次替换1位8进制数即可。

例1.2.7将八进制数(27.3)转换成二进制数。8

解:(27.3)=(010 111.011)=(10111.011)822

5.十进制数转换成十六进制数、八进制数

十进制数转换成十六进制数和八进制数时,通常采用的方法是首先把十进制数转换成二进制数,然后再把得到的二进制数转换成十六进制数或八进制数。所用到的转换方法上面均已介绍过。

例1.2.8将十进制数215.625转换成十六进制数和八进制数。

解:(215.625)=(11010111.101)=(D7.A)=(327.5)102168

1.3 码制

用文字、符号或数码来表示各个特定对象的过程称为编码,编码所得的每组符号称为代码或码字,代码中的每个符号称为基本代码或码元。在数字电路中通常用二进制数码构成的代码来表示各有关对象(如十进制数、字符等)。码制是指编码的制式,不同的码制编码时遵循不同的规则。

1.3.1 二进制码

所谓二进制码是指用二进制数码“0”和“1”构成的代码。n位n的二进制码可以有2个代码。

表1.3.1 给出了几种典型的二进制码。表1.3.1 典型二进制码

1.自然二进制码

自然二进制码是通常用以表示数值的一种二进制码。从编码的角度看,二进制数也是一种表示数的代码,称为自然二进制码。例如,1100既可以说它是数12的二进制数,又可以说它是数12的自然二进制码。不过,虽然一个数的自然二进制码和其二进制数在写法上完全一样,但在概念上是不一样的,前者是码制中的概念,后者是数制中的概念。表1.3.1中给出了4位自然二进制码,代码中每个码元的位权自左至右分别为8、4、2、1,16个代码依次分别用来表示数0~15。

2.格雷码、循环码

在一组数的编码中,若任意两个相邻数的代码中只有一位对应的码元不同,则称这种编码为格雷码(Gray Code)。格雷码的种类很多,循环码是其中的典型。在循环码中,不仅相邻的两个代码只有1位码元不同,而且首尾两个代码也是如此,表1.3.1中给出了4位循环码。使用循环码可以减少电路工作时出错的可能。通常把两个代码中取值不同的码元的位数称为两个代码的间距,把两个相邻代码中只有一位对应码元取值不同的特点称为单位间距特性。格雷码和循环码都具有单位间距特性,因此,它们都是单位间距码。

循环码的各个代码除最左位以外,其他各位均以最左位0和1的水平分界线为轴镜像对称;循环码的最左位,分界线以上均为0,以下均为1。上述特点称为循环码的反射特性。利用反射特性可以由n位循环码方便地写出n+1位循环码。例如,1位、2位、3位、4位循环码如图1.3.1所示。图1.3.1 1位、2位、3位、4位循环码

3.奇(偶)校验码

奇(偶)校验码示于表1.3.1中。这种码由信息码加一个奇校验位P(奇)或偶校验位P (偶)构成,其中校验位的取值(0或1)将使各个代码(包括信息码和校验位)中“1”的个数为奇数或偶数。若使“1”的个数为奇数,称为奇校验码;为偶数,则称为偶校验码。奇(偶)校验码的用处是通过检测经传输以后的代码中“1”的个数是否为奇数(或是否为偶数),即进行奇校验(或偶校验)来判断信息在传输过程中是否有一位码元出错。

格雷码、循环码、奇(偶)校验码都是一种可靠性编码。奇、偶校验码具有一定的检测错码的能力,是一种误差检验码,但只能检错而不能纠错。使用海明码则可以达到检测并纠正错码的要求。

1.3.2 二-十进制(BCD)码

所谓二-十进制码又称BCD(Binary Coded Decimal)码,是指用二进制数码0和1来表示的十进制数码0,1,2,…,9,或者说是十进制数码0,1,2,…,9的二进制编码。要表示0~9这10个十进制数码,使用的代码至少需要有4位码元。由于4位二进制数可以构成16个不同的代码,因此,构成BCD码的方案可以有多种,不过最常用的也只是其中的几种。BCD码可以分为有权码和无权码两大类,表1.3.2列出了几种最常用的BCD码,其编码规则各不相同。表1.3.2 几种常用的BCD码

1.有权码

代码中的每一位都有固定权值的代码称为有权码或恒权码。有权码的名称通常用4个码位的位权来命名。表1.3.2中的8421BCD、5421BCD、2421BCD都是有权码。

各种有权BCD码所表示的十进制数D可以由按权展开式求得。例如,8421BCD码bbbb所表示的十进制数码为D= 8b+4b+2b+1b。32l03210

2.无权码

代码中的各位没有固定权值的代码称为无权码。表1.3.2中的余3码、余3循环码和格雷码都是无权码。

余3 BCD码由8421BCD码加3得到,其主要特点是0和9、1和8、2和7、3和6、4和5的代码互为反码,具有这种特点的代码称为自补码(Self Complementing Code)。

表1.3.2中的余3 BCD循环码和格雷BCD码分别由表1.3.1的4位二进制代码中的典型格雷码(循环码)去掉6个代码构成,仍具有原代码所具有的单位间距特性或检错特性。其中,余3 BCD循环码是从循环码的第4个码字开始依次取10个而形成。

每种4位二进制代码共有16个代码,在表1.3.2所列的各种常用BCD码中,未列出的代码是该码制中不允许出现的代码,称为禁用码或非法码,因为它们不与单个十进制数码相对应,是不允许出现的。如8421BCD码中的1010~1111六个代码即是8421BCD码中的禁用码(非法码)。

一个多位的十进制数可以用多个 BCD 代码表示,表示时代码之间应有间隔。例如,用8421BCD码表示(123)时,其书写形式为10(123)=(0001 0010 0011)108421BCD

应该注意,用 BCD 码表示的十进制数不是二进制数,也不能直接转化为二进制数。要转换,应先将其转换成十进制数,再由十进制数转换成二进制数。

3.8421BCD码的加法运算

两个 8421BCD 码相加时,可把其当作自然二进制码相加,如在相加所得结果中未出现8421BCD码的非法码,则该结果就是所需的8421BCD码。但如在相加结果中出现了8421BCD码的非法码或在相加过程中在 BCD 数位上出现了向高位的进位,则应对非法码及产生进位的代码进行“加6(0110)修正”。在作多位8421BCD码相加时,如果在“加6(0110)修正”过程中又出现非法码,则还需继续作“加6修正”。

例1.3.1试用8421BCD码分别求1+9及8+8。

解:①

所以,1+9=(0001 0000)=(10)。8421BCD10

所以,8+8=(0001 0110)=(16)。8421BCD10

例1.3.2试用8421BCD码求712+989。

所以,712+989=(0001 0111 0000 0001)=(1701)。8421BCD10

4.8421BCD码的减法运算

8421BCD码相减时,由于在进行减法运算时使用了四位二进制减法运算“借一当十六”的规则,而8421BCD码相减时应为“借一当十”,故当发生借位时应进行“减6修正”。

例1.3.3试用8421BCD码求113-55。

解:

所以,113-55=(0000 0101 1000)=(58)。8421BCD10

1.4 算术运算与逻辑运算

在数字电路中,l位二进制数码的0和1不仅可以表示数量的大小,而且可以表示两种不同的逻辑状态。当两个二进制数码表示两个数量大小时,它们之间可以进行数值运算,这种运算称为算术运算;当两个二进制数码表示两种不同逻辑状态时,它们之间可以进行逻辑运算。

1.4.1 算术运算

二进制数算术运算的法则和十进制数的运算法则基本相同。唯一的区别在于十进制数是逢十进一、借一当十,而二进制数是逢二进一、借一当二。

以两个二进制数1001和0101为例,其算术运算如下。

需要说明的是,在数字电路中为了简化运算电路,通常二数相减的运算是用其补码的加法来实现的,乘法运算则用移位和加法两种操作来完成,而除法运算是用移位和减法操作来完成,因此,二进制数的加、减、乘、除都可以用加法电路完成。所以在数字设备中加法器是极为重要的运算部件。

1.4.2 逻辑运算

在数字电路中,l位二进制数码的0和1不仅可以表示数量的大小,而且可以表示两种不同的逻辑状态。例如,可以用1和0分别表示一件事情的是和非、真和伪、有和无、好和坏,或者表示电路的通和断、电灯的亮和暗等。这种只有两种对立逻辑状态的逻辑关系称为二值逻辑。

逻辑代数中只有三种基本运算:与、或、非。只有当决定一件事情的条件全部具备之后,这件事情才会发生,这种因果关系称为与逻辑;当决定一件事情的几个条件中,只要有一个或一个以上条件具备,事情就会发生,这种因果关系称为或逻辑;某事情发生与否,仅取决于一个条件,且条件具备时事情不发生,条件不具备时事情才发生,这种因果关系称为非逻辑。

除了以上三种基本逻辑运算外,还有一些逻辑运算是综合运用了上述三种基本运算,形成了各种复合逻辑运算。

关于逻辑运算的详细讨论将在第2章中进行。

1.5 HDL

HDL(Hardware Description Language)是硬件描述语言。硬件描述语言是一种对数字电路和系统进行性能描述和模拟的语言,即利用高级语言来描述硬件电路的功能、信号连接关系以及各器件间的时序关系。数字电路和数字系统设计者利用这种语言来描述自己的设计思想,然后利用电子设计自动化工具进行仿真、综合,最后利用专用集成电路或可编程逻辑器件来实现其设计功能。其设计理念是将硬件设计软件化,即采用软件的方式来描述硬件电路。

硬件描述语言(HDL)有很多种,目前在我国广泛应用的硬件描述语言主要有ABEL语言、AHDL语言、VerilogHDL语言和VHDL语言等。其中,VerilogHDL语言和VHDL语言最为流行,它们作为IEEE标准化的硬件描述语言,具有许多优点:能够抽象地描述电路结构和行为,支持逻辑设计层次与领域的描述,硬件描述与实现工艺无关,易于理解和可移植性好等。但是VHDL相对于Verilog HDL而言,语法上更严谨些。虽然这样也使它失去了一些灵活性和多样性,但是从文档记录、综合性以及器件和系统级的仿真上讲,VHDL是一种更好的选择。

VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。自IEEE公布了 VHDL 的标准版本 IEEE-1076(简称 87 版)之后,各 EDA 公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993 年,IEEE对 VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展 VHDL 的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本(简称93版)。

习题

1.1数字信号和模拟信号有何区别?

1.2 数字电路有哪些持点?

1.3 将下列各数写成按权展开式。(352.6),(101.101,(54.6),(13A.4F)10)2816

1.4 按十进制数0~17的顺序,列表写出相应的二进制、八进制、十六进制数。

1.5二进制数00000000~11111111和0000000000~1111111111分别可以代表多少个数?

1.6将下列各数分别转换成十进制数。(1111101000),(1750),(3E8)2816

1.7将下列各数分别转换成二进制数。(210),(136),(88)81016

1.8将下列各数分别转换成八进制数。(111111),(63),(3F)21016

1.9将下列各数分别转换成十六进制数。(11111111),(377),(255)2810

1.10转换下列各数,要求转换后保持原精度。(1.125)=(  )102(0010 1011 0010)=(  )2421BCD2(0110.1010)余3循环BCD=(  )2

1.11用下列代码表示(123),(1011.01):102(1)8421BCD码; (2)余3 BCD码数。

1.12将下列十进制数分别转换成二进制、八进制、十六进制数。(127),(130.525),(218.5)101010

1.13已知A=(1011010),B=(101111),C=(1010100),D=(110)。2222(1)按二进制运算规律求A+B,A-B,C×D,C÷D;(2)将A、B、C、D转换成十进制数后,求A+B,A-B,C×D,C÷D,并将结果与(1)进行比较。

1.14试用8421BCD码完成下列十进制数的运算。(1)5+8; (2)9+8; (3)58+2; (4)9-3; (5)87-25; (6)843-348。

1.15试导出1位余3 BCD码加法运算的规则。

第2章 逻辑代数理论及电路实现

内容提要逻辑代数是分析和设计数字电路的数学工具。本章首先介绍逻辑代数中的各种运算及其电路实现、逻辑运算的公式和规则;然后介绍逻辑函数的标准形式和逻辑函数的化简方法;最后介绍逻辑门电路的VHDL描述。

逻辑代数是分析和设计逻辑电路的数学基础。逻辑代数是由英国科学家乔治·布尔(George Boole)创立的,故又称布尔代数。用以实现逻辑运算的电子电路称为逻辑门电路。本章将开始详细介绍逻辑代数理论及其电路实现。

2.1 逻辑代数中的运算

1847年,英国数学家乔治·布尔提出了用数学分析方法表示命题陈述的逻辑结构,并成功地将形式逻辑归结为一种代数演算,从而诞生了著名的“布尔代数”。1938年,克劳德·向农将布尔代数应用于电话继电器的开关电路,提出了“开关代数”。随着电子技术的发展,集成电路逻辑门已经取代了机械触点开关,故“开关代数”这个术语已很少使用。为了与“数字系统逻辑设计”这一术语相适应,人们更习惯于把开关代数叫作逻辑代数。

客观世界中某一事件(结果)是否发生总是和发生该事件的条件(原因)是否具备有关,所谓逻辑就是指条件和结果之间的因果关系。事物间最基本的因果关系是与、或、非三种逻辑关系,任何复杂的因果关系都可由它们复合而成。

2.1.1 基本逻辑及运算

与逻辑、或逻辑和非逻辑是三种最基本的逻辑关系。逻辑代数中的基本运算也只有三种:与运算、或运算和非运算。

1.与逻辑和与运算

只有当决定一件事情的条件全部具备之后,这件事情才会发生,我们把这种因果关系称为与逻辑。图 2.1.1(a)是用以说明与逻辑的指示灯控制电路,只有当该图中的所有开关都合上时灯才亮。

可以用列表的方式表示上述逻辑关系,并用二值逻辑“0”和“1”来表示,称为逻辑真值表,如图2.1.1(b)所示。这里假设“1”表示开关闭合或灯亮,“0”表示开关断开或灯不亮。图2.1.1 与逻辑

若用逻辑表达式来描述,则可写为F=A· B

与逻辑的算符用“·”(或者“×”、“∧”、“∩”、“AND”)表示,读作“乘”,在不需要特别标出的地方,逻辑乘的算符通常可以省略不写。

与运算的规则为:“输入有0,输出为0;输入全1,输出为1”。即满足以下规则:

0·0=0   1·0=0

0 ·1=0   1·1=1

与运算可以推广到多变量,即F=A· B· C…

2.或逻辑和或运算

当决定一件事情的几个条件中,只要有一个或一个以上条件具备,这件事情就会发生,我们把这种因果关系称为或逻辑。

图 2.1.2(a)是用以说明或逻辑的指示灯控制电路,只要有一个或一个以上的开关合上灯就亮。或运算的真值表如图2.1.2(b)所示。图2.1.2 或逻辑

若用逻辑表达式来描述,则可写为F=A+B

或逻辑的算符用“+”(或者“∨”、“∪”、“OR”)表示,读作“加”。

或运算的规则为:“输入有1,输出为1;输入全0,输出为0”。即满足以下规则:

0+0=0  1+0=1

0+1=1   1+1=1

或运算也可以推广到多变量,即F=A+B+C…

3.非逻辑和非运算

某事情发生与否,仅取决于一个条件,而且是对该条件的否定,即条件具备时事情不发生,条件不具备时事情才发生,我们把这种因果关系称为非逻辑。

图 2.1.3(a)是用以说明非逻辑的指示灯控制电路,当开关闭合时,灯不亮;而当开关不闭合时,灯亮。非运算的真值表如图2.1.3(b)所示。图2.1.3 非逻辑

若用逻辑表达式来描述,则可写为-

非逻辑的算符用“”表示,读作“非”。

非运算的规则为

4.基本逻辑运算的图形符号

在数字电子技术中,与、或、非三种基本逻辑运算分别由与门、或门和非门(也叫反相器)实现。表2.1.1是三种基本逻辑运算的图形符号,也是逻辑门的符号。表2.1.1 三种基本逻辑运算的图形符号

2.1.2 复合逻辑运算

单独运用上述与、或、非运算,只能解决与之相应的基本逻辑。求解复杂的逻辑问题需要综合运用上述基本运算,这就是所谓的复合运算。常用的复合运算及其相应的算式有以下几种。

或非运算:

与非运算:

与或非运算:

异或运算:

同或运算:

上述复合逻辑的运算顺序是先做单个变量的非运算,再做乘运算,然后做加运算,最后做连接多个变量上的非号运算。

异或运算的算符“⊕”读作“异或”。由异或运算的定义式可知,两个变量相反时异或运算的结果为“1”,相同时异或运算的结果为“0”。

同或运算的算符“⊙”读作“同或”。由同或运算的定义式可知,两个变量相同时同或运算的结果为“1”,相反时同或运算的结果为“0”。

两变量的异或、同或互为反函数,即

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载