eda verilog简单数字电路设计_第1页
eda verilog简单数字电路设计_第2页
eda verilog简单数字电路设计_第3页
eda verilog简单数字电路设计_第4页
eda verilog简单数字电路设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1电子电路设计训练

数字部分(Verilog)第四讲、简单数字电路设计24.1门级电路一个逻辑电路是由许多逻辑门和开关所组成,因此用逻辑门的模型来描述逻辑电路结构是最直观的。Verilog提供了一些描述门类型的关键字,可以用于门级结构建模。Verilog基本元件模型共有26种,其中14种为基本门级元件,12种为开关级元件,34.1门级电路门级电路列表多输入门and(与门)nand(与非门)or(或门)

nor(或非门)

xor(异或门)

xnor(异或非门,同或门)多输出门buf(缓冲器)not(非门)三态门(如果不被使能,

则输出“z”)bufif0(低电平使能缓冲器)

bufif1(高电平使能缓冲器)notif0(低电平使能非门)

notif1(高电平使能非门)上拉,下拉电阻pullup(上拉电阻)pulldown(下拉电阻)<实例元件名>(<数据输出>,<数据输入>,<控制输入>)44.1门级电路门级电路调用(实例化)<门的类型>[<驱动能力><延时>]<门实例1>[,<门实例2>,

<门实例3>……];而每个门实例,按照<实例元件名>(<数据输出>,<数据输入>,<控制输入>)例:nand#10nd1(a,data,clock,clear);这个例子说明在模块中只使用了一个名为nd1的与非门实例,输入为clock,data,clear输出为a,输出与输入的延时为10个单位时间。54.1门级电路门级电路例子--D触发器6门级电路例子--D触发器(续)module

flop

(data,clock,clear,q,qb);input data,clock,clear;outputq,qb;endmodulenand #10

nd1(a,data,clock,clear), nd2(b,ndata,clock),nd4(d,c,b,clear),nd5(e,c,nclock),nd6(f,d,nclock),nd8(qb,q,f,clear);nand #9

nd3(c,a,d),nd7(q,e,qb);not #10

