数字电子技术(第五版) 课件 第3章 组合逻辑电路_第1页
数字电子技术(第五版) 课件 第3章 组合逻辑电路_第2页
数字电子技术(第五版) 课件 第3章 组合逻辑电路_第3页
数字电子技术(第五版) 课件 第3章 组合逻辑电路_第4页
数字电子技术(第五版) 课件 第3章 组合逻辑电路_第5页
已阅读5页,还剩125页未读 继续免费阅读

下载本文档

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

文档简介

第3章组合逻辑电路一、组合逻辑电路的特点

根据逻辑功能的不同,可把数字电路分为组合逻辑电路(CombinationalLogicCircuit)和时序逻辑电路(SequentialLogicCircuit)两大类。数字电路01组合逻辑电路02时序逻辑电路任意时刻的输出仅仅取决于该时刻的输入,而与电路原来的状态无关。功能特点:只由逻辑门组成,不包含记忆元件,输出和输入之间无反馈。结构特点:入变出即变!二、逻辑功能的描述

即★逻辑电路图★真值表输入输出00000001100101001101100101010111001111111位全加器!一、实例分析

★卡诺图★波形图★真值表输入输出0000000110010100110110010101011100111111★语言描述//用数据流描述的1位全加器modulefull_add(a1,a2,a3,y1,y2);inputa1,a2,a3;outputy1,y2;

assigny1=a1^a2^a3;

assigny2=(a1&a2)|(a1&a3)|(a2&a3);endmodule二、分析方法1、基本概念分析:已知电路形式,找出输入、输出的逻辑关系(电路功能)。目的:求出逻辑功能或证明给定的逻辑功能正确与否。设计:已知输入、输出的逻辑关系(电路功能),完成电路形式设计。目的:实现最简化的某种逻辑功能电路。分析和设计是一对互逆过程2、

组合逻辑电路的一般分析方法Step1.

从输入到输出逐级写出逻辑函数式,最后得到输入变量表示的输出逻辑函数式;Step2.用公式法或卡诺图化简法化简逻辑函数式;Step3.

列出真值表;Step4.

分析描述电路的逻辑功能。3、

组合逻辑电路的一般分析示例

试分析图1所示电路的逻辑功能,指出其用途。图1组合逻辑电路图示例

Step1.2.

逐级写出Y0、Y1、Y2与A、B、C、D之间关系的逻辑式并用公式化简法化简如下:编号DCBAY2Y1Y001234567891011121314150000000100100011010001010110011110001001101010111100110111101111001001001001001001010010010010010100100100100100Step3.

列电路的真值表如下:由真值表可以看到:当DCBA≤5时:Y0=1当6≤DCBA≤10时:Y1=1当DCBA≥11时:Y2=1

因此,这个逻辑电路可以用来判别输入的4位二进制数的数值范围。Step4.

电路功能描述如下:【分析完毕】分析下列电路逻辑功能奇校验电路偶校验电路一致性判别电路全加器ABCD提交可为此题添加文本、图片、公式等解析,且需将内容全部放在本区域内。正常使用需3.0以上版本此处添加答案解析答案解析单选题2分1、基本概念

所谓“设计”:即根据给出的实际逻辑问题,求出实现这个逻辑功能的最简逻辑电路。所谓“最简”:是指所用器件最少,器件种类最少,而且器件之间的连线也最少。三、设计方法2、一般设计步骤Step1.进行逻辑抽象

(1)分析事件的因果关系,确定输入和输出变量;(2)定义逻辑状态(‘0’或‘1’)的含意;

(3)根据给定的因果关系列出真值表;Step2.写出逻辑函数式Step3.选定器件的类型Step4.将逻辑函数化简或变换成适当的形式Step5.画出逻辑电路图Step6.工艺设计设计一个监视交通信号灯工作状态的逻辑电路。正常工作情况下,必有一盏而且只能一盏灯点亮。其它情况都是故障,要发出故障信号。图2交通信号灯监视示意图四、设计示例解:(一)进行逻辑抽象。

①定义红、黄、绿三盏灯的状态为输入,分别对应R、A、G信号;故障信号为输出,定义为信号Z。

