第七章 组合逻辑电路设计_第1页
第七章 组合逻辑电路设计_第2页
第七章 组合逻辑电路设计_第3页
第七章 组合逻辑电路设计_第4页
第七章 组合逻辑电路设计_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第七章组合逻辑电路设计第一页,共五十页,编辑于2023年,星期四定义:任一时刻的输出仅仅取决于当时的输入,与电路原来的状态无关,这样的数字电路叫做组合逻辑电路。常用组合逻辑电路有以下几种:

概述1、各种基本门电路(与门、或门、非门、异或门…)2、多选器(二选一、四选一、八选一、…)3、编码器4、译码器5、奇偶校验器6、三态门7、缓冲器第二页,共五十页,编辑于2023年,星期四用自下至上的设计方法设计一个三人表决器第一步,选择逻辑元、器件。我们选择与非门。第二步,进行电路设计。列真值表画卡诺图化简并写出逻辑函数表达式画逻辑电路图第三页,共五十页,编辑于2023年,星期四组合逻辑电路设计方法(补充)设计步骤:(1)建立描述逻辑问题的真值表①分析题目所给的条件②找出问题的条件与目的及因果关系③确定输入、输出变量④列出真值表(2)由真值表写出逻辑函数表达式;(如:用最小项积之和的形式)(3)对输出逻辑函数进行化简(4)画出逻辑电路图

第四页,共五十页,编辑于2023年,星期四基本的门电路包括有“与”门、“或”门、“非”门、“与非”门、“或非”门、“异或”门等等,它门是构成逻辑电路的基础。7.1简单门电路第五页,共五十页,编辑于2023年,星期四设计实例1:2输入“与非”门电路设计aby输入输出aby001011101110&第六页,共五十页,编辑于2023年,星期四设计方案1:LIBRARYieee;USEieee.std_logic_1164.all;ENTITYnand2_1IS PORT(a,b:INSTD_LOGIC; y:OUTSTD_LOGIC);ENDENTITYnand2_1;ARCHITECTUREnandOFnand2_1ISBEGINy<=aNANDb;ENDARCHITECTUREnand;此设计方案,描述很简洁,接近于2输入与非门的行为描述,易于阅读。NAND是逻辑运算符“与非”。第七页,共五十页,编辑于2023年,星期四LIBRARYieee;USEieee.std_logic_1164.all;USEieee.std_logic_unsigned.all;ENTITYnand2_2ISPORT(a,b :INSTD_LOGIC; y :OUTSTD_LOGIC);ENDENTITYnand2_2;ARCHITECTUREnandOFnand2_2ISBEGINPROCESS(a,b)ISVARIABLEcomb:STD_LOGIC_VECTOR(1DOWNTO0);BEGINcomb:=a&b;CASEcombISWHEN"00"=>y<='1';WHEN"01"=>y<='1';WHEN"10"=>y<='1';WHEN"11"=>y<=‘0';WHENOTHER=>y<=‘X';ENDCASE;ENDPROCESS;ENDARCHITECTUREnand;

