数字电路与逻辑设计 课件 (陈彦辉)4-6 组合逻辑电路_第1页
数字电路与逻辑设计 课件 (陈彦辉)4-6 组合逻辑电路_第2页
数字电路与逻辑设计 课件 (陈彦辉)4-6 组合逻辑电路_第3页
数字电路与逻辑设计 课件 (陈彦辉)4-6 组合逻辑电路_第4页
数字电路与逻辑设计 课件 (陈彦辉)4-6 组合逻辑电路_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

组合逻辑电路片上微控制系统原理与项目设计第四讲内容回顾布尔逻辑量布尔逻辑运算布尔逻辑函数数字逻辑电路逻辑门逻辑电路逻辑符号真值表波形图电路功能信号代数式数学HDL硬件结构授课内容组合电路信息处理系统信息获取信息加工信息显示信息存储信息传输信息加工和处理算法中的数学计算、比较、选择、分配、编码和译码等重要操作电路都属于组合电路。组合电路是无反馈电路,即当前输出只与当前输入有关,相同的输入产生相同的输出。组合电路的分析分析方法从输入端开始,逐级推导出输出端的逻辑函数表达式根据逻辑函数表达式列出真值表根据真值表的内容概括出电路的功能组合电路的分析某设备的控制电路图3-1所示,分析该组合电路的逻辑功能。从输入量A、B和C开始逐级推导