②定义“0”代表灯灭,“1”代表灯亮;有故障时Z为“1”,否则为“0”;

③列出逻辑真值表:RAGZ00000101001110010111011110010111(二)写出逻辑函数式(三)选用小规模集成门电路

GAR000111100101010111标准或与式:

最简与或式:用与非门:用与或非门:(四)化简(五)画出逻辑电路图★由与非门实现★由与门和或门实现利用卡诺图,圈0格,★由与或非门实现写出的逻辑表达式:

等式两边求反,得出与或非表达式:

最后画出用与或非门实现的逻辑电路图如右图:【设计完毕】

图3组合逻辑电路门电路级设计一般流程五、一般设计流程某车间有三台用电设备A、B、C,每台功率为10kW。由两台发电机为设备供电,其中大发电机Y的功率为20kW,小发电机X的功率为10kW。要求三台用电设备至少有一台在工作,也有两台、三台同时工作的情形。请根据节电原则,设计两台发电机的控制逻辑电路,并用与非门设计实现。(写出过程、表达式、可不画电路图)作答正常使用主观题需2.0以上版本雨课堂主观题10分结构级建模:根据逻辑电路的结构(逻辑电路图),实例引用VerilogHDL中内置的基本门级元件、用户定义的元件或其他模块,来描述电路结构图中的元件及元件之间的连接关系。门级建模:内置12个基本门级元件(Primitive,“原语”)模型,引用这些基本门级元件对逻辑图进行描述,也称为门级建模。一、结构级建模VerilogHDL基本门级元件(Primitive原语):多输入门、多输出门、三态门1、多输入门只有单个输出,1个或多个输入gate_name<instance>(outputA,input1,input2,……,inputN);原语名称:andorxornandnorxnor例如:andM1(F,A,B);2、多输出门允许有多个输出,但只有1个输入bufB1(out1,out2,……,in);notN1(out1,out2,……,in);bufnotbuf输入01XZ输出01XXnot输入01XZ输出10XX3、三态门有一个输出,一个数据输入和一个控制输入如果控制输入信号无效,则三态门的输出为高阻态Z。4、门级建模举例(一)2选1数据选择器门级建模就是列出电路图结构中的元件,并按网表连接。module_2to1muxtri(a,b,sel,out);inputa,b,sel;outputout;triout;bufif1(out,b,sel);bufif0(out,a,sel);endmodule(二)1位全加器同一个基本门在当前模块中被调用多次,可在一条调用语句中加以说明,中间以逗号相隔。moduleaddbit(a,b,ci,sum,co);

input

a,b,ci;

outputsum,co;

wirea,b,ci,sum,co,n1,n2,n3;xoru0(n1,a,b),

u1(sum,n1,ci);

and

u2(n2,a,b),

u3(n3,n1,ci);

or(co,n2,n3);endmodule1、示例一

二、数据流建模assign变量名=表达式;

wiremodulemux2to1_dataflow(D0,D1,S,Y);

input

D0,D1,S;

outputY;

wireY;assignY=D0&~S|D1&S;endmodule2、示例二数据流描述“2选1数据选择器”逻辑功能assignY=S?D1:D0;modulemux2to1_df(D0,D1,S,L);

inputD0,D1,S;

outputY;

wireY;endmodule行为级建模:描述数字逻辑电路的功能和算法。alwaysinitialalways内部过程性赋值语句逻辑表达式条件语句(if-else)多路分支语句(case-endcase)for循环语句(例如for等)三、行为级建模always结构型语句always@(事件控制表达式)begin:

块名块内局部变量的定义;过程赋值语句1;...过程赋值语句n;end敏感事件表always@(AorEn)always@(A,En)always@(*)顺序语句块赋值语句左边必须为reg型变量@[敏感信号列表]@[敏感信号列表]实际上是一个时序控制结构,它是可综合always块中的唯一时序控制结构。模块体包含任意数目的过程语句,当模块体只有一条语句时,定界符begin和end可以省略;一种是电平敏感型一种是边缘敏感型对于组合电路,一般采用电平触发;对于时序电路,一般由时钟边沿触发。敏感信号分类1、条件语句(if语句)VerilogHDL有3种形式的if语句:if(condition_expr)true_statement;else

