VerilogHDL常用组合电路设计.ppt_第1页
VerilogHDL常用组合电路设计.ppt_第2页
VerilogHDL常用组合电路设计.ppt_第3页
VerilogHDL常用组合电路设计.ppt_第4页
VerilogHDL常用组合电路设计.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

常用组合电路设计指导,主要内容,MUX设计 加法器电路 译码器设计 7段显示译码器设计 编码器设计,组合逻辑电路定义,组合逻辑含义: 电路任一时刻的输出状态只决定于该时刻各输入状态的组合,而与电路的原状态无关。组合电路就是由门电路组合而成,电路中没有记忆单元,没有反馈通路。,组合逻辑建模方法,建模思路: 用语言表述出来:针对输入,总有确定的输出,输入一变化,输出就随之变化 建模规范: 1.过程(进程)之外,本来就是并行,直接建模 2.过程(进程)之内:a.所有输入变化立刻变化。b.针对输入,输出有确定值,Verilog 过程及译码电路,always 过程语句 always定义的过程块是一个电路,电路从上电开始就会一直执行; (从代码一开始就执行,执行完了再回到过程块的最初来执行,周而复始,不会停止,直到代码执行完毕),多路选择器(MUX),用case语句实现多路选择器,一般要求选择信号之间是关联的; Case的多路选择器一般是并行的操作。,/* mux4_1.v参考设计(1) */ module mux4_1(a,b,c,d,sel,dout); input a,b,c,d; input 1:0 sel; output dout; reg dout; always(a or b or c or d or sel) begin case(sel) 2b00:dout=a; 2b01:dout=b; 2b10:dout=c; 2b11:dout=d; endcase end endmodule,/* mux4_1.v参考设计(2) */ module mux4_1(a,b,c,d,sel,dout); input a,b,c,d; input 1:0 sel; output dout; reg dout; always(a or b or c or d or sel) begin if(sel=2b00) dout=a; else if(sel=2b01) dout=b; else if(sel=2b10) dout=c; else dout=d; end endmodule,/* mux4_1.v参考设计(3) */ module mux4_1(a,b,c,d,sel,dout); input a,b,c,d; input 1:0 sel; output dout; wire dout; assign dout=(sel=2b00)?a: (sel=2b01)?b: (sel=2b10)?c:d; endmodule,半加器电路,真值表,半加器,能对两个一位二进制数相加,求得其和值及进位的逻辑电路称为半加器。半加器的特点是:只考虑两个一位二进制数的相加,而不考虑来自低位进位的运算电路,称为半加器。任务7中设计的一位加法器级为半加器。,加法器电路,根据上述的真值关系,可以得到两个布尔代数表达式如下: 根据上述表达式,按照原理图的方法设计加法器,原理图如图1所示。 图1 一位加法器原理图,半加器电路原理图,根据上述的真值关系,可以得到两个布尔代数表达式如下:,根据上述表达式,按照原理图的方法设计加法器, 原理图如图1所示。,图1 一位加法器原理图,/* adder.v参考设计(1) */ module adder( a1, a2, b, c ); input a1,a2; output b; output c; wire b,c; assign b=a1a2; assign c=a endmodule,/* adder.v参考设计(2) */ module adder( a1, a2, b, c ); input a1,a2; output b; output c; wire b,c; assign c,b=a1+a2; endmodule,全加器,一位二进制数相加不仅要考虑本位的加数与被加数,还要考虑低位的进位信号,而输出包括本位和以及向高位的进位信号,这就是通常所说的全加器。一位全加器是构成多位加法器的基础,应用非常广泛。 一位全加器有三个输入端(两个加数Ai和Bi,以及低位的进位Ci-1),输出有两个(加法和Si、加法向高位的进位Ci),全加器电路框图如图2所示,真值表如表2所示。,全加器,图2 全加器框图,表2 全加器真值表,全加器,一位全加器,/* 一位全加器的数据流建模(1): */ module fa_adder(a,b,cin,sum,count) input a,b,cin; output sum,count; reg sum,count; reg t1,t2,t3; always(a or b or cin) begin sum =(ab)cin; t1= a end endmodule,Always块内赋值必须定义为reg,Begin和end之间语句是顺序执行,/* 一位全加器的行为建模(2): */ module fa_behav1(a,b,cin,sum,count) input a,b,cin; output sum,count; reg sum,count; always(a or b or cin) begin count,sum=a + b + cin; end endmodule,直接采用“”来描述,低位放在sum变量中,进位放在count中,两位全加器设计,译码器(decode),译码器是组合逻辑电路的一个重要器件,一般分为变量译码和显示译码两类。变量译码通常是一种较少输入、较多输出的器件,分为2n译码和8421BCD码译码两类。 因为译码相信号之间是关联的,因此译码器一般用case语句实现;,3-8译码器,3-8译码器是一种2n译码器,其功能是把二进制编码的3位数经过译码变为8路输出,一次只有一个输出为选通有效。,表1 3-8译码器器真值表,/* dec3_8.v参考设计 */ module dec3_8(ain, dout); input 2:0 ain; output 7:0 dout; reg 7:0 dout; always(ain ) begin case(ain) 3b000:dout=8b0000_0001; 3b001:dout=8b0000_0010; 3b010:dout=8b0000_0100; 3b011:dout=8b0000_1000; 3b100:dout=8b0001_0000; 3b101:dout=8b0010_0000; 3b110:dout=8b0100_0000; 3b111:dout=8b1000_0000; default:dout=8b0000_0000; endcase end endmodule,七段显示译码器设计,一、目的 (1) 设计一个BCD码-7段线译码器; (2) 学习用Verilog HDL进行逻辑描述; (3) 熟悉case语句的用法。,二.设计要求,七段显示译码器可直接驱动七段数码管,七段数码管结构如下图所示:考虑设计一个7段译码器,用于驱动共阴极接地的七段数码管,并规定用1表示数码管中线段的点亮状态,0表示线段的熄灭状态,LED数码管结构图,参考设计,module bin27seg (data_in ,data_out ); input 3:0 data_in ; output 6:0 data_out ; reg 6:0 data_out ; always (data_in ) begin,case (data_in ) 4b0001: data_out = 7b0000110; 4b0010: data_out = 7b1011011; 4b0011: data_out = 7b1001111; 4b0100: data_out = 7b1100110; 4b0101: data_out = 7b1101101; 4b0110: data_out = 7b1111101; 4b0111: data_out = 7b0000111; 4b1000: data_out = 7b1111111; 4b1001: data_out = 7b1101111; 4b1010: data_out = 7b1110111; 4b1011: data_out = 7b1111100; 4b1100: data_out = 7b0111001; 4b1101: data_out = 7b1011110; 4b1110: data_out = 7b1111001; 4b1111: data_out = 7b1110001; default: data_out = 7b0111111; endcase end endmodule,编码器(encode),考虑设计一个8位输入、3位输出的优先级编码器,如图所示,为了使用上的方便,还要考虑到如果输入是无效的,则输出为高阻态。其中D0D7表示编码器8位输出的高低电平,A2A0表示3位二进制代码,并规定用X表示输入为任意状态,用Z表示输出为高阻态。,优先级编码器框图,Verilog HDL参考设计,module encode8_3(d,a); input 7:0 d; output2:0 a; reg 2:0 a; always(a) begin if (d7 =1b0) a = 3b000; else if( d6= =1b0) a = 3

温馨提示

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

评论

0/150

提交评论