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

下载本文档

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

文档简介

1、西北工业大学学 院 学 号 姓 名 专 业 实验时间 实验地点 指导教师软件与微电子学院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三、实验

2、内容与步骤1. 实验总体设计思路由于只有加法器,除法在计算机中是通过部分余数左移加除数补码或0实现,我们由此可以得到启示,也按照如此的思路进行.整体思路是先将八位(本来余数 是四位的但是我们这里的余数不仅仅充当余数,还当中间变量把被除数从最高位一位一位的移到余数里)余数清零,然后把被除数的最高位拼接到余数后面 ,此时 余数与除数比较,若余数大于除数,则把他们俩的差作为新的余数,且把对应的商 值为记1;若余数小于除数,则把对应位的商值记0;进行下一步之前把被除数的第 二高位继续拼接到余数后面,如此进行,循环八次即可.最后结果是得到商和余数 的形式.其算法流图如下所示:Start为了能清楚的展示以

3、上算法我们看下面例子:为了简单期间我们假设被除数(did)是4位,除数(dis)是2位,商(quo)是4位,余数(rem)是4位,设 did=0110,dis=10,我们来看看是怎么执行的首先余数和商都清零,即 rem=0,quo=0;把被除数的最高位0拼接到rem的最低位,此时rem=0000B,由于 rem小于除数dis=10,则商quo3=0;下面进行第二次计算,把did2拼接到rem 最低位,此时rem=0001,dis=10>rem,故quo2=0;继续计算,把did1拼接到rem 最低位,此时 rem=0011,dis=10<rem,故 quo1=1,rem=rem-q

4、uo=0011-10=0001; 进行最后一轮运算 , 把 did0 拼接至U 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.dis,quo,/ Quotie ntrem,/ Rema indererror/);parameter M=7;parameter N=3;/in put M:0 did;in put N:0

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

6、dis;quo=0;error=0;endelsebeg inerror=O;for (i=8;i>0;i=i-1)/循环8次beg inrem=remM-1:0,didi-1;/把didi-1 连接到rem后quo=quo<<1;/商左移一位if(rem>=dis)/若拼接后rem>=除数disbeg inquo=quo+1;/商值自加1rem=rem-dis;/新余数变为旧余数减除数endendendend/en dmoduleTesebench 如下:'timescale 1ns/1nsmodule divider_be nch;reg 7:0 di

7、d;reg 3:0 dis;wire 7:0 quo;wire 7:0 rem;in teger i;/in teger j;/divider_8_4 d1(did,dis,quo,rem,error); / in itial结束整数,用于控制被除数变化整数,用于控制除数变化实例化beg infor(i=0;i<=255;i=i+1) beg indid=i;for(j=0;j<=15;j=j+1)#1 dis=j;/ 被除数从0到255/除数从0到15变化endend in itialbeg in$mon itor($time,"divide nt=%divisor=%

8、dquotie nt=%dremai nder=%d",did,dis,quo,rem);endin itialbeg in#1000 $fini sh;/ 1000ns时停止仿真enden dmodule四、实验结果与数据处理1. Modelsim仿真结果,波形图,代码覆盖率图等为了严谨,把所有的数值都测了一遍(did从0到255,dis从0到15),从 modeldim仿真结果看到程序的正确性,鉴于数据较多这里只选择几组数据给 予展示:wave - default+ * 7divider bench/did445+ * 7dividet bench/di5109 no ::11

9、112114510* /dNider benelVeircjr0L+、7dividet tcnch/quo00+ J 7dividet tcnch/rem10(9 no ;:11 112:131142 2-上图中从上到下一次代表被除数,除数,错误,商和余数,当被除数是4.除数分 别是 9,10,11,12,13,14,15 时商为 0,余数分别 9,10,11,12,13,14,15.wave - default/dividef benclVdkj147147+ + /dividerbench/dis0(o :1立::&洱:1_I!0 /divider benchi/eriof1出,7

10、divi der bench/quo0(0147173::4S I3E::29124+ J /divider b«rKlVremQ(0S迫i213:P Ji当被除数为147,除数分别为123,4,5,6,7时,商分别为147,73,49,36,29,24,21,余数分别为 0,1,0,3,2,3,0.结果正确.*hi址惟unitD现皿切丽咖:SUircDunt Sluithi Slmtmess Strut% Stmt graph Ennth cour'1 Branch hi teh nese; Branch舸讪 gdnJ临上崔屮坯l俪卅掖KlxUe、H】科t6I1血fiideiJJJai: Mski顾=b 咱111i値E51|NNITIALC1 和刖_価册戚 Rnsa由上图可见代码覆盖率已达100%,非常好.2.综合结果,布局布线结果,关键路径,资源利用率等。由于过程简单,布局和布线基本用到很少,关键路径主要在testbench中

温馨提示

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

评论

0/150

提交评论