false_statement;condition_expr=

0、x或z,“假”condition_expr=

1,“真”if(condition_expr)true_statement;if(condition_expr)true_statement;elsefalse_statement;if(condition_expr1)true_statement1;elseif(condition_expr2)true_statement2;elseif(condition_expr3)true_statement3;……elsedefault_statement;例题1使用if-else语句对4选1数据选择器的行为进行描述。modulemux4to1_bh(D,S,Y);

input[3:0]D;//输入端口

input[1:0]S;//输入端口

outputregY;

always@(D,S)

if(S==2’b00)Y=D[0];

elseif(S==2’b01)Y=D[1];

elseif(S==2’b10)Y=D[2];

elseY=D[3];endmodule使用if-else语句对8选1数据选择器的行为进行描述。作答正常使用主观题需2.0以上版本雨课堂主观题10分2、多路分支语句(case语句)case(case_expr)item_expr1:statement1;begin

赋值语句1;……赋值语句n;

enditem_expr2:statement2;……default:default_statement;//default语句可以省略endcase每个分支项中的语句可以是单条语句也可以是多条语句;各个条件不存在优先权差别;存在2种变体casez和casex;casez将z视为无关值casex将z和x都视为无关值

无关值也可以用“?”表示例题24选1数据选择器。En=0,数据选择器工作;En=1,禁止工作,输出为0。modulemux4to1_bh(D,S,Y,En);

input[3:0]D,[1:0]S;

inputEn;

outputregY;

always@(D,S,En)begin

if(En==1)Y=0;//En=1时,输出为0

else

//En=0时,选择器工作

case(S)2’d0:Y=D[0];2’d1:Y=D[1];2’d2:Y=D[2];2’d3:Y=D[3];

endcaseendendmodule

如何将多个子模块组合起来,描述比较复杂的设计?自顶向下(top-down)

自底向上(bottom-up)“自顶向下”分析的层次结构图四、分层次的电路设计

“自底向上”设计步骤:1、用两个逻辑门实现半加器;2、由两个半加器构成1位全加器;3、4个全加器级联,实现4位二进制数加法器。(1)用逻辑门实现半加器//******半加器******modulehalfadder(S,C,A,B);inputA,B;outputS,C;xor(S,A,B);//实例引用逻辑门原语

and(C,A,B);endmodule(2)用半加器构成1位全加器//******1位全加器******modulefulladder(Sum,Cout,A,B,Cin);

inputA,B,Cin;

outputSum,Cout;

wireS1,D1,D2;//内部节点

halfadder

HA1(.A(A),.B(B),.S(S1),.C(D1));

halfadderHA2(.A(S1),.B(Cin),.S(Sum),.C(D2));

org1(Cout,D2,D1);

endmodule//******半加器******modulehalfadder(S,C,A,B);

inputA,B;

outputS,C;xor(S,A,B);//实例引用逻辑门原语

and(C,A,B);endmodule(3)四个1位全加器级联,实现4位二进制加法器//******4位加法器******module_4bit_adder(S,C3,A,B,C_1);

input[3:0]A,B;

inputC_1;

output[3:0]S;

outputC3;

wireC0,C1,C2;//声明模块内部的连接线

fulladderU0_FA(S[0],C0,A[0],B[0],C_1);

fulladderU1_FA(S[1],C1,A[1],B[1],C0);

fulladderU2_FA(S[2],C2,A[2],B[2],C1);

fulladderU3_FA(S[3],C3,A[3],B[3],C2);endmodulemodulefulladder(Sum,Cout,A,B,Cin);4位二进制加法器设计2、模块实例引用的格式位置关联法:父模块与子模块的端口按照位置(即端口排列次序)对应关联。名称关联法:父模块与子模块之间的端口直接通过名称建立连接关系,不需要考虑端口的排列次序。module_nameinstance_name(port_associations);子模块名实例引用名父、子模块端口的关联方式(1)端口位置关联//******4位加法器******module_4bit_adder(S,C3,A,B,C_1);

