-
西北工业大学
学
院:
学
号:
姓
名:
专
业:
实验
时间:
实验地点:
指导教师:
FPGA
技术实验》
实验报告二
(
高效除法器
)
软件与微电子学院
微电子学
2011.10.12
毅字楼
335
王少熙
西北工业大学
2010
年
10
月
《
一、实验目的及要求
实验目的
:
1.
进一步了解熟悉
verilog
语句语法掌握条件语句在简
单建模中的应
用
,
学会建模仿真综合<
/p>
.
2.
熟练运用
modelsim
进行调试模拟仿真
.
3.
初步学会运用综合工具进行综合
,
熟悉
synplify.
实验要求
:
二、实验设备(环境)及要求
ModelSim SE
6.2b
及
Synplify Pro
9.6.2
三、实验内容与步骤
1.
实验总体设计思路
由于只有加法器
,
除法在计算机中是通过部分余数
左移加除数补码或
0
实现
,
我们由此可以得到启示
,
也按照如此的思路进行<
/p>
.
整体思路是先将八位
(
本来余数
是四位的但是我们这里的余数不仅仅充当余数
,
还当中间变量把被除数从最高位
一位一位的移到余数里
)
余数清零
,
然后把
被除数的最高位拼接到余数后面
,
此时
余数与除数比较
,
若余数大于除数
,
则把他们俩的差作为新的余数
,
且把对
应的商
值为记
1;
若余数小于除数
p>
,
则把对应位的商值记
0;
进行下一步之前把被除数的第
二高位继续拼接到余数后面
,
如此进行
,
循环八次即可
.
最后结果是得到商和余数
的形式
.
其算法流图如下所示
:
用
verilog
< br>实现一个被除数为
8
位,除数为
4
位的高效除法器
.
余数
rem=0;
Start
商
quo=0;
i=7
rem={rem[6:0],
否
是
did[i]}
rem>dis
否
quo[i]=1;i=i-1;
rem=rem-dis;
quo[i]=0;
rem=rem;i=i-1;
i<0
是
得到
quo,rem
为了能清楚的展
示以上算法我们看下面例子
:
为了简单期间我们假设被除数
p>
(did)
是
4
位
,
除数
(dis)
是
2
位
,
商
(quo)
是
4
位
,
余数
(rem)
是
4
位
,
< br>设
did=0110,dis=10,
我们来看看是怎么
执行的
.
首先余数和商都清零
,
即
rem=0,quo=0;
把被除数的最高
位
0
拼接到
rem
的最低位
,
此时
rem=0000
B,
由于
rem
小于除数
dis=10,
则商
quo[3]=0;
下面进行第二次计算
,
把
did[2]
拼接到
rem
最低位
p>
,
此时
rem=0001,dis=10>
rem,
故
quo[2]=0;
继续计
算
,
把
did[1]
< br>拼接到
rem
最低位
,
此时
<
br>rem
rem=0011,dis=10
故
quo[1]=1,rem=rem-
quo=0011-10=0001;
进行最后一轮运算
, <
/p>
把
did[0]
拼接到
最低位
,
此时
rem=0010,dis=10=rem,
因此
quo[0]=1,rem=rem-dis=0010-10=0000,
至此我们已
计算完毕商
quo=0011,
余数
r
em=0000;
计算简单快速
.
2.
测试平台设计
模块设计
`timescale
1ns/1ns
module divider_8_4(did,
dis,
//
Divident
被除数
//
Divisor
除数
quo, // Quotient
商
rem, // Remainder
余数
error //
错误
,
如果除数为
0.
则
erro
r
置
1
);
parameter M=7;
//
被
除
数
,
余
数
,
p>
商
的
位
数
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;
//
< br>整数
,
用于计数
always @(did or dis)
//
被除数
,
除数
-
-
-
-
-
-
-
-
-
上一篇:符号
下一篇:现代英语教学的基本特征及其发展趋势