




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
组合逻辑电路设计
主要内容◆基本门电路◆加法器◆比较器◆编码器◆译码器◆多路数据选择器◆其它组合电路设计1.基本门电路设计//门级结构描述
modulegate1(F,A,B,C,D);inputA,B,C,D;outputF;nand(F1,A,B);//调用门元件and(F2,B,C,D);or(F,F1,F2);endmoduleF2F11.基本门电路设计数据流描述modulegate2(F,A,B,C,D);inputA,B,C,D;outputF;assignF=(~(A&B))|(B&C&D);//assign持续赋值endmodule基本门电路设计行为描述modulegate3(F,A,B,C,D);inputA,B,C,D;outputF;regF;always@(AorBorCorD)
//过程赋值beginF=(~(A&B))|(B&C&D);endendmodule加法器4位全加器moduleadder4(cout,sum,ina,inb,cin);output[3:0]sum;outputcout;input[3:0]ina,inb;inputcin;assign{cout,sum}=ina+inb+cin;endmodule比较器一个四位大小比较器的输入是两个四位数A和B,我们可以将它们写成下面的形式,最左边的为最高有效位:
A=A(3)A(2)A(1)A(0)B=B(3)B(2)B(1)B(0)两个数的比较规则:从最高有效位开始,逐位进行。如果两个位不相等,则该位值为0的数为较小的数。为了用逻辑等式实现这个功能,我们需要定义一个中间变量X。注意下面实现的是同或的功能:
X(i)=A(i)B(i)+A(i)’B(i)’比较器大小比较器的三个输出为:A_gt_B,A_it_B和A_eq_B。当A>B时,A_gt_B=1;当A<B时,A_it_B=1;当A=B时,A_eq_B=1;其计算公式为:A_gt_B=(A[3]&~B[3])|(X[3]&A[2]&~B[2])|(X[3]&X[2]&A[1]&~B[1])|(X[3]&X[2]&X[1]&A[0]&~B[0]),A_it_B=(~A[3]&B[3])|(X[3]&~A[2]&B[2])|(X[3]&X[2]&~A[1]&B[1])|(X[3]&X[2]&X[1]&~A[0]&B[0]),
A_eq_B=X[3]&X[2]&X[1]&X[0];比较器(方法一)modulecomp1(A,B,A_gt_B,A_it_B,A_eq_B);input[3:0]A,B;outputA_gt_B,A_it_B,A_eq_B;wire[3:0]X;assignX[0]=(A[0]&B[0])|(~A[0]&~B[0]),X[1]=(A[1]&B[1])|(~A[1]&~B[1]),X[2]=(A[2]&B[2])|(~A[2]&~B[2]),X[3]=(A[3]&B[3])|(~A[3]&~B[3]);比较器(方法一)assign
A_gt_B=(A[3]&~B[3])|(X[3]&A[2]&~B[2])|(X[3]&X[2]&A[1]&~B[1])|(X[3]&X[2]&X[1]&A[0]&~B[0]),
A_it_B=(~A[3]&B[3])|(X[3]&~A[2]&B[2])|(X[3]&X[2]&~A[1]&B[1])|(X[3]&X[2]&X[1]&~A[0]&B[0]),
A_eq_B=X[3]&X[2]&X[1]&X[0];endmodule比较器(方法二)modulecomp2(A,B,A_gt_B,A_it_B,A_eq_B);input[3:0]A,B;outputA_gt_B,A_it_B,A_eq_B;assignA_gt_B=(A>B);assignA_it_B=(A<B);assignA_eq_B=(A==B);endmodule比较器(方法三)modulecomp3(A,B,A_gt_B,A_it_B,A_eq_B);input[3:0]A,B;outputA_gt_B,A_it_B,A_eq_B;reg
A_gt_B,A_it_B,A_eq_B;always@(AorB)beginif(A>B)beginA_gt_B<=1;A_it_B<=0;A_eq_B<=0;endelseif(A<B)begin
A_gt_B<=0;A_it_B<=1;A_eq_B<=0;endelseif(A==B)beginA_gt_B<=0;A_it_B<=0;A_eq_B<=1;endelsebeginA_gt_B<=0;A_it_B<=0;A_eq_B<=0;endendendmodule
编码器
编码器是指能实现用二进制对输入信号进行编码的电路,对于每一路输入信号将输出唯一的二进制代码数。编码器又分为一般编码器和优先编码器两种,一般编码器一次只能输入一个信号,优先编码器一次允许输入多个信号。下图所示是一个8-3编码器,其中in[7]~in[0]是8位数据输入端,out[2]~out[0]是3位编码输出端。8-3编码器若输入端每次有且只有一个是有效的(高电平),那么用一个8位的二进制串表示该输入信号是很浪费的(如用00010000表示in[4]端口有效的输入信号),可以把这个二进制串用一个3位的二进制数表示(000~111分别表示in[0]~in[7]是有效的),这就是8-3编码器。8-3编码器case语句实现moduleencoder(in,out);input[7:0]in;output[2:0]out;reg[2:0]out;always@(in)
case(in)
8'b00000001:out=3’b000;//in[0]为1时输出编码0008'b00000010:out=3’b001;//in[1]为1时输出编码0018'b00000100:out=3’b010;//in[2]为1时输出编码0108'b00001000:out=3’b011;//in[3]为1时输出编码0118'b00010000:out=3’b100;//in[4]为1时输出编码100
8'b00100000:out=3’b101;//in[5]为1时输出编码1018'b01000000:out=3’b110;//in[6]为1时输出编码1108'b10000000:out=3’b111;//in[7]为1时输出编码111
default:out=3’bxxx;
endcase
endmodule8-3优先编码器if语句实现要求优先级依次为:h->a;000~111分别表示a~h是有效的,若a~h没有一个信号有效时none_on取值为1,其它情况none_on取值为0;8-3优先编码器if语句实现moduleencoder8_3(none_on,out,a,b,c,d,e,f,g,h);
output
none_on;output[2:0]out;
inputa,b,c,d,e,f,g,h;reg[3:0]
outtemp;
assign{none_on,out}=outtemp;
always@(aorborcordoreorforgorh)begin
if(h)outtemp=4'b0111;elseif(g)outtemp=4'b0110;
elseif(f)outtemp=4'b0101;elseif(e)outtemp=4'b0100;elseif(d)outtemp=4'b0011;elseif(c)outtemp=4'b0010;elseif(b)outtemp=4'b0001;elseif(a)outtemp=4'b0000;elseouttemp=4'b1000;end
endmodule
用函数定义的8-3优先编码器modulecode8_3(in,out);
output[2:0]out;input[7:0]in;function[2:0]codeout;input[7:0]codein;If(codein[7])codeout=3’d7;elseif(codein[6])codeout=3’d6;elseif(codein[5])codeout=3’d5;elseif(codein[4])codeout=3’d4;elseif(codein[3])codeout=3’d3;elseif(codein[2])codeout=3’d2;elseif(codein[1])codeout=3’d1;elsecodeout=3’d0;endfunctionassignout=codeout(in);
end
endmodule
3-8解码器和8-3编码器工作过程恰恰相反,3-8解码器的工作是把已编码成3位的二进制数转换成相应的未编码前的8位二进制串。与8-3编码器不同的是,解码器多了一个使能端En,只有在使能端有效的时候,解码器才能工作。3-8解码器下图所示是一个一般解码器——3-8解码器,其中Ain[2]~Ain[0]是数据输入端,Yout[7]~Yout[0]是解码输出端,En是使能控制端。要求:Ain取000~111时,分别代表Yout[0]~Yout[7]有效moduledecoder(Ain,En,Yout);inputEn;input[2:0]Ain;output[7:0]Yout;
reg[7:0]Yout;always@(EnorAin)beginif(!En)
Yout=8'b0;//使能信号无效时会把输出置0else3-8解码器case(Ain)3'b000:Yout=8'b00000001;//03'b001:Yout=8'b00000010;//13'b010:Yout=8'b00000100;//23'b011:Yout=8'b00001000;//33'b100:Yout=8'b00010000;//43'b101:Yout=8'b00100000;//5
3'b110:Yout=8'b01000000;//63'b111:Yout=8'b10000000;//7default:Yout=8'b00000000;//default项
endcaseendendmodule多路数据选择器
多路数据选择器是一种应用广泛的通用逻辑器件,它能够根据按需要从多个输入信号中选择一个送到输出端。用if-else构造的4选1选择器
下图所示是一个用if-else语句构造的有优先级的选择器,c、d、e、f是4个数据输入端,pout是数据输出端,s是选择信号输入端。S取00时,pout=cS取01时,pout=dS取10时,pout=eS取其它值,pout=fIf-else是一个有优先级的条件执行语句结构,排在前面的判断条件优先级高,所以只要排在最前面的判断条件满足,就执行那个分支语句,把后面的分支全部忽略。在本程序中,4个输入端c、d、e、f优先级依次降低,建模程序如下:moduleIF_MUX(c,d,e,f,s,pout);inputc,d,e,f;input[1:0]s;outputpout;
regpout;always@(cordoreorfors)beginif(s==2'b00)pout=c;//s是00时选通celseif(s==2'b01)pout=d;//s是01时选通delseif(s==2'b10)
pout=e;//s是10时选通eelsepout=f;//s是其他值时选通fendendmodule用case构造的4选1选择器下图是一个用case语句构造的4选1多路选择器,C、D、E、F是4个数据输入端,MUX_OUT是数据输出端,S[1:0]是选择信号输入端。S取00时,pout=cS取01时,pout=dS取10时,pout=eS取其它值,pout=fmoduleMUX(C,D,E,F,S,MUX_OUT);inputC,D,E,F;input[1:0]S;outputMUX_OUT;
regMUX_OUT;
always@(CorDorEorForS)begincase(S)2'b00:MUX_OUT=C;//00时选择C2'b01:MUX_OUT=D;//01时选择D2'b10:MUX_OUT=E;//10时选择Edefault:MUX_OUT=F;//选择信号是其他值(包括11)时选择F
endcaseendendmodule用case构造的12选1选择器下图所示,这是一个用case语句构造的12选1多路选择器,其中A~M是12个数据输入端,mux_out是数据输出端,mux_sel是选择信号输入端。为了能从12个输入中选择1个,选择信号mux_sel至少应有4位,4位的值可以表示16种信号,没有用到的4种情况下将把输出置0。此选择器的建模程序如下:Modulemux12_1(mux_out,mux_sel,M,L,K,J,H,G,F,E,D,C,B,A);outputmux_out;input[3:0]mux_sel;inputM,L,K,J,H,G,F,E,D,C,B,A;
reg
mux_out;always@({mux_sel[3:0]}orMorLorKorJorHorGorForEorDorCorBorA)begincase({mux_sel[3:0]})4'b0000:mux_out=A;4'b0001:mux_out=B;4'b0010:mux_out=C;
4'b0011:mux_out=D;4'b0100:mux_out=E;4'b0101:mux_out=F;4'b0110:mux_out=G;4'b0111:mux_out=H;4'b1000:mux_out=J;4'b1001:mux_out=K;
4'b1010:mux_out=L;4'b1011:mux_out=M;4'b1100:mux_out=1'b0;//未选择任何信号,输出置04'b1101:mux_out=1'b0;//未选择任何信号,输出置04'b1110:mux_out=1'b0;//未选择任何信号,输出置04'b1111:mux_out=1'b0;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗健康领域的教育技术新进展概览
- 七年级英语学习障碍干预计划
- 医院继续医学教育新技术应用计划
- 土木工程质量保证及保修措施
- 心理咨询在企业管理中的应用心得体会
- 茶艺师企业内训计划
- 节日促销活动策划方案范文
- 2025年医疗安全与风险管理培训计划
- 数字营销项目实施方案书范文
- 2025年第二学期初中语文家校合作计划
- 马工程《公共财政概论》课后习题库(含)参考答案(可做期末复习和试卷)
- 医疗机构工作人员廉洁从业九项准则自查自纠报告
- 专升本英语智慧树知到答案2024年江苏财会职业学院
- 【S邮政代理金融业务营销现状及问题调查报告11000字(论文)】
- 组织行为学考试题(附参考答案)
- 中空工序作业指导书
- 2024年重庆市中考物理试卷真题A卷(含答案逐题解析)
- 办公区域主要风险辨识与分级管控清单
- 《不断变化的人口问题》核心素养目标教学设计、教材分析与教学反思-2023-2024学年初中历史与社会人教版新课程标准
- 髓核退变的分子机制研究
- 安徽省涡阳县2023-2024学年七年级下学期期中考试语文试题
评论
0/150
提交评论