设计方案2:此设计方案,以2输入与非门的真值表为依据来编写的,罗列了2输入与非门的每种输入状态及其对应的输出结果。CASE语句从许多不同的语句的序列中选择其中之一执行。case表达式iswhen分支条件=>顺序处理语句;when分支条件=>顺序处理语句;when分支条件=>顺序处理语句;endcase;┇并置运算符“&”用于位的连接,构成了两位长度位矢量第八页,共五十页,编辑于2023年,星期四课堂练习请用VHDL设计一个三输入与非门。第九页,共五十页,编辑于2023年,星期四LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYNAND3ISPORT(A,B,C:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDENTITYtest1;ARCHITECTURENANDOFNAND3ISBEGINQ<=not(AandBandC);ENDARCHITECTUREtest1;第十页,共五十页,编辑于2023年,星期四在数字系统中,译码器的功能是将一种数码变换成另一种数码。译码器的输出状态是其输入变量各种组合的结果。译码器的输出既可以用于驱动或控制系统其他部分,也可驱动显示器,实现数字、符号的显示。码器是一种组合电路,工作状态的改变无需依赖时序脉冲。译码器可分为数码译码和显示译码两大类。7.2译码器第十一页,共五十页,编辑于2023年,星期四3-8译码器设计3个二进制输入端A0、A1、A2,8个译码输出端Y0-Y7。对输入值进行译码,就可以确定哪个输出端为有效电平,从而达到译码目的。G1、G2A、G2B是3个选通输入端,只有在G1=1,G2A=0,G2B=0时,译码器正常译码,否则Y0-Y7均为高电平。第十二页,共五十页,编辑于2023年,星期四

输入输出G1

G2A

G2B

A2

A1

A0

Y0

Y1

Y2

Y3

Y4

Y5

Y6

Y7

×1××××11111111××1×××111111110×××××1111111110000001111111100001101111111000101101111110001111101111100100111101111001011111101110011011111101100111111111103线—8线译码器74138真值表

第十三页,共五十页,编辑于2023年,星期四

按数据流描述方式编写的3线—8线译码器74138LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdecoder138ISPORT(G1,G2A,G2B:INSTD_LOGIC;A:INSTD_LOGIC_VECTOR(2DOWNTO0);Y:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDENTITYdecoder138;ARCHITECTUREdataflowOFdecoder138ISBEGINPROCESS(G1,G2A,G2B,A)ISBEGINIF(G1='1'ANDG2A='0'ANDG2B='0')THEN第十四页,共五十页,编辑于2023年,星期四

CASEAISWHEN"000"=>Y<="11111110";WHEN"001"=>Y<="11111101";WHEN"010"=>Y<="11111011";WHEN"011"=>Y<="11110111";WHEN"100"=>Y<="11101111";WHEN"101"=>Y<="11011111";WHEN"110"=>Y<="10111111";WHENOTHERS=>Y<="01111111";ENDCASE;ELSEY<="11111111";ENDIF;ENDPROCESS;ENDARCHITECTUREdataflow;case表达式iswhen分支条件=>顺序处理语句;when分支条件=>顺序处理语句;when分支条件=>顺序处理语句;endcase;┇第十五页,共五十页,编辑于2023年,星期四7.2编码器

用一组二进制代码按一定规则表示给定字母、数字、符号等信息的方法称为编码,能够实现这种编码功能的逻辑电路称为编码器。第十六页,共五十页,编辑于2023年,星期四输入输出I0

I1

I2

I3I4

I5I6I7

A2

A1

A0

10000000000010000000010010000001000010000011000010001000000010010100000010110000000011118线—3线编码器真值表

A2=I4+I5+I6+I7A1=I2+I3+I6+I7A0=I1+I3+I5+I7

逻辑表达式:第十七页,共五十页,编辑于2023年,星期四例:采用行为描述方式的8线—3线编码器VHDL源代码

(依据逻辑表达式)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcoder83_v1ISPORT(I0,I1,I2,I3,I4,I5,I6,I7:INSTD_LOGIC;A0,A1,A2:OUTSTD_LOGIC);ENDENTITYcoder83_v1;ARCHITECTUREbehaveOFcoder83_v1ISBEGINA2<=I4ORI5ORI6ORI7;A1<=I2ORI3ORI6ORI7;A0<=I1ORI3ORI5ORI7;ENDARCHITECTUREbehave;第十八页,共五十页,编辑于2023年,星期四例:采用数据流描述方式的8线—3线编码器VHDL源代码(依据真值表)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYcoder83_v2ISPORT(I:INSTD_LOGIC_VECTOR(7DOWNTO0);A:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDENTITYcoder83_v2;ARCHITECTUREdataflowOFcoder83_v2ISBEGINPROCESS(I)ISBEGIN第十九页,共五十页,编辑于2023年,星期四CASEIISWHEN"10000000"=>A<="111";WHEN"01000000"=>A<="110";WHEN"00100000"=>A<="101";WHEN"00010000"=>A<="100";WHEN"00001000"=>A<="011";WHEN"00000100"=>A<="010";WHEN"00000010"=>A<="001";WHENOTHERS=>A<="000";ENDCASE;ENDPROCESS;ENDARCHITECTUREdataflow;第二十页,共五十页,编辑于2023年,星期四优先编码器优先编码器常用于中断的优先控制。当其某一个输入有效时,就可以输出一个对应的3位二进制码。另外,当同时有几个输入有效时,将输出优先级最高的那个输入所对应的二进制码。第二十一页,共五十页,编辑于2023年,星期四低电平有效input(0)优先级最高,input(1)优先级次之,如此类推,input(7)优先级最低第二十二页,共五十页,编辑于2023年,星期四LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYpriorityencoderISPORT(input:INSTD_LOGIC_VECTOR(7DOWNTO0);y:OUTSTD_LOGIC_VECTOR(2DOWNTO0));ENDENTITYpriorityencoder;ARCHITECTURErtlOFpriorityencoderIS

BEGINPROCESS(input)ISBEGINIF(input(0)=‘0’)THENy<=“111”;ELSIF(input(1)=‘0’)THEN

y<=“110”;按行为数据流方式编写优先编码器的VHDL源代码如下:方法:利用if多选择语句自顶向下的优先特性input(0)优先级最高,input(1)优先级次之,如此类推,input(7)优先级最低第二十三页,共五十页,编辑于2023年,星期四

ELSIF(input(2)=‘0’)THEN

y<=“101”;

ELSIF(input(3)=‘0’)THEN

y<=“100”;

ELSIF(input(4)=‘0’)THEN

y<=“011”;

ELSIF(input(5)=‘0’)THEN

y<=“010”;

ELSIF(input(6)=‘0’)THEN

y<=“001”;ELSE

y<=“000”;ENDIF;ENDPROCESS;ENDARCHITECTURErtl;利用IF多选择语句,自顶向下的优先特性。第二十四页,共五十页,编辑于2023年,星期四注意:采用数据流编写优先编码器时,因为VHDL语言目前还不能描述任意项,即下面的语句形式是非法的:WHEN“0XXXXXXX”=>A<=“000”;因此不能用CASE语句来描述74148,而采用IF语句对74148进行了逻辑描述。第二十五页,共五十页,编辑于2023年,星期四7.3选择器在多路数据传送过程中,能够根据需要将其中任意一路选出来的电路,叫做数据选择器,也称多路选择器或多路开关。

第二十六页,共五十页,编辑于2023年,星期四8选1数据选择器设计YbD7D71110D6D60110D5D51010D4D40010D3D31100D2D20100D1D11000D0D0000010XXX1A0A1A2GY地址选择使能输出输入741518选1数据选择器真值表

第二十七页,共五十页,编辑于2023年,星期四参考74151的真值表,采用IF语句结构编写的VHDL源代码如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux8ISPORT(A:INSTD_LOGIC_VECTOR(2DOWNTO0);D0,D1,D2,D3,D4,D5,D6,D7:INSTD_LOGIC;G:INSTD_LOGIC;Y:OUTSTD_LOGIC;YB:OUTSTD_LOGIC);ENDENTITYmux8;ARCHITECTUREdataflowOFmux8ISBEGINPROCESS(A,D0,D1,D2,D3,D4,D5,D6,D7,G)IS用IF语句设计8选1选择器第二十八页,共五十页,编辑于2023年,星期四BEGINIF(G='1')THENY<='0';YB<='1';ELSIF(G='0'ANDA="000")THENY<=D0;YB<=NOTD0;

ELSIF(G='0'ANDA="001")THENY<=D1;YB<=NOTD1; ELSIF(G='0'ANDA="010")THENY<=D2;YB<=NOTD2;

ELSIF(G='0'ANDA="011")THENY<=D3;YB<=NOTD3;用IF语句设计8选1选择器(续)多选择控制的IF语句格式:

IF

条件

THEN

顺序处理语句;

ELSIF

条件

THEN

顺序处理语句;

ELSIF

条件

THEN

顺序处理语句;

ELSE

顺序处理语句;

END

IF;第二十九页,共五十页,编辑于2023年,星期四

ELSIF(G='0'ANDA="100")THENY<=D4;YB<=NOTD4;

ELSIF(G='0'ANDA="101")THENY<=D5;YB<=NOTD5;ELSIF(G='0'ANDA="110")THENY<=D6;YB<=NOTD6;ELSEY<=D7;YB<=NOTD7;ENDIF;ENDPROCESS;ENDARCHITECTUREdataflow;用IF语句设计8选1选择器(续)第三十页,共五十页,编辑于2023年,星期四参考74151的真值表,采用CASE语句结构编写的VHDL源代码如下LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmux8ISPORT(A2,A1,A0:INSTD_LOGIC;D0,D1,D2,D3,D4,D5,D6,D7:INSTD_LOGIC;G:INSTD_LOGIC;Y:OUTSTD_LOGIC;YB:OUTSTD_LOGIC);ENDENTITYmux8;ARCHITECTUREdataflowOFmux8ISSIGNALcomb:STD_LOGIC_VECTOR(3DOWNTO0);BEGINcomb<=G&A2&A1&A0;用CASE语句设计8选1选择器并置运算符“&”用于位的连接,构成了四位长度位矢量第三十一页,共五十页,编辑于2023年,星期四PROCESS(comb,D0,D1,D2,D3,D4,D5,D6,D7,G)ISBEGINCASEcombISWHEN"0000"=>Y<=D0;YB<=NOTD0;WHEN"0001"=>Y<=D1;YB<=NOTD1;

WHEN"0010"=>Y<=D2; YB<=NOTD2;WHEN"0011"=>Y<=D3; YB<=NOTD3; WHEN"0100"=>Y<=D4; YB<=NOTD4;WHEN"0101"=>Y<=D5; YB<=NOTD5;用CASE语句设计8选1选择器(续)Case语句使用注意:1)分支条件的值必须在表达式的取值范围内。2)两个分支条件不能重叠。3)CASE语句执行时必须选中,且只能选中一个分支条件。4)如果没有others分支条件存在,则分支条件必须覆盖表达式所有可能的值。std_logc,std_logic_vector数据类型要特别注意使用others分支条件。第三十二页,共五十页,编辑于2023年,星期四WHEN"0110"=>Y<=D6; YB<=NOTD6;WHEN"0111"=>Y<=D7; YB<=NOTD7;WHENOTHERS=>Y<='0'; YB<='1';ENDCASE;ENDPROCESS;ENDARCHITECTUREdataflow;用CASE语句设计8选1选择器(续)第三十三页,共五十页,编辑于2023年,星期四其中:A和B是两个相加的8位二进制数;Cin是低位进位位;S是A、B相加之和;Co是A、B相加之后的进位位。7.4加法器

