版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 灯具安装质保合同模板
- 绿化水电包工合同模板
- 柴油易货合同模板
- 童鞋代理合同模板
- 北京钢材合同模板
- 小旅馆转让合同模板
- 伤残赔偿合同模板
- 广州二建采购合同模板
- 兽医用油脂项目可行性实施报告
- 卷浆机造纸工业用项目评价分析报告
- AxureRP9网站与App原型设计(全彩慕课版)-教学教案
- 2023年营养师、营养指导员专业技能及理论知识考试题库(附含答案)
- 产品不良品(PPM)统计表格模板
- 土木工程施工-施工组织课程设计
- 军用无人机概述课件
- 讲师教练技术第一阶段导师讲义版本五
- 灶具安装熄火保护合同范本
- 《财务共享实务》课程期末考试题库及答案
- 门诊药房运用PDCA循环提高门诊药房用药交代率品管圈(QCC)活动成果报告书
- 2023学年完整公开课版aoouiu 省赛获奖
- 妇科常用专科用药
评论
0/150
提交评论