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

下载本文档

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

文档简介

组合逻辑电路片上微控制系统原理与项目设计第四讲内容回顾布尔逻辑量布尔逻辑运算布尔逻辑函数数字逻辑电路逻辑门逻辑电路逻辑符号真值表波形图电路功能信号代数式数学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(

温馨提示

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

评论

0/150

提交评论