用verilog编写16位加法器乘法器自动售货机_第1页
用verilog编写16位加法器乘法器自动售货机_第2页
用verilog编写16位加法器乘法器自动售货机_第3页
用verilog编写16位加法器乘法器自动售货机_第4页
用verilog编写16位加法器乘法器自动售货机_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、Verilog课程实验报告实验1十六位超前进位加法器系统设计要求用超前进位加法器实现一个有符号位的16位加法器,并且考虑溢出的情况详细设计设计出4位加法器原理如下图所示。溢出根据超前进位加法器的原理Co=G|(P&Ci)S=PACi的子模块,然后通过4个4位加法器的相连来得到十六位的加法器。用flag=0表示。PoP2P3G2G3Ci,0G1Po GiIdea:If(P0andPiandP2andP3=1)thenCo3=Co,elsekill0rgenerate”程序modulesixteenaddertest;wire15:0s;reg15:0a,b;wireflag;parame

2、tertimes=5;a=-10743,b=11372没有溢出,sto=0.通过这个实验验证了s=a+b,实现了带符号位的加法器。实验二十六位加减法器系统设计要求将加法器和减法器结合到一起,实现带符号位的16位加减法运算,并考虑溢出。详细设计在16位加法器的基础上,加上一条判断语句,如果出现减的操作,被减数取反加一,这样就实现了减的运算,用add_sub来表示加减运算符,当add_sub=0时候实现的是减运算,add_sub=1的时候实现的是加运算。程序moduleadder_sub_test;wire15:0s;reg15:0a,b;regadd_sub;wireflaginitial当a=

3、-4659b=12817add_sub=0,减操作,输出s=-17476,无溢出,flag=0.当a=562b=-24223add_sub=1,加操作,输出s=-23661,无溢出,flag=0.通过以上的结果分析,此程序实现了带符号位的加减法的功能。实验三十六位的乘法器11系统设计要求实现16*16位的无符号位的乘法器详细设计乘法器的硬件电路原理如下定义16个寄存器,用来存储一行乘操作产生的数据,最后的结果为所有16行相加。CriticalPath1CritkalPath2CriricalPath1&2程序modulemult_test;reg15:0a,b_in;wirerdy;w

4、ire31:0mux_out;regclk,rst_n,en;initialbeginclk=0;forever#50clk=clk;endinitialbeginrst_n=0;en=0;a=16'h1231;b_in=16'ha231;#100beginrst_n=1;en=0;a=16'h2137;b_in=16'h0142;end#100beginrst_n=1;en=1;a=16'h0234;b_in=16'h12a7;end#100beginrst_n=1;en=1;a=16'h0012;b_in=16'ha261;e

5、nd#100beginrst_n=0;en=1;a=16'h1112;b_in=16'h0879;end#10000$stop;endmuxmux1(.clk(clk),.rst_n(rst_n),.en(en),.a(a),.b_in(b_in),.rdy(rdy),.mux_out(mux_out);endmodule仿真波形通过仿真产生的波形如下所示:4775-26931001569I74S242当rst_n=0处于复位状态输出mux_out=0,当rst=1并且使能端en=1时候,乘法器工作。当a=564,b=4775,mux_out=2693100,sto=1,实现了

6、乘的操作,验证了电路实现乘法功能。实验四自动售货机设计系统设计要求自动售货机投入的金钱有50元,10元,5元,1元四种货币。可供选择的商品有7种类型。投入金钱后选择要买的商品,当投入的钱足够时,显示money_enough。并显示出要买的商品,并且找零,当投入的钱不够的时候,通过复位成初始态。具体的要求如下图所示:详细设计初始状态下,设投入的money,找零charge,money_enough都为0。投入的四种货币总共有12种情况,用price_all表示。设商品goods有7种,其价格为1,5,10,15,20,30,50,用price表示。Rest为低电平时候,一切初始。在rest为高电

7、平的时候。选择商品,并且投币,当price-all小于price时候,也就是投入的金钱不够,显示money_enough为0,回初始状态。当pirce_all大于price时候,输出选择的商品goods。并且找零。其状态转换图如下:所投的金颤小于商品价格Moneyn123456789101112Price_all1510502201001151155560Selln1234567price151015203050程序moduleautosell_test;regclk,rest;reg3:0money;reg2:0sell;wire7:0charge;wire2:0goods;wiremoney_enough;initialbeginclk=0;forever#25clk=clk;endinitialbeginlk(clk),.sell(sell),.rest(rest),.money(money),.charge(charge),.goods(goods),.money_enough(money_enough);endmodule仿真结果用进行仿真得到的仿真图形如下:如图所示,在money类型为9,选择商品类型为6,对应的总投入的面值pirce-all=51,商品6的价格为price=30,显示money_enough为高电平,找零charge为21。在money为

温馨提示

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

评论

0/150

提交评论