input[3:0]A,B;inputC_1;

output[3:0]S;

outputC3;

wireC0,C1,C2;//声明模块内部的连接线

fulladderU0_FA(S[0],C0,A[0],B[0],C_1);

fulladderU1_FA(S[1],C1,A[1],B[1],C0);

fulladderU2_FA(S[2],C2,A[2],B[2],C1);

fulladderU3_FA(S[3],C3,A[3],B[3],C2);endmodule子模块声明语句modulefulladder(Sum,Cout,A,B,Cin);实例引用模块fulladderU0_FA(S[0],C0,A[0],B[0],C_1);(2)端口名称关联当端口较多时,建议使用名称关联的方法。//******1位全加器******modulefulladder(Sum,Cout,A,B,Cin);

inputA,B,Cin;

outputSum,Cout;

wireS1,D1,D2;//内部节点

halfadderHA1(.A(A),.B(B),.S(S1),.C(D1));

halfadderHA2(.A(S1),.B(Cin),.S(Sum),.C(D2));

org1(Cout,D2,D1);

endmodule子模块声明语句modulehalfadder(S,C,A,B);实例引用子模块

halfadderHA2(.A(S1),.B(Cin),.S(Sum),.C(D2));子模块端口名称父模块端口名称3、模块端口数据类型父模块子模块inputwirereg或wireoutputreg或wirewirewirewireinout图10.1.1传统数字系统设计方法自底向上图10.1.2现代数字系统设计方法自顶向下

“编码”(Coding)——为了区分一系列不同的事物,将其中的每个事物用一个二值代码表示。

编码器(Encoder)的逻辑功能:把输入的每一个高、低电平信号变成一个对应的二进制代码。例:大写英文字符“A”的ASCII编码为“1000001”。1.普通编码器工作原理如:8个输入状态,需要3位二进制编码。输入:I0~I7

八个高电平信号;输出:Y2Y1Y0,3位二进制代码。图13位二进制普通编码器框图8线︱3线编码器要求任何时刻只允许输入一个待编码的信号,否则会发生混乱。一、普通编码器

输入

输出I0I1I2I3I4I5I6I7Y2Y1Y01000000000001000000001001000000100001000001100001000100000001001010000001011000000001111表13位二进制普通编码器真值表由于普通编码器在任何时刻I0~I7

当中仅有一个取值为1,即只有真值表中所列的8种状态,而且它的(28-8)种状态均为约束项。因此,由真值表可得到逻辑式:

或门实现≥1≥1≥1图23位二进制编码器或门实现电路图2.普通编码器门级电路设计

与非门实现图33位二进制编码器与门实现电路图如何用与非门实现8421-BCD码普通编码器?思考3.普通编码器Verilog-HDL设计//普通8线-3线编码器设计moduleencode8_3(a,b);input[7:0]a;wire[7:0]a;output[2:0]b;reg[2:0]b;always@(a)begin

case(a)8’b0000_0001:b<=3’b000;8’b0000_0010:b<=3’b001;8’b0000_0100:b<=3’b010;8’b0000_1000:b<=3’b011;8’b0001_0000:b<=3’b100;8’b0010_0000:b<=3’b101;8’b0100_0000:b<=3’b110;8’b1000_0000:b<=3’b111;default:b<=3’b000;

endcaseendendmodule1.优先编码器工作原理图174LS148片脚图

特点:允许同时输入两个以上编码信号。不过在设计优先编码器时已经将所有的输入信号按优先顺序排了队,当几个输入信号同时出现时,只对其中优先权最高的一个进行编码。

下面以图1所示8线-3线优先编码器74LS148为例分析优先编码器的工作原理。二、优先编码器表174LS148优先编码器真值(功能)表输入输出STIN0IN1IN2IN3IN4IN5IN6IN7Y2Y1Y0YEXYS1××××××××11111011111111111100×××××××0000010××××××01001010×××××011010010××××0111011010×××01111100010××011111101010×011111111001001111111111011-高电平,0-低电平,×-任意,输入低电平有效。选通输入端,低电平有效。扩展端,低电平有效。选通输出端,高电平有效。◆若不考虑附加电路ST、YS、YEX,则输出方程为:

◆考虑的影响:

(ST为0时所有输出封锁在高电平!)

◆YS为选通输出端,其表达式为:

此式表明:只有当所有的编码输入端均为高电平(即没有编码输入),且ST=1()时,YS

才为低电平。YS为低电平表示“电路工作,但无编码输入”。

(功能表第二行所示)

◆为扩展端,用于扩展编码功能,其表达式为:

◆在,且有编码输入的工作状态下,允许当中同时有几个输入端低电平(即允许同时有多个编码请求),且其中优先权最高,优先权最低。

此式表明:只要任何一个编码输入端有低电平信号输入(即有编码信号),且ST=1(即

),即为低电平。所以,低电平信号输出表示“电路工作,且有编码输入”。

小结:◆为使能输入端,低电平有效。

◆为使能输出端,通常接至高位芯片的端,和配合可以实现多级编码器之间的优先级别的控制。◆为扩展输出端,是控制标志。表示是编码输出;

表示不是编码输出。

2.优先编码器门级电路设计图274LS148优先编码器逻辑电路图≥1&≥1&&&&≥1&&&&≥1&&&&...............11.11.11.11.1111................YS(15)YEX(14)Y0(9)Y1(7)Y2(6)(5)ST(4)IN7(3)IN6(2)IN5(1)IN4(13)IN3(12)IN2(11)IN1(10)IN0

3.优先编码器Verilog-HDL设计//8线-3线优先编码器设计moduleencode8_3pri(none_on,outcode,a,b,c,d,e,f,g,h);outputnone_on;output[2:0]outcode;inputa,b,c,d,e,f,g,h;reg[3:0]outtemp;assign{none_on,outcode}=outtemp;always@(aorborcordoreorforgorh)begin

if(h)outtemp=4'b0111;esleif(g)outtemp=4'b0110;esleif(f)outtemp=4'b0101;esleif(e)outtemp=4'b0100;esleif(d)outtemp=4'b0011;esleif(c)outtemp=4'b0010;esleif(b)outtemp=4'b0001;esleif(a)outtemp=4'b0000;esleouttemp=4'b1000;endendmodule描述方案一//8线-3线优先编码器设计moduleprio_encode_8_3(input[7:0]in,

outputreg[2:0]encode_out);always@*begin

casez(in)8’b1???????:encode_out=3’b000;8’b01??????:encode_out=3’b001;8’b001?????:encode_out=3’b010;8’b0001????:encode_out=3’b011;8’b00001???:encode_out=3’b100;8’b000001??:encode_out=3’b101;8’b0000001?:encode_out=3’b110;8’b00000001:encode_out=3’b111;endcaseendendmodule描述方案二译码器定义◆逻辑功能:将每个输入的二进制代码对应输出为高、低电平信号。◆译码是编码的反操作。◆常用的译码器有二进制译码器(binarydecoder)、二—十进制译码器(binary-codeddecimaldecoder)、显示译码器(displaydecoder)等。三、二进制译码器(最小项译码器)3位二进制(3线-8线)译码器框图和真值表如下所示:图13线-8线译码器框图输入输出A2A1A0Y7Y6Y5Y4Y3Y2Y1Y00000000000100100000010010000001000110000100010000010000101001000001100100000011110000000表13线-8线译码器真值表

3位二进制(3线-8线)译码器的VerilogHDL设计如下://3线-8线译码器设计moduledecode_3_8(input[2:0]in,

outputreg[7:0]y);always@*begin

casez(in)3’b000:y=8’b00000001;3’b001:y=8’b00000010;3’b010:y=8’b00000100;3’b011:y=8’b00001000;3’b100:y=8’b00010000;3’b101:y=8’b00100000;3’b110:y=8’b01000000;3’b111:y=8’b10000000;endcaseendendmodule1.二极管与门阵列译码电路工作原理图2二极管与门阵列构成的3位二进制译码器电路图1(3V)1(3V)0(0V)+5V0.7V3.7V0.7V0.7V0.7V0.7V0.7V0.7V优点:结构简单,易于集成。

