资源描述:
《Verilog实例.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、西安邮电学院VerilogHDL实例1提纲基本单元电路的Verilog实现21-bit加法器?31-bit加法器(1)moduleadder(a,b,cin,sum,cout);inputa,b,cin;outputsum,cout;assign{cout,sum}=a+b+cin;endmodule41-bit加法器(2)moduleadder(a,b,cin,sum,cout);inputa,b,cin;outputsum,cout;regsum,cout;always@(aorborcin)//a或b或cin发生变化begin{cout,sum}=
2、a+b+cin;endendmodule5多路选择器?6多路器(1)modulemux(out,a,b,sel);outputout;inputa,b,sel;assignout=sel?a:bendmodule7多路器(2)modulemux(out,a,b,sel);outputout;inputa,b,sel;regout;always@(aorborsel)begincase(sel)1’b1:out=a;1’b0:out=b;default:out=’bx;//此句是否可以去掉?endcaseendendmodule8多路器(3)modulem
3、ux(out,a,b,sel);outputout;inputa,b,sel;regout;always@(aorborsel)beginif(sel)out=a;elseout=b;endendmodule9异步复位D触发器?10moduledff_syn(data,clk,reset,q);inputdata,clk,reset;outputq;regq;always@(posedgeclkorposedgereset)beginif(reset)//if(reset==1)q<=1’b0;elseq<=data;//过程结束后才完成赋值endend
4、module异步复位D触发器11同步复位D触发器?12同步复位D触发器moduledff_syn(data,clk,reset,q);inputdata,clk,reset;outputq;regq;always@(posedgeclk)beginif(reset)//if(reset==1)q<=1’b0;elseq<=data;//过程结束后才完成赋值endendmodule13同步置位D触发器?14同步置位D触发器moduledff_syn(data,clk,preset,q);inputdata,clk,preset;outputq;regq;a
5、lways@(posedgeclk)beginif(preset)q<=1’b1;elseq<=data;endendmodule15锁存器Latch?16锁存器Latchmodulelatch(data,enable,y);inputdata,enable;outputy;regy;always@(dataorenable)beginif(enable)y=data;endendmodule17状态机(statemachine)Moore状态机–输出仅与当前状态有关Mealy状态机–输出与当前状态与当前输入有关状态机组成–当前状态寄存器–下一状态的组合
6、逻辑–当前输出的组合逻辑18状态机结构框图MealymachineMooremachine19例1:8位带进位端的加法器moduleadder_8(cout,sum,a,b,cin);outputcout;output[7:0]sum;inputcin;input[7:0]a,b;assign{cout,sum}=a+b+cin;endmodule20例2:指令译码电路`defineplus3’d0`defineminus3’d1`defineband3’d2`definebor3’d3`defineunegate3’d4modulealu(out,op
7、code,a,b);output[7:0]out;input[2:0]opcade;input[7:0]a,b;reg[7:0]out;always@(opcodeoraorb)begincase(opcode)`plus:out=a+b;`minus:out=a-b;`band:out=a&b;`bor:out=a
8、b;`unegate:out=~a;default:out=8’hx;endcaseendendmodule21例3:比较器modulecompare(equal,a,b);parametersize=8;outputequal;input
9、[size-1:0]a,b;assignequal=(a==b)?1:0;//b