ABCFABCF00001000001010110100110101111111从表中可以看出,只要有两个或两个以上的输入为1,输出就为1。因此,该电路可以视为是一种“少数服从多数”的表决器。组合电路的分析硬件描述语句,有时分析语句即可知道功能,有时要列出真值表通过观察得到功能,有时需要语句分析与列真值表相结合。【例】分析下面Verilog语言描述的逻辑电路的功能。moduletest(A,B,C,F); inputA,B,C; outputregF; wire[1:0]x; assignx=A+B+C; always@(*) if(x<2'd2) F<=1'b0; else F<=1'b1;endmodule组合电路设计设计某种功能的电路时,首先进行逻辑抽象,即将文字描述的逻辑命题转换为真值表;然后根据真值表和选用的逻辑器件类型写出相应的逻辑函数表达式。在逻辑抽象中,先分析逻辑命题,确定输入和输出变量;再采用二值逻辑的0和1分别对输入和输出进行值描述(即0和1的含义),并列出输出和输入之间的逻辑真值表。组合电路设计【例】某产品重量检测单元电路有四个输入D3D2D1D0(其组合值为输入的产品重量值)和3个输出信号FL(不足)、FM(合格)和FH(超重)。输入输出关系为:(1)仅当质量值小于5时FL=1,其它情况FL=0;(2)仅当质量值大于10时FH=1,其它情况FH=0;(3)仅当质量值不小于5且不大于10时FM=1,其它情况FM=0。设计该单元电路。组合电路设计①输入变量为D3、D2、D1和D0,输出变量为FL、FH和FM。②逻辑真值表组合电路设计

组合电路设计

组合电路设计moduletest(D,FL,FM,FH); input[3:0]D; outputregFL,FM,FH; always@(*) if(D<4'd5) {FL,FM,FH}<=3'b100; elseif(D<=4’d10) {FL,FM,FH}<=3'b010; else {FL,FM,FH}<=3'b001;endmodule【例】某比赛项目有三个裁判,每个裁判有一个表决按钮,按下按钮表明“通过”。运动员最终成绩通过是否亮灯来表示,灯亮表示“通过”,灯灭表示“未通过”。仅当两个或两个以上裁判按下按钮时,灯才亮。①输入输出定义有三个表决按钮,分别采用三个输入A、B和C来表示按钮状态,当按钮按下时,相应的变量值为0,否则为1。灯控信号采用输出F表示,F为1时灯亮,为0时灯灭

logisimmoduletest(A,B,C,F); inputA,B,C; outputregF; always@(*) case({A,B,C}) 0,1,2,4:F<=1'b0; 3,5,6,7:F<=1'b1; endcaseendmodule加/减法器1.全加器

最基本的加法器是两个比特相加的一位二进制数加法,其数学公式为(CO,S)=A+B+CI,其中A和B是两个本位加数,CI为低位向本位的进位,S为本位和,CO为本位向高位的进位。该加法器也称为全加器。问题:算术逻辑单元ALU如何设计?支持加、减、乘、除、与、或、非运算,由控制线控制全加器S=A

B

CICO=A

B+A

CI+B

CImoduleadd1(A,B,CI,S,CO); inputA,B,CI; outputS,CO; assign{CO,S}=A+B+CI;endmodule半加器没有低位进位的加法器称为半加器,即(CO,S)=A+B2.全减器全减器包括三个输入,即本位的被减数A、减数B和低位向本位的借位CI,两个输出,即本位差D和本位向高位的借位CO。减法运算式为:(CO,D)=A-B-CImodulesub1(CI,A,B,CO,D);inputCI,A,B;outputCO,D; assign{CO,D}=A–B-CI;endmodule多位加/减法器多位加/减法器通常由全加器级联构成。2位加法器在数学运算中,两位数加是从最低位开始,逐位相加。最低位的A0、B0和CI相加,结果为CO0和S0,将CO0作为CI1,参加高位的加运算,A1、B1和CI1相加结果为CO和S1。以此类推,n位加法器由一个n-1位加法器和一个全加器级联而成,n-1位加法器的进位作为一个全加器的低位进位CI,全加器输出和的第n位和进位CO。moduleaddn(CI,A,B,S,CO);parametern=;inputCI;input[n-1:0]A,B;output[n-1:0]S;outputCO;assign{CO,S}=A+B+CI;endmodule应用示例【例】有符号数加法器:输入8位有符号数A和B,输出8位本位和S和1位进位标志CF,有符号数的加法还会出现溢出现象,因此同时也输出1位溢出标志OF。moduleSAdd8(A,B,S,CF,OF); input[7:0]A,B; output[7:0]S; outputCF,OF; wireCp; assign{Cp,S[6:0]}=A[6:0]+B[6:0];//产生本位和的低6位和次高位进位标志 assign{CF,S[7]}=A[7]+B[7]+Cp;//产生本位和的最高位和最高位进位标志 assignOF=Cp^CF;//产生溢出标志endmodulemoduletest;reg[7:0]A,B;wire[7:0]S;wireCF,OF;

SAdd8sadd8_0(.A(A),.B(B),.S(S),.CF(CF),.OF(OF));initialbeginA=100;B=27;#100;B=28;#100;A=-100;B=-28;#100;B=-29;#100;$stop;endendmodulemoduleaddn(CI,A,B,S,CO);parametern=;inputCI;input[n-1:0]A,B;output[n-1:0]S;outputCO;assign{CO,S}=A+B+CI;endmodule数据选择/分配器1.数据选择器从多路输入中选择一个作为输出,也称为多路选择器(MUX)。它有n个地址输入An-1,…,A0、N=2n个数据输入DN-1,…,D0和1个数据输出Y。n个地址构成的二进制值i,输出Y就等于输入Di,其数学描述为:Y=Di,i=(An-1…A0)2。moduleMux4(A,D,Y); input[1:0]A; input[3:0]D; outputregY; integeri; always@(*) for(i=0;i<4;i=i+1) if(A==i) Y<=D[i];endmodule

本节内容moduletop_module(input[15:0]a,b,c,d,e,f,g,h,i,input[3:0]sel,output[15:0]out);always@(*)begincase(sel)4'b0:out<=a;4'b1:out<=b;4'd2:out<=c;4'd3:out<=d;4'd4:out<=e;4'd5:out<=f;4'd6:out<=g;4'd7:out<=h;4'd8:out<=i;default:out<=16'b1111_1111_1111_1111;endcaseendendmodule

moduleDemux4(A,D,Y); input[1:0]A; inputD; outputreg[3:0]Y; integeri;//循环结构中的计数量,不是信号 always@(*) for(i=0;i<4;i=i+1)//生成4个if语句 if(A==i) Y[i]<=D; else Y[i]<=1;endmodule应用实例-ALU算术逻辑运算器运算器支持8种两个8位数X和Y的数据运算,即加、减、位与、位或、位异或、左移1位、右移1位、赋值,但每次只能进行1种运算,通过3位控制信号OP改变运算类型,同时给出进/借位标志CF、溢出标志OF、符号标志SF和结果为零标志ZF。设计此运算器的电路结构图及相应的HDL代码。 always@(*) case(OP) 0:{OF,CF,Z}<={oa,ca,sa}; 1:{OF,CF,Z}<={os,cs,ds}; 2:{OF,CF,Z}<={2'b0,X&Y}; 3:{OF,CF,Z}<={2'b0,X|Y}; 4:{OF,CF,Z}<={2'b0,X^Y}; 5:{OF,CF,Z}<={2'b00,X[6:0],1'b0}; 6:{OF,CF,Z}<={2'b00,1'b0,X[7:1]}; 7:{OF,CF,Z}<={2'b0,Y}; endcase assignSF=Z[7]; assignZF=~|Z;endmodulemoduleALU(OP,X,Y,Z,CF,OF,SF,ZF); input[2:0]OP; input[7:0]X,Y; outputreg[7:0]Z; outputregCF,OF; outputSF,ZF; wire[7:0]sa; wire[7:0]ds; wireca,oa,cs,os; SAdd8sadd8_0(.A(X),.B(Y),.S(sa),.CF(ca),.OF(oa)); SSub8ssub8_0(.A(X),.B(Y),.D(ds),.CF(cs),.OF(os));moduletest;reg[2:0]OP;reg[7:0]X,Y;wire[7:0]Z;wireCF,OF,SF,ZF;integeri;

ALUalu_0(.OP(OP),.X(X),.Y(Y),.Z(Z),.CF(CF),.OF(OF),.SF(SF),.ZF(ZF));initialbeginX=8'b01010101;Y=8'b10101010;for(i=0;i<8;i=i+1)beginOP=i;#100;end$finish;endendmodule作业实现“算术逻辑运算器”例子,并给出仿真结果。要求X、Y分别为本人学号的前两位和后两位。例如,学号为“12345678”,则X=00001100(12),Y=01001110(78)组合逻辑电路2片上微控制系统原理与项目设计第五讲授课内容组合电路分析与设计基本组合电路模块加/减法器数据选择器/分配器数值比较器编/译码器竞争与冒险应用实例【例】双通道数据选择器:备选数据有六个8位数D0、D1、D2、D3、D4和D5,两个通道输出8位数Y0和Y1,在通道数据选择信号S0和S1控制下,每个通道独立地从六个数中选择其中之一输出。试给出双通道选择控制逻辑电路及相应的HDL代码。【分析】从功能上可以看出,该逻辑电路由两个选择器构成,两个选择器的数据源是相同的,由两个不同的选择控制信号来决定每个源操作数的输出。moduleSrcSel(D0,D1,D2,D3,D4,D5,S0,S1,Y0,Y1); input[7:0]D0,D1,D2,D3,D4,D5; input[2:0]S0,S1; outputreg[7:0]Y0,Y1; always@(*) begin case(S0) 0:Y0<=D0; 1:Y0<=D1; 2:Y0<=D2; 3:Y0<=D3; 4:Y0<=D4; 5:Y0<=D5; default:Y0<=0; endcase case(S1) 0:Y1<=D0; 1:Y1<=D1; 2:Y1<=D2; 3:Y1<=D3; 4:Y1<=D4; 5:Y1<=D5; default:Y1<=0; endcase end endmodulemoduletest;reg[47:0]D;reg[2:0]S1,S0;wire[7:0]Y1,Y0;integeri,j;

SrcSelsrcsel_0(.D0(D[7:0]),.D1(D[15:8]),.D2(D[23:16]),.D3(D[31:24]),.D4(D[39:32]),.D5(D[47:40]),.S0(S0),.S1(S1),.Y0(Y0),.Y1(Y1));initialbeginD={8'd5,8'd4,8'd3,8'd2,8'd1,8'd0};for(i=0;i<6;i=i+1)for(j=0;j<6;j=j+1)beginS1=i;S0=j;#100;end$finish;endendmodule【作业】数据传输分配器:外部产生待传8位数据DI和一位数据有效信号DE,分配器根据3位通道选择信号S将待传数据及数据有效信号传输到五个通道中之一,五个通道输出分别为DO0~DO4和E0~E4。试给出分配器控制逻辑电路及相应的HDL代码。数值比较器数值比较器是对两个位数相同的二进制数进行数值比较,输出两个数的比较结果:大于、等于或小于。比较可以从最高位向最低位开始也可以从最低位向最高位开始前位是高位SA>BSA=BSA<BABFA>BFA=BFA<B001

00101000010010010010101010001011010100

100前位是低位,如何设计?多位数值比较器moduleCmp(A,B,FL,FE,FH);//FL表示FA<B,FL表示FA=B,FL表示FA>B。 parametern=;//数据数位值 input[n-1:0]A,B; outputregFL,FE,FH; always@(*) if(A<B) {FL,FE,FH}<=3’b100; elseif(A==B) {FL,FE,FH}<=3’b010; else {FL,FE,FH}<=3’b001;endmodule应用示例【例】某电路输入为4位的x,其输出为4位的y,y和x之间的关系如图所示,试设计一组合逻辑电路来实现该功能,给出电路结构图和相应的HDL代码。

modulefunc(x,y); input[3:0]x; outputreg[3:0]y; always@(*) if(x<4'd5) y<=x; elseif(x>4'd10) y<=~x; else y<=5;endmodulemoduletest;reg[3:0]x;wire[3:0]y;integeri;funcfunc_0(.x(x),.y(y));initialbeginfor(i=0;i<16;i=i+1)beginx=i;#100;end$finish;endendmodule编/译码器编码器是采用m位比特来表示n条信号线中的有效信号线。n位输入线,理论上共有2n种组合m位输出编码,M≪2n。使能信号nE编码有效信号nYs功能表nEnI7nI6nI5nI4nI3nI2nI1nI0nYsY2Y1Y00xxxxxxx000000xxxxxx0100010xxxxx01100100xxxx011100110xxx0111101000xx01111101010x01111110110001111111011101111111111111xxxxxxxx1111moduleEncoder8(nE,nI,Y,nYs); inputnE; input[0:7]nI; outputreg[2:0]Y; outputregnYs; always@(*) if(nE) casex(nI) 8'b0xxxxxxx:{nYs,Y}<=4'b0000; 8'b10xxxxxx:{nYs,Y}<=4'b0001; 8'b110xxxxx:{nYs,Y}<=4'b0010; 8'b1110xxxx:{nYs,Y}<=4'b0011; 8'b11110xxx:{nYs,Y}<=4'b0100; 8'b111110xx:{nYs,Y}<=4'b0101; 8'b1111110x:{nYs,Y}<=4'b0110; 8'b11111110:{nYs,Y}<=4'b0111; default:{nYs,Y}<=4'b1111; endcase else {nYs,Y}<=4'b1111;endmodule二进制译码器译码器n个输入线,有N条输出线,N>n。不同输入值代表N条输出线上的不同的特定电平组合,相当于电平翻译工作。二进制译码器nEA1A0nY0nY1nY2nY31

11110000111001101101011010111110if(nE) nY<=4'b1111;else case(A) 0:nY<=4'b1110; 1:nY<=4'b1101; 2:nY<=4'b1011; 3:nY<=4'b0111; endcase应用示例【例】某快递自动快件分捡系统可以自动根据寄件地址码自动分检出A区、B区、C区和D区的邮件,将其它地区邮件送至人工分检处。系统通过控制挡板A、挡板B、挡板C和挡板D的转动来选择区域。【分析】整个系统由扫码器、控制器和挡板组成。扫码器产生七位地址码A6A5A4A3A2A1A0,控制器根据地址码产生挡板控制信号nK0、nK1、nK2和nK3来分别控制挡板A、B、C和D是否转动。快件地址码为7位二进制数A区地址码范围为0x00~0x0FB区地址码范围为0x10~0x1FC区地址码范围为0x20~0x2FD区地址码范围为0x30~0x3F当快件的地址码处于某区范围内,该区的挡板自动打开引导快件进入该区

从表中可以看出,恰是一个2线-4线译码器的功能,采用译码器的电路结构如图。moduletest;reg[6:0]A;wire[3:0]nK;reg[2:0]i;

AutoSortingCtrlautoinst(.A(A),.nK(nK));initialbeginfor(i=0;i<8;i=i+1)begin A={i,4’b0000}; #100;end$finish;endendmodulemoduleAutoSortingCtrl(A,nK);input[6:0]A;output[3:0]nK;

Decoder4decoder4_0(.nE(A[6]),.A(A[5:4]),.nY(nK));endmodule显示译码器在数字系统中,经常采用发光二极管来显示数字或字符信息。最为常用的是7段显示数码管,它采用七个矩形发光二极管围成8字型。它含有7个输入a~g分别控制一个发光二极管。发光二极管是特殊的二极管,导通时发光。数码管有共阳、共阴之分。【例】设计一共阳7段显示数码管的译码器电路,使其可以实现数字0~9的显示。always@(*) case(D) 4'h0:F<=7'h01; 4'h1:F<=7'h4f; 4'h2:F<=7'h12; 4'h3:F<=7'h06; 4'h4:F<=7'h4c; 4'h5:F<=7'h24; 4'h6:F<=7'h20; 4'h7:F<=7'h0f; 4'h8:F<=7'h00; 4'h9:F<=7'h04; default:F<=7'h7f; endcase【实验】护士呼叫显示控制系统系统负责8个病床,每个病床上安有呼叫开关。当病人按下开关

温馨提示

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

评论

0/150

提交评论