因此,二极管门阵列译码器通常用于大规模(LSI)集成电路中。缺点:◆

电路的输入电阻较低而输出电阻较高;◆

输出的高、低电平信号发生偏移(0.7V)。2.三极管集成二进制译码器电路

中规模(MSI)集成电路通常采用三极管集成门(如TTL)电路。下面以74LS1383线-8线译码器为例来分析集成译码器的工作原理:图374LS138片脚图及实物图◆74LS138片脚图◆74LS138内部逻辑图&&&&&&&&1111111&表274LS138功能表◆74LS138功能表(一)在存储器中的应用

用作地址译码器或指令译码器,译码器输入地址码,输出为存储单元地址。如n位地址线可寻址2n个单元。图4随机存储器RAM的基本结构3、译码器应用示例(二)扩展应用在需进行大容量译码时,可将芯片进行扩展。图2用两片74LS138接成的4线-16线译码器

用2线-4线和4线-10线译码器扩展成5线-32线译码器。图3利用BIN/OCT和BCD/DEC构成5线-32线译码器(三)实现逻辑函数

由于n变量二进制译码器可以提供变量的2n个最小项非的输出,而任何逻辑函数均可化为最小项之和的标准形式,所以利用二进制译码器和一些必要的逻辑门可以实现任意的组合逻辑函数。

试用74LS138和与非门设计一个多输出的组合逻辑电路。输出的逻辑函数为:将逻辑函数转换成最小项之和的形式,再变换成最小项取反的形式:

作答正常使用主观题需2.0以上版本雨课堂主观题10分注:实现多变量译码输入的逻辑函数时,可以先扩展再按上述方法实现。如何用74LS138实现下列组合逻辑函数?思考(4)二进制译码器还可作数据分配器使用。1、显示译码器组成

逻辑功能:将数字(0~9)、文字、符号(A~F)等的二进制代码翻译并显示出来的电路叫显示译码器。它包括译码驱动电路和数码显示器两部分。按发光物质分,数码显示器可以分为以下四种类型:

◆半导体显示器:亦称发光二极管(LED)显示器;

◆荧光数字显示器:如荧光数码管、场效发光数字板等;

◆液晶数字显示器:如液晶显示器(LCD)、电泳显示器等;

◆气体放电显示器:如辉光数码管、等离子显示板等。四、显示译码器LED(LightEmittingDiode)的显示电路——半导体数码管(八段)外形图及等效电路缺点:

工作电流较大,每一段工作电流在10mA左右。优点:

工作电压低、体积小、寿命长、可靠性高,响应时间短(),亮度较高。2、显示译码器工作原理及设计abfgecd•共阳极数码管: 亮:逻辑“0”

灭:逻辑“1”(一)逻辑抽象 十进制0~9十个字符可由七段组合而成。(二)列真值表(设采用共阳极数码管)DCBAabcdefg显示000000000010000110011111001000100102001100001103010010011004010101001005011001000006011100011117100000000008100100001009abfgecd•DCBA0001111000011110dDCBA0001111000011110aDCBA0001111000011110bDCBA0001111000011110cDCBA0001111000011110eDCBA0001111000011110fDCBA0001111000011110g(三)画卡诺图 (四)逻辑图★A3~A0是字型译码器输入的BCD地址代码。★Ya~Yg表示段位显示代码。规定灯亮为“1”,不亮为“0”。所以输出为高电平,可以驱动共阴极LED数码管。(五)封装形成七段字型集成译码器74xx48

7448驱动BCD七段字符译码显示电路:图17448驱动BS201A(a)接线图(b)七段显示字型数码显示电路译码驱动电路十六进制数七段LED显示译码器,驱动共阳数码管;把一个4位十六进制数输入,转换为驱动7段LED显示管的控制逻辑;1位小数点用dp表示。(六)

十六进制数七段LED显示译码器//16进制数七段LED显示译码器设计modulehex_7seg(input[3:0]hex,

inputdp,

outputreg[7:0]sseg);

always@*