加法器是数字电路中的基本运算单元,下例是直接利用VHDL运算符“+”实现加法运算的8位加法器源代码。第三十四页,共五十页,编辑于2023年,星期四输入输出CIABSCO0000000110010100110110010101011100111111全加器真值表第三十五页,共五十页,编辑于2023年,星期四LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYadder8ISPORT(A:INSTD_LOGIC_VECTOR(7DOWNTO0);B:INSTD_LOGIC_VECTOR(7DOWNTO0);Cin:INSTD_LOGIC;Co:OUTSTD_LOGIC;S:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDENTITYadder8;声明了IEEE库中的包集合STD_LOGIC_UNSIGNED,才能对STD_LOGIC_VECTOR类型数据进行加减运算把两位输入A,B分别定义成8位二进制数,输出S也定义成8位二进制数,低位进位和高位进位定义为1位逻辑位

带进位的8位加法器设计第三十六页,共五十页,编辑于2023年,星期四ARCHITECTUREbehaveOFadder8ISSIGNALSint:STD_LOGIC_VECTOR(8DOWNTO0);SIGNALAA,BB:STD_LOGIC_VECTOR(8DOWNTO0);BEGINAA<='0'&A(7DOWNTO0);BB<='0'&B(7DOWNTO0);Sint<=AA+BB+Cin;S(7DOWNTO0)<=Sint(7DOWNTO0);Co<=Sint(8);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论