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

下载本文档

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

文档简介

1、西北工业大学FPGA技术实验实验报告二(高效除法器)学院学软件与微电子学院号姓名微电子学专业实验时间实毅字楼335验地点指导教师西北工业大学2010年10月一、实验目的及要求实验目的:1 进一步了解熟悉verilog语句语法掌握条件语句在简单建模中的应用, 学会建模仿真综合2.熟练运用modelsim进行调试模拟仿真.3初步学会运用综合工具进行综合,熟悉synplify.实验要求:用verilog实现一个被除数为8位,除数为4位的高效除法器.二、实验设备(环境)及要求ModelSim SE 6.2b 及 三、实验容与步骤1实验总体设计思路由于只有加法器,除法在计算机中是通过部分余数左移加除数补

2、码或0实现,我们由此可以得到启示,也按照如此的思路进行整体思路是先将八位(本来余数 是 四位的但是我们这里的余数不仅仅充当余数,还当中间变量把被除数从最高位一位一位的移到余数里)余数清零,然后把被除数的最高位拼接到余数后面,此时 余数与除数比较,若余数大于除数,则把他们俩的差作为新的余数,且把对应的商值 为记1;若余数小于除数,则把对应位的商值记0;进行下一步之前把被除数的第二高位 继续拼接到余数后面,如此进行,循环八次即可最后结果是得到商和余数的形式其 算法流图如下所示:Start为了能清楚的展示以上算法我们看下面例子:为了简单期间我们假设被除数(did)是4位,除数(dis)是2位,商(q

3、uo)是4位,余数(rem)是4位,设did=O110,dis=10,我 们来看看是怎么执行的首先余数和商都清零,即rem=0,quo=0;ffi被除数的最高位0拼 接到rem的最低位,此时rem=0000B,由于rem小于除数dis=10贝J商quo3=0;下面 进行第二次计算,把did拼接到rem最低位,此时rem=0001 ,clis=10>rem3故 quo2=0継续计算,把did1拼接到rem最低位,止匕时rem=0011 ,dis=10<rem,故 quo1 =1 ,rem=rem-quo=0011 -10=0001;进行最后一轮运算,把 didO拼接至 U rem 最

4、低位,此时 rem=0010,dis=10=rem.因此quo0=1 ,rem=remdis=001010=0000,至此我们已计算元毕商quo=0011,余数 rem=0000;计算简单快速.2.测试平台设计模块设计'timescale 1 ns/1 nsdis,/ Divisor除数quo,/ Quotie nt商rem,/ Rema inder余数error/错误,如果除数为0则error置1);parameter M=7;被除数,余数,商的位数parameter N=3;/R仝米时占彳占米hin put M:0 did;in put N:0 dis;output M:0 quo

5、;output M:0 rem;output error;reg M:0 quo;reg M:0 rem;reg error;in teger i;整数,用于计数module divider_8_4(did./ Divide nt 被除数always (did or dis)/被除数,除数开始余数和商清零若除数为0则显示错误为了提高效率,在被除数小于除数时商0,余数为除数/循坏8次beg inquo=0;rem=O;/if(dis=O)error=1;/else if(did<dis)/beg in/rem=dis;quo=0;error=0;endelsebeg inerror=O;f

6、or (i=8;i>0;i=i-1)beg inrem=remM-1:0,didi-1;quo=quo«1;/if(rem>=dis)/beg inquo=quo+1;/rem=rem-dis;/把didi-1连接到rem后商左移一位若拼接后rem>=除数dis商值自加1新余数变为旧余数减除数endendend/en dmoduleTesebench 如下:'timescale s/1ns module divider_be nch;reg 7:0 did;reg 3:0 dis;wire 7:0 quo;wire 7:0 rem;in teger i;in

7、 teger j;结束整数,用于控制被除数变化整数,用于控制除数变化divider_8_4 d1 (did,dis,quo,rem,error); /实例化in itialbeg infor(i=0;i<=255;i=i+1)beg indid=i;for(j=0;j<=15;j=j+1)被除数从0到255/除数从0到15变化#1 dis=j;end in itial beg indivisor=%dquotie nt=%d/1000ns时停止仿真$mon itor($time,"divide nt=% remai nder=%d',Jdid)clis,quo,r

8、em); endin itialbeg in#1000 $fini sh;enden dmodule四、实验结果与数据处理I.Modelsim仿真结果,波形图,代码覆盖率图等为了严谨,把所有的数值都测了一遍(did从0至IJ 255,dis A 0至IJ15),从modeldim仿真结果看到程序的正确性,鉴于数据较多这里只选择几组数据给 予展示怕-default+ y /divider bench/did44+ 4 /divider bench/dis103):10I 11 112131141510II* /divider bench/errotjT+ 4 /dirvider berich/q

9、uo00+ 0 /divider berich/rem10(9110:11 1121311415_<上图中从上到下一次代表被除数,除数,错误,商和余数,当被除数是4除数分别 是 9,10,11,12,13,14,15 时商为 0涂数分别 9,10,11,12,13,14,15.wave default/dMdef bench/dkj上 * /dividef berwh/dis1471470(o :1立3145161l0 /dividei_bench/erroi12; ; Aa(01471734SI3E29124:2i r7divi£ler_bench/quo +;' j(0013213当被除数为147,除数分别为123,4,5,6,7时,商分别为147,73,49,36,29,24,21,余数分别为 0,1,0,3,2,3,0.结果正确.局惟 啊血阳耶帅口阡剳片初tmiri扫广円沁勿齢£刑V刘jipr B咐av电划计诞駅时临那師吩9 Mr列唧1ATB_bndiieei Medic4«t=liT (r+ J JIModi 'To如4 NMTklf 血由如 1 则Fhtts-由上图可见代码覆盖率已达100%,非常好.2综合结果,布局布线结果,关键路径,资源利用率等。用进行综合得到结果如下图赋初值的

温馨提示

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

评论

0/150

提交评论