begincase(hex)4’h0:sseg[6:0]=7’b0000001;4’h1:sseg[6:0]=7’b1001111;4’h2:sseg[6:0]=7’b0010010;4’h3:sseg[6:0]=7’b0000110;4’h4:sseg[6:0]=7’b1001100;4’h5:sseg[6:0]=7’b0100100;4’h6:sseg[6:0]=7’b0100000;4’h7:sseg[6:0]=7’b0001111;4’h8:sseg[6:0]=7’b0000000;4’h9:sseg[6:0]=7’b0000100;4’ha:sseg[6:0]=7’b0001000;4’hb:sseg[6:0]=7’b1100000;4’hc:sseg[6:0]=7’b0110001;4’hd:sseg[6:0]=7’b1000010;4’he:sseg[6:0]=7’b0110000;4’hf:sseg[6:0]=7’b0111000;endcasesseg[7]=dp;endendmodule1、数据选择器工作原理

数据选择器完成从一组输入数据中选出某一个的功能,它与数据分配器的功能正好相反,是一种称为数据选择器(DataSelector)或多路开关(Multiplexer)的逻辑电路。图1数据选择器原理框图五、数据选择器

2、4选1数据选择器门级电路设计

3、

数据选择器的Verilog-HDL设计4选1多路选择器的if-else语句描述4选1多路选择器的case语句描述modulemux41_if(inputin0,in1,in2,in3,

inputs0,s1,

outputregout//out声明为reg类型)

;

always@*

begin

if({s1,s0}==2’b00)out=in0;

elseif({s1,s0}==2’b01)out=in1;

elseif({s1,s0}==2’b10)out=in2;

elseout=in3;endendmodulemodulemux41_case(inputin0,in1,in2,in3,

inputs0,s1,

outputregout//out声明为reg类型)

;

always@*

begin

case({s1,s0})

2’b00:out=in0;2’b01:out=in1;2’b10:out=in2;default:out=in3;

endcaseendendmodule(一)八选一数据选择器74XX151八选一MUX需要3个选择输入端,8个数据输入端,并有互补的原码和反码两种输出形式。图274151惯用逻辑符号表274151真值表4、MSI数据选择器D0D1D2D3D4D5D6D7A0A1A274151STYY原码反码数据输出数据输入选择输入选通输入(二)双4选1数据选择器74XX15374153包含两个完全相同的4选一MUX,两个MUX有公共的地址输入端,而数据输入和输出端各自独立。通过给定不同的地址代码(),即可从4个输入数据中选出所需要的一个,并送至输出端Y。

74153的惯用逻辑符号和真值表如下:图274153惯用逻辑符号表274153真值表D0D1D2D3D4A0A174153STY数据输出选择输入选通输入

5、集成数据选择器的扩展(一)双四选一MUX74LS153扩展成8选一MUX图3用双四选一MUX74153组成8选一MUX示意图(二)16选1MUX74150扩展成32选1MUX图4两片16选1数据选择器扩展为32选1数据选择器(三)16选1MUX扩展成64选1MUX图54片16选1数据选择器扩展为64选1数据选择器6、用数据选择器设计组合逻辑电路

原理:若逻辑函数变量的数目与数据选择器选择输入端的数目相等,则函数最小项的数目就与数据选择器输入端的数目相同,这样可以直接用数据选择器实现逻辑函数。

试用74151实现逻辑函数F(A,B,C)=AB+AC+BC首先将逻辑函数化成标准最小项之和:

图6用8选1MUX-74151实现3变量组合逻辑电路

已知74151构成的逻辑电路如图所示,该电路的输出函数表达式为()

ABCD提交

D0D1D2D3D4D5D6D7A0A1A274151STYABC01F单选题2分试用一片74151实现逻辑函数首先将D变量作为引入变量得到逻辑函数的真值表和降阶卡诺图如下:ABCFDi0001D00010D10100D2011DD31000D4101D51100D6111DD7

100D00D

试用4选1数据选择器实现交通信号灯监视电路。(1)依题意可列真值表如下:(3)选用半片74153实现的电路连接图为:(2)则电路的逻辑函数表达式为:

数值比较器(DigitalComparator)是实现两个数值之间的大、小、相等比较,或只是比较二者是否相等的逻辑功能电路。1、1位数值比较器工作原理六、数值比较器

一位二进制数比较器是它的基础,其真值表如下表所示:in0和in1是一位输入比较信号lt、eq和gt分别是两个输入信号大小的比较结果一位二进制比较器的真值表//1位二进制比较器设计modulecomp_1(inputin0,in1,outputreggt,eq,It);

always@*

begingt=0;eq=0;It=0;

if(in0>in1)gt=1;

if(in0==in1)eq=1;

if(in0<in1)It=1;endendmodule在always块内if语句之前,需要对gt,eq和lt都赋值为0。1位二进制比较器的VerilogHDL描述2、多位数值比较器工作原理

在比较两个多位数的大小时,必须自高而低的逐位比较,而且只有在高位相等时,才需比较较低位。级联信号输入端A>B、A<B和A=B

,接收来自低位比较器的输出结果。在单独使用或作为最低位片使用时,A>B、A<B应置0,A=B置1。<=>COMPP<QP=QP>QYA=BYA>BYA<BA0A1A2A3A<BA=BA>BB0B1B2B3图14位数值比较器CC14585逻辑符号输入输出A3B3A2B2A1B1A0B0A>BA<BA=BYA>BYA<BYA=BA3>B3×××××××××100A3<B3×××××××××010A3=B3A2>B2×××××××100A3=B3A2<B2×××××××010A3=B3A2=B2A1>B1×××××100A3=B3A2=B2A1<B1×××××010A3=B3A2=B2A1=B1A0>B0×××100A3=B3A2=B2A1=B1A0<B0×××010A3=B3A2=B2A1=B1A0=B0100100A3=B3A2=B2A1=B1A0=B0010010A3=B3A2=B2A1=B1A0=B0001001表14位数值比较器CC14585真值表CC14585逻辑函数表达式:图24位数值比较器CC14585门级逻辑电路图11111111111&&&&&&&&&&&&≥1≥1≥1≥1≥111&1111≥1A3B3A2B2A1B1A0B0IA<BIA=BIA>BYA<BYA=BYA>B//多位数值比较器设计modulecomp_N#(parameterN=8)(input[N-1:0]in0,in1,outputreggt,eq,It);

always@*

begingt=0;eq=0;It=0;

if(in0>in1)gt=1;

if(in0==in1)eq=1;

if(in0<in1)It=1;endendmodule多位数值比较器的VerilogHDL描述输入数据位数可变的N位二进制数比较器。仿真时,默认N=8。3、MSI数值比较器的扩展应用FA<BFA=BFA>BCOMP高位片A4A5A603PA7QP<QP=QP>Q<=>03B4B5B6B7COMP低位片A0A1A203PA3QP<QP=QP>Q<=>03B0B1B2B31图34位数值比较器扩展成8位数值比较器

(一)级联扩展由图可见,低4位的比较结果作为高4位的条件。级联扩展法结构简单,但运算速度低。

(二)并联扩展COMP003PQP<QP>Q<=>03COMP4A3P<QP>Q<=>B3001A2B2A1B1A0B0P=QCOMP103PQP<QP>Q<=>03COMP203PQP<QP>Q<=>03COMP303PQP<QP>Q<=>03A0A3B0B3A4A7B4B7A8A11B8B11A12A15B12B15001001001001图5并联方式扩展16位数值比较器并联扩展采用两级比较法,各组的比较是并行进行的,因此运算速度比级联扩展快。

两个二进制数之间的算术运算无论是加、减、乘、除,目前在数字计算机中都是化为若干步加法运算和移位进行的。因此,加法器是构成算术运算器的基本单元。目前,常用加法器分类如下:加法器1位加法器多位加法器半加器全加器串行进位加法器超前进位加法器七、加法器1、1位加法器(一)半加器(Half-adder)

若不考虑有来自低位的进位将两个1位二进制数相加,称为半加。实现半加运算的电路叫做半加

温馨提示

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

评论

0/150

提交评论