作业-基于verilog HDL的八位超前进位加法器.doc_第1页
作业-基于verilog HDL的八位超前进位加法器.doc_第2页
作业-基于verilog HDL的八位超前进位加法器.doc_第3页
作业-基于verilog HDL的八位超前进位加法器.doc_第4页
作业-基于verilog HDL的八位超前进位加法器.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

基于verilog HDL的八位超前进位加法器Verilog 综合作业 陈孙文 2011-10-25指导老师:邓婉玲老师目录:1. 超前进位加法器原理2. 算法代码3. modelsim SE软件实现功能仿真4. synplify pro软件实现综合正文:一、 原理(1)、全加器列出真值表如表所示,若Ai、Bi两个一位二进制数相加,以Ci表示来自低位的的进位,Si表示和,Ci表示向高位的进位,可以看出该电路考虑来低位的进位,是一个一位数的全加器电路,其逻辑符号如图所示。串并行超前进位加法器的特点是:各级进位信号同时产生,减小或消除因进位信号逐级传递所用的时间。每一位的进位信号不依赖于从低位逐级传递,而是开始就能确定。全加器真值可以得到逻辑表达式:为表达简单,定义两个中间变量Gi和Pi 得出得到各位进位信号的逻辑表达式为: 当实际位数较多时,往往将全部数位按4位一组分成若干组,组内采用超前进位,组间采用串行进价,组成所谓的串并行进位加法器。二、 算法代码:有4bits.v、8bits.v、testbench.v三个文件;4bits.v实现输入为4位数的加法器;8bits.v中调用4bits.v中的函数来实现8位数相加;testbench.v为测试代码;实现四位加法4bits.v部分:module fast_adder4b(ina,inb,carry_in,sum_out,clk,rst_n); parameter ADDER_WIDTH=4; parameter SUM_WIDTH=5; input ADDER_WIDTH-1:0ina; /输入数ina,8位 input ADDER_WIDTH-1:0inb; /输入数inb,8位 input carry_in; input rst_n; input clk; output SUM_WIDTH-1:0 sum_out; reg SUM_WIDTH-1:0 sum_out; wire ADDER_WIDTH-1:0sg; wire ADDER_WIDTH-1:0sp; wire ADDER_WIDTH-1:0sc; assign sg0=ina0&inb0; /中间变量G0=ina0&inb0; assign sg1=ina1&inb1; assign sg2=ina2&inb2; assign sg3=ina3&inb3; assign sp0=ina0inb0; /中间变量P0=ina0inb0; assign sp1=ina1inb1; assign sp2=ina2inb2; assign sp3=ina3inb3; assign sc0=sg0|(sp0&carry_in); /进位位C0 assign sc1=sg1|(sp1&(sg0|(sp0&carry_in); assign sc2=sg2|(sp2&(sg1|(sp1&(sg0|(sp0&carry_in); assign sc3=sg3|(sp3&(sg2|(sp2&(sg1|(sp1&(sg0|(sp0&carry_in); always(posedge clk or negedge rst_n) begin if(!rst_n) sum_out=5b00000; else begin sum_out0=sp0carry_in; /输出结果位 sum_out1=sp1sc0; sum_out2=sp2sc1; sum_out3=sp3sc2; sum_out4=sc3; end endendmodule实现八位加法8bits.v部分:module pipe_adder8b(ina,inb,sum_out,clk,rst_n); parameter ADDER_WIDTH=8; parameter SUM_WIDTH=9; parameter HALF_ADDER_WIDTH=4; input ADDER_WIDTH-1:0ina; input ADDER_WIDTH-1:0inb; input rst_n; input clk; outputSUM_WIDTH-1:0 sum_out; reg SUM_WIDTH-1:0 sum_out; reg HALF_ADDER_WIDTH-1:0 ina_lsb; reg HALF_ADDER_WIDTH-1:0 ina_msb; reg HALF_ADDER_WIDTH-1:0 inb_lsb; reg HALF_ADDER_WIDTH-1:0 inb_msb; reg HALF_ADDER_WIDTH-1:0 ina_msb1; reg HALF_ADDER_WIDTH-1:0 inb_msb1; reg HALF_ADDER_WIDTH:0 sum11; wireHALF_ADDER_WIDTH:0 sum1; wireHALF_ADDER_WIDTH:0 sum2; always (posedge clk or negedge rst_n) begin if(!rst_n) begin ina_lsb=4b0000; ina_msb=4b0000; inb_lsb=4b0000; inb_msb=4b0000; end else begin ina_lsb=ina3:0; ina_msb=ina7:4; inb_lsb=inb3:0; inb_msb=inb7:4; end end fast_adder4b u1(ina_lsb,inb_lsb,1b0,sum1,clk,rst_n); /低四位调用4位加法器模块 always (posedge clk or negedge rst_n) begin if(!rst_n) begin ina_msb1=4b0000; inb_msb1=4b0000; end else begin ina_msb1=ina_msb; inb_msb1=inb_msb; end end fast_adder4b u2(ina_msb1,inb_msb1,sum14,sum2,clk,rst_n); /高四位调用4位加法器模块 always (posedge clk or negedge rst_n) begin if(!rst_n) sum11=4b0000; else sum11=sum1; en

温馨提示

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

评论

0/150

提交评论