4乘4位阵列乘法器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告课程设计题目:4乘4位阵列乘法器设计
学生姓名:杨博闻
学号:201120070115
专业:计算机科学与技术
班级:1120701
指导教师:汪宇玲
2014年1月4日
一、设计目的
1.掌握乘法器的原理及其设计方法。
2 .熟练应用CPLD 设计及EDA 操作软件。
二、设计设备
1.TDN-CM+或TDN-CM++教学实验系统一套。
2 ·PC 微机一台。
3·ispDesignEXPERT 软件
模型机数据通路结构框图
三、设计原理
本实验用CPLD 来设计一个4 ×4 位乘法器,相对于画电路图输入,用ABEL 语言描述是比较方便的。其算式如下(其中括号中的数字表示在ABEL 源程序描述中的功能块调用编号):
a3 a2 a1 a0 ×b3 b2 b1 b0
----------------------------------------------------------------------------------------------------------
a3b0(10) a2b0(6) a1b0(3) a0b0(1)
a3b1(13) a2b1(9) a1b1(5) a0b1(2)
a3b2(15) a2b2(12) a1b2(8) a0b2(4)
+a3b3(16) a2b3(14) a1b3(11) a0b3(7)
----------------------------------------------------------------------------------------------------------- p7 p6 p5 p4 p3 p2 p1 p0
四、设计步骤
1.安装EDA 软件
打开计算机电源,进入Windows 系统,安装上述ispDesignEXPERT 软件。安装完成后,桌面和开始菜单中则建有ispDesignEXPERT 软件图标。
2.用ispDesignEXPERT 软件根据上述乘法的逻辑原理用ABEL 语言编写功能描述程序。
其在1032 芯片中对应的管脚如图:
3.编辑、编译和下载
使用ispDesignEXPERT 软件编辑源程序并进行编译,然后打开实验系统电源,将生成的JEDEC 文件下载到ispLSI1032 中去。
4 .连接实验电路
按下图连接实验电路。
5 .给定操作数,观察乘法器输出
将SWITCH UNIT 单元中的SW-B、AR 开关置为低电平状态。在INPUT
DEVICE 单元中的8 个开关的高4 位为乘数A ,低四位为被乘数B ,而相乘的结果将在OUTPUT DEVICE单元中的数码管中以十六进制形式显示。给 A 和B置不同的数,观察相乘的结果。
五、设计结果:
六、ABEL源码
MODULE multiply
TITLE '4 bit multiplier'
"Inputs
a3,a2, a1, a0 pin 34,35,36,37;
b3,b2, b1, b0 pin 38,39,40,41;
"Outputs
p7,p6,p5,p4,p3,p2,p1,p0 pin 45,46,47,48,49,50,51,52 istype 'com,invert';
"Set declarations
aset = [a3,a2,a1,a0];
bset = [b3,b2,b1,b0];
product = [p7,p6,p5,p4,p3,p2,p1,p0];
"Sub-module declarations, with default input values
"In this case, all inputs default to 0 if not used.
adder interface (a=0, b=0, sin=0, cin=0 -> sum, carry);
"Sub-module instances
ablk1 functional_block adder;
ablk2 functional_block adder;
ablk3 functional_block adder;
ablk4 functional_block adder;
ablk5 functional_block adder;
ablk6 functional_block adder;
ablk7 functional_block adder;
ablk8 functional_block adder;
ablk9 functional_block adder;
ablk10 functional_block adder;
ablk11 functional_block adder;
ablk12 functional_block adder;
ablk13 functional_block adder;
ablk14 functional_block adder;
ablk15 functional_block adder;
ablk16 functional_block adder;
Equations
p7 = ablk16.carry; " Product output bit 7 p6 = ablk16.sum; " bit 6
p5 = ablk14.sum; " bit 5
p4 = ablk11.sum; " bit 4
p3 = ablk7.sum; " bit 3
p2 = ablk4.sum; " bit 2
p1 = ablk2.sum; " bit 1
p0 = ablk1.sum; " bit 0
ablk16.sin = ablk15.carry;
ablk16.cin = ablk14.carry;
ablk16.a = a3;
ablk16.b = b3;
ablk15.sin = ablk13.carry;
ablk15.cin = ablk12.carry;
ablk15.a = a3;
ablk15.b = b2;
ablk14.sin = ablk15.sum;
ablk14.cin = ablk11.carry;