高效除法器verilog实现_第1页
高效除法器verilog实现_第2页
高效除法器verilog实现_第3页
高效除法器verilog实现_第4页
高效除法器verilog实现_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

西北工业大学FPGA技术实验实验报告二(高效除法器)学 院: 软件与微电子学院 学号: 姓名: 专 业: 微电子学 实验时间: 2011.10.12 实验地点: 毅字楼335 指导教师: 王少熙 西北工业大学2010年10月一、实验目的及要求实验目的: 1.进一步了解熟悉verilog语句语法掌握条件语句在简单建模中的应用,学会建模仿真综合.2.熟练运用modelsim进行调试模拟仿真.3.初步学会运用综合工具进行综合,熟悉synplify.实验要求: 用verilog实现一个被除数为8位,除数为4位的高效除法器.二、实验设备(环境)及要求ModelSim SE 6.2b及Synplify Pro 9.6.2三、实验内容与步骤1. 实验总体设计思路 由于只有加法器,除法在计算机中是通过部分余数左移加除数补码或0实现,我们由此可以得到启示,也按照如此的思路进行.整体思路是先将八位(本来余数是四位的但是我们这里的余数不仅仅充当余数,还当中间变量把被除数从最高位一位一位的移到余数里)余数清零,然后把被除数的最高位拼接到余数后面,此时余数与除数比较, 若余数大于除数,则把他们俩的差作为新的余数,且把对应的商值为记1;若余数小于除数,则把对应位的商值记0;进行下一步之前把被除数的第二高位继续拼接到余数后面,如此进行,循环八次即可.最后结果是得到商和余数的形式.其算法流图如下所示:是否是否Start余数rem=0;商quo=0; i=7rem=rem6:0,didiremdisquoi=0;rem=rem;i=i-1;irem,故quo2=0;继续计算,把did1拼接到rem最低位,此时rem=0011,dis=10rem,故quo1=1,rem=rem-quo=0011-10=0001;进行最后一轮运算, 把did0拼接到rem最低位,此时rem=0010,dis=10=rem,因此quo0=1,rem=rem-dis=0010-10=0000,至此我们已计算完毕商quo=0011,余数rem=0000;计算简单快速.2. 测试平台设计模块设计timescale 1ns/1nsmodule divider_8_4(did, / Divident 被除数 dis, / Divisor 除数 quo, / Quotient 商 rem, / Remainder 余数 error / 错误,如果除数为0.则error置1 ); parameter M=7; / 被除数,余数,商的位数 parameter N=3; / 除数的位数input M:0 did;input N:0 dis; output M:0 quo; output M:0 rem;output error;reg M:0 quo;reg M:0 rem;reg error;integer i; / 整数,用于计数always (did or dis) / 被除数,除数beginquo=0;rem=0; / 开始余数和商清零if(dis=0)error=1; / 若除数为0则显示错误 else if(did0;i=i-1)/ 循环8次 begin rem=remM-1:0,didi-1; / 把didi-1连接到rem后 quo=quo=dis) / 若拼接后rem=除数dis beginquo=quo+1;/ 商值自加1 rem=rem-dis; / 新余数变为旧余数减除数 endend endend / 结束endmodule Tesebench如下:timescale 1ns/1nsmodule divider_bench;reg 7:0 did; reg 3:0 dis;wire 7:0 quo;wire 7:0 rem;integer i; / 整数,用于控制被除数变化 integer j; / 整数,用于控制除数变化 divider_8_4 d1(did,dis,quo,rem,error);/ 实例化initialbeginfor(i=0;i=255;i=i+1) / 被除数从0到255 begin did=i; for(j=0;j=15;j=j+1) / 除数从0到15变化 #1 dis=j;endendinitialbegin $monitor($time,divident=% divisor=%d quotient=%d remainder=%d,did,dis,quo,rem) ;endinitial begin #1000 $finish; / 1000ns时停止仿真endendmodule四、实验结果与数据处理1. Modelsim仿真结果,波形图,代码覆盖率图等为了严谨,把所有的数值都测了一遍(did从0到255,dis从0到15),从modeldim仿真结果看到程序的正确性,鉴于数据较多这里只选择几组数据给予展示: 上图中从上到下一次代表被除数,除数,错误,商和余数,当被除数是4.除数分别是9,10,11,12,13,14,15时商为0,余数分别9,10,11,12,13,14,15.当被除数为147,除数分别为1,2,3,4,5,6,7时,商分别为147,73,49,36,29,24,21,余数分别为0,1,0,3,2,3,0.结果正确.由上图可见代码覆盖率已达100%,非常好.2. 综合结果,布局布线结果,关键路径,资源利用率等。 用Synplify Pro 9.6.2进行综合得到结果如下图:由于过程简单,布局和布线基本用到很少,关键路径主要在testbench中开始赋初值的时间和除数被除数的正确输入,程序简单明了资源利用率较高。五、分析与讨论1.

温馨提示

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

评论

0/150

提交评论