iv1(ndata,data),iv2(nclock,clock);74.1门级电路门级电路例子—4位寄存器`include“flop.v”module

hardreg

(d,clk,clrb,q);input clk,clrb;input[3:0]d;output[3:0]q;endmoduleflopf0(d[0],clk,clrb,q[0],),f1(d[1],clk,clrb,q[1],),

f2(d[2],clk,clrb,q[2],),f3(d[3],clk,clrb,q[3],);注意但是,对于自行定义的模块,推荐的作法:flopf0(.data(d[0]),.clock(clk),.clear(clrb),.q(q[0]),),f1(.data(d[1]),.clock(clk),.clear(clrb),.q(q[1]),),f2(.data(d[2]),.clock(clk),.clear(clrb),.q(q[2]),),f3(.data(d[3]),.clock(clk),.clear(clrb),.q(q[3]),);84.1门级电路门级电路例子—行为描述对比module

behaviorreg

(d,clk,clrb,q);input clk,clrb;input[3:0]d;output[3:0]q;endmodulealways

@(posedgeclkorclrb)

begin

if(!clrb)q<=0;

elseq<=d;

end94.2常用组合逻辑电路组合逻辑电路—

功能上无记忆,结构上无反馈电路任一时刻的输出状态只取决于该时刻各输入状态的组合,而与电路的原状态无关。对于任何一个多输入多输出组合逻辑电路,可以用框图或者一组逻辑函数来表示。y1=f1

(a1,a2,…,an)y2=f2

(a1,a2,…,an)…ym

=fm

(a1,a2,…,an)

104.2常用组合逻辑电路加法器回忆多位加法器114.2常用组合逻辑电路加法器module

add_4(A,B,CI,S,CO);input[3:0] A,B;input CI;output[3:0]S;output CO;assign {CO,S}=A+B+CI;endmodule4位全加器16位?module

add_16(A,B,CI,S,CO);input[15:0] A,B;input CI;output[15:0]S;output CO;assign {CO,S}=A+B+CI;endmodule16位全加器124.2常用组合逻辑电路乘法器modulemult_4(X,Y,Product); input[3:0]X,Y; output[7:0]Product; assignProduct=X*Y;endmodule134.2常用组合逻辑电路比较器XY(X>Y)(X>=Y)(X=Y)(X<=Y)(X<Y)(X!=Y)00011100010001111011000111011100(X>Y)=X·(~Y)(X<Y)=(~X)·Y(X=Y)=(~X)·(~Y)+X·Y14比较器modulecompare_n(X,Y,XGY,XSY,XEY);parameterwidth=8;//必须在用以前写input[width-1:0]X,Y;outputXGY,XSY,XEY;regXGY,XSY,XEY;

always@(XorY)//每当X或Y变化时beginif(X==Y)XEY=1;//设置X等于Y的信号为1elseXEY=0;if(X>Y)XGY=1;//设置X大于Y的信号为1elseXGY=0;if(X<Y)XSY=1;//设置X小于Y的信号为1elseXSY=0;endendmodule154.2常用组合逻辑电路多路器modulemuxtwo(out,a,b,sl);inputa,b,sl;outputout;regout;always@(sloraorb) if(!sl)out=a; elseout=b;endmodulen位数据选择信号数据输出数据输入D0D1二选一8选一?164.2常用组合逻辑电路多路器moduleMux_8(addr,in1,in2,in3,in4,in5,in6,in7,in8,Mout,nCS);parameterwidth=8;

input[2:0]addr;input[width-1:0]in1,in2,in3,in4,in5,in6,in7,in8;inputnCS;output[windth-1:0]Mout;reg[windth-1:0]Mout;

always@(addrorin1orin2orin3orin4orin5orin6orin7orin8ornCS)beginif(!nCS) case(addr)3'b000:Mout=in1;3'b001:Mout=in2;….endcaseelse Mout=0;endendmodule八选一…174.2常用组合逻辑电路编码器(8-3编码器)moduleencode8to3(in,out);input[7:0]in;output[2:0]out;reg[2:0]out;always@(in)begincase(in)8'b00000001:out=3'b000;8'b00000010:out=3'b001;8'b00000100:out=3'b010; 8'b00001000:out=3'b011; 8'b00010000:out=3'b100; 8'b00100000:out=3'b101; 8'b01000000:out=3'b110; 8'b10000000:out=3'b111;

default:out=3’b000;

//讨论,default的重要性endcaseendendmodule184.2常用组合逻辑电路译码器(3-8译码器)moduledecode3to8(addr,out);

input[2:0]addr;

output[7:0]out;

assignout=1’b1<<addr;

endmodule194.3常用时序逻辑电路输出不只是当前输入的逻辑电平的函数,还与目前电路所处的状态有关。时序逻辑通常是由多个触发器和多个组合逻辑块组成的网络,时序逻辑电路是设计复杂数字电路的核心。204.3常用时序逻辑电路RS触发器moduleRS_FF(R,S,Q,QB);

inputR,S;

outputQ,QB;

regQ,QB;

always@(RorS)

case({R,S})

0:beginQ<=Q;QB<=QB;end

1:beginQ<=1;QB<=0;end

2:beginQ<=0;QB<=1;end

3:beginQ<=1‘bx;QB<=1’bx;end//思考是否影响综合?

endcase

endmodule214.3常用时序逻辑电路RS触发器224.3常用时序逻辑电路同步RS触发器234.3常用时序逻辑电路同步RS触发器moduleSY_RS_FF(R,S,CLK,Q,QB);

inputR,S,CLK;

outputQ,QB;

regQ;

assignQB=~Q;

always@(posedgeCLK)

case({R,S})

0:Q<=0;

1:Q<=1;

2:Q<=0;

3:Q<=1‘bx;

endcase

endmodule

244.3常用时序逻辑电路同步RS触发器moduleSY_RS_FF(R,S,CLK,Q,QB);

inputR,S,CLK;

outputQ,QB;

regQ;

assignQB=~Q;

always@(posedgeCLK)

case({R,S})

0:Q<=0;

1:Q<=1;

2:Q<=0;

3:Q<=1'bx;

endcase

endmodule254.3常用时序逻辑电路D触发器

moduleSY_D_FF(D,CLK,Q,QB);

inputD,CLK;

outputQ,QB;

regQ;

assignQB=~Q;

always@(posedgeCLK)

Q<=D;

endmodule264.3常用时序逻辑电路JK触发器274.3常用时序逻辑电路JK触发器moduleSY_JK_FF(J,K,CLK,Q,QB);

inputJ,K,CLK;

outputQ,QB;

regQ;

assignQB=~Q;

always

@(posedgeCLK)

case({J,K})

0:Q<=Q;

1:Q<=0;

2:Q<=1;

3:Q<=~Q;

endcase

endmoduleQnJK010001111011101000284.3常用时序逻辑电路寄存器

moduleREG4(CLR,D,CLK,Q);

inputCLR,CLK;

input[3:0]D;

output[3:0]Q;

reg[3:0]Q;

always@(posedgeCLKornegedgeCLR)

Q<=(!CLR)?0:D;

endmodule294.3常用时序逻辑电路移位寄存器moduleshifter_1(IN,CLK,CLR,Q);inputI

温馨提示

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

评论

0/150

提交评论