原码一位乘法器的设计.docx

上传人:b****8 文档编号:9216041 上传时间:2023-05-17 格式:DOCX 页数:15 大小:113.55KB
下载 相关 举报
原码一位乘法器的设计.docx_第1页
第1页 / 共15页
原码一位乘法器的设计.docx_第2页
第2页 / 共15页
原码一位乘法器的设计.docx_第3页
第3页 / 共15页
原码一位乘法器的设计.docx_第4页
第4页 / 共15页
原码一位乘法器的设计.docx_第5页
第5页 / 共15页
原码一位乘法器的设计.docx_第6页
第6页 / 共15页
原码一位乘法器的设计.docx_第7页
第7页 / 共15页
原码一位乘法器的设计.docx_第8页
第8页 / 共15页
原码一位乘法器的设计.docx_第9页
第9页 / 共15页
原码一位乘法器的设计.docx_第10页
第10页 / 共15页
原码一位乘法器的设计.docx_第11页
第11页 / 共15页
原码一位乘法器的设计.docx_第12页
第12页 / 共15页
原码一位乘法器的设计.docx_第13页
第13页 / 共15页
原码一位乘法器的设计.docx_第14页
第14页 / 共15页
原码一位乘法器的设计.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

原码一位乘法器的设计.docx

《原码一位乘法器的设计.docx》由会员分享,可在线阅读,更多相关《原码一位乘法器的设计.docx(15页珍藏版)》请在冰点文库上搜索。

原码一位乘法器的设计.docx

原码一位乘法器的设计

第1章总体设计方案

1.1设计原理

原码一位乘乘法器中用三个存放器X,Y和BFJ分别存放被乘数,乘数和局部积。

乘法运算开场时,BFJ存放器被清零,作为初始局部积。

被乘数放在X存放器中,乘数放在Y存放器中。

实现局部积和被乘数相加是通过X送加法器和Y送加法器,在加法器中完成的。

加法器的输出经过移位电路向右移一位送入BFJ存放器中。

Y存放器是用移位存放器实现的,其最低位用作Y送加法器的控制命令。

因为原码一位乘是通过乘数的最低位是1还是0来确定加数的,当乘数的最后一位为1的时候,局部积加上被乘数,当乘数的最后一位为0的时候,局部积加上0。

加法器最低一位的值,在右移的过程中将被移入Y存放器的最高数值位,这样就使积的低位局部被保存在Y存放器中,最开场的乘数在逐位右移的过程中不断丧失,直到移位完毕。

乘法运算完成以后BFJ存放器中保存的数值是乘积的高位局部,Y存放器即乘数存放器中保存乘积的低位局部。

1.2设计思路

实现原码一位乘乘法的逻辑框图如图1.2所示,BFJ存放局部积,X存放被乘数,Y存放乘数。

一个实现一位原码乘法运算的运算器可以由一个被乘数存放器,一个乘数存放器,一个局部积存放器,一个加法器,一个计数器,二选一选择电路以及移位电路七个模块构成。

顶层的乘法器模块采用原理图设计输入方式。

被乘数存放器模块中X为被乘数输入端,LOAD为数据打入电平,CLK为输入脉冲,XOUT为数据输出端口。

乘数存放器模块中Y为乘数输入端,LOAD为数据打入电平,CLK位输入脉冲,INPUT为局部积最低位输入端,YOUT为数据输出端口,LOWBIT为数乘数最低位输出端。

局部积存放器中IN为局部积右移一位以后的数据输入端,CLR为清零电平,CLK为输入脉冲,HIGH为加法器的进位输入端,OUT为局部积右移一位后数据输出端。

图1.2实现原码一位乘法的逻辑电路框图

计数器模块中CLR为清零端,CLKI为输入脉冲,CLKO为脉冲输出。

二选一选择电路中IN为被乘数输入端口,CTR为控制信号输入。

OUT为数据输出。

二选一选择电路模块用原理图输入方式,被乘数存放器,乘数存放器,局部积极存放器和计数器模块采用verilogHDL语言设计输入方式。

首先,单独调试仿真每个模块,确定在没有错误以后,再对整个运算器模块进展仿真。

在没有错误的前提下,生成furui.bit文件下载到XCV200可编程逻辑芯片中经硬件测试验证运算结果。

1.3设计环境

·硬件环境:

伟福COP2000型计算机组成原理实验仪、XCV200实验板、微机。

·EDA环境:

Foundation3.1设计软件。

 

第二章详细设计方案

2.1顶层方案图的设计与实现

顶层方案图实现原码一位乘法运算的逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。

完成原理图的功能设计后,把输入/输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。

2.1.1创立顶层图形设计文件

顶层图形文件主要由两个数据输入端,一个脉冲输入端,一个启停控制端,一个数据输出端组成。

定点原码一位乘乘法器的顶层原理图见图2.1。

2.1.2器件的选择与引脚锁定

〔1〕器件的选择

硬件设计环境基于伟福COP2000型计算机组成原理实验仪和XCV200实验板,采用目标芯片为XlinxXCV200可编程逻辑芯片。

〔2〕引脚锁定

把顶层图形文件中的输入/输出信号安排到XlinxXCV200芯片指定的引脚上去,实现芯片的引脚锁定,原理图中各信号及XlinxXCV200芯片引脚对应关系如下表:

原理图信号

芯片管脚

原理图信号

芯片管脚

X7

P94

OUTHIGH7

P236

X6

P95

OUTHIGH6

P237

X5

P96

OUTHIGH5

P238

X4

P97

OUTHIGH4

P3

X3

P100

OUTHIGH3

P4

X2

P101

OUTHIGH2

P5

X1

P102

OUTHIGH1

P6

X0

P103

OUTHIGH0

P7

Y7

P79

OUTLOW7

P215

Y6

P80

OUTLOW6

P216

Y5

P81

OUTLOW5

P217

Y4

P82

OUTLOW4

P218

Y3

P84

OUTLOW3

P220

Y2

P85

OUTLOW2

P221

Y1

P86

OUTLOW1

P222

Y0

P87

OUTLOW0

P223

CLR

P73

CLK

P213

2.2第二层方案图的设计与实现

第二层图形文件主要由两个数据输入端,一个脉冲输入端,一个启停控制端,一个数据输出端以及相对应的被乘数存放器模块,乘数存放器模块,局部积存放器模块,加法器模块,计数器模块,数据选择电路模块以及移位电路模块组成。

第二层原理图见图2.2。

计数器模块起控制整个运算过程的作用。

实现控制器的功能,其它所有需要脉冲的模块均受计数器即控制器的控制。

当控制器的输入端〔清零端〕为低电平的时候,控制器才启动整个运算过程,只有当控制器的输出出现脉冲的时候,其它需要脉冲的模块才开场工作,当到达需要运算次数后,控制器封锁脉冲。

各存放器保持值不变。

被乘数存放器模块的功能是实现被乘数存放,接收来自外部输入数据,提供选择器模块的输入。

乘数存放器模块的功能是实现乘数的存放,接收来自外部输入数据,还具有向右移位的功能,将从局部积存放器传来的数据保存在最高位,同时将乘数的最低位输出作为数据选择器的控制端。

也作为最后乘积的低位局部存放器。

数据选择器模块的功能是实现数据的选择,当从乘数存放器传来的控制信号为高电平时,输出为被乘数,作为加法器的一个输入,当从乘数存放器传来的控制信号位低电平时,输出为零,作为加法器的输入。

局部积存放器模块的功能是存放从移位电路传过来的数据,作为加法器的输入。

移位电路模块起将局部积移位的作用,同时到达了让所有模块在同一个脉冲下工作脉冲同步的作用,由于用组合逻辑电路形成的移位电路不需要脉冲的打入就能工作,当加法器的输出改变时,移位电路就将移位后的局部积送给了局部积

存放器,而不需要让局部积先将未移位的局部积打如存放器,再移位的过程。

图2.1定点原码一位乘乘法器的顶层原理图

图2.2定点原码一位乘乘法器的第二层原理图

2.3功能模块的设计与实现

被乘数存放器模块,乘数存放器模块,计数器模块,局部积存放器模块用verilogHDL语言设计输入方式实现。

数据选择器模块用原理图设计输入方式实现。

2.3.1被乘数存放器模块的设计与实现

此模块用VerilogHDL语言输入方式设计,运算位数为8位,实现被乘数的接收及存放,提供选择器模块的输入。

用X总线输入,XOUT总线输出。

当输入端LOAD为高电平的时候,被乘数存放器把总线X的数据打入,当LOAD为低电平的时候,被乘数存放器保持数据不变。

该模块的符号如图2.31。

图2.311被乘数存放器的符号

Verilog代码如下:

moduleJICUNQIX(CLK,X,LOAD,XOUT);

inputCLK;

input[7:

0]X;

inputLOAD;

output[7:

0]XOUT;

reg[7:

0]XOUT;

//addyourdeclarationshere

always(posedgeCLK)

begin

if(LOAD)XOUT=X;

end

//addyourcodehere

endmodule

被乘数存放器模块功能仿真见图2.312

图2.312被乘数存放器模块功能仿真

当脉冲的上升沿到来的时,数据被打入存放器,符合要求。

2.3.2乘数存放器模块的设计与实现

此模块用VerilogHDL语言输入方式设计,运算位数为8位,实现乘数的接收及存放,还具有向右移位的功能。

Y总线做为输入,YOUT总线作为输出。

当LOAD为高电平的时候,总线Y上的数据被打入乘数存放器中。

当LOAD为低电平的时候,每到来一个脉冲,乘数存放器向右移动一位,并将从INPUT进入的数据打入最高位,同时将最低位的值赋给输出端LOWBIT。

实现乘数存放和移位。

该模块的符号如图2.321。

图2.321乘数存放器的符号

Verilog代码如下:

moduleJICUNQIY(LOAD,INPUT,Y,CLK,LOWBIT,YOUT);

inputLOAD;

inputINPUT;

input[7:

0]Y;

inputCLK;

outputLOWBIT;

output[7:

0]YOUT;

regLOWBIT;

reg[7:

0]YOUT;

//addyourdeclarationshere

always(posedgeCLK)

begin

if(LOAD)

begin

YOUT=Y;

LOWBIT=YOUT[0];

end

else

begin

YOUT=YOUT>>1;

YOUT[7]=INPUT;

LOWBIT=YOUT[0];

end

end

 

//addyourcodehere

endmodule

乘数存放器模块功能仿真见图2.322

图2.322乘数存放器模块功能仿真

LOAD为高电平的时候,数据被打入。

以后每个脉冲的上升沿到来是INPUT被打入最高位。

2.3.3局部积存放器模块的设计与实现

此模块用VerilogHDL语言输入方式设计,运算位数为8位,功能是存放从移位电路传过来的数据,作为加法器的输入。

总线IN作为输入,总线OUT作为输出。

当CLR为高电平的时候,局部积存放器的输出被清零。

当CLR为低电平的时候,每到来一个脉冲,就将通过移位电路送过来的值赋给输出端OUT。

该模块的符号如图2.331。

图2.331局部积存放器的符号

Verilog代码如下:

moduleJCQBFJ(CLK,CLR,IN,HIGH,OUT);

inputCLK;

inputCLR;

input[7:

0]IN;

inputHIGH;

output[7:

0]OUT;

reg[7:

0]OUT;

//addyourdeclarationshere

always(posedgeCLK)

begin

OUT[7:

0]=IN[7:

0];

OUT[7]=HIGH;

end

//addyourcodehere

endmodule

局部积存放器模块功能仿真见图2.332

图2.332局部积存放器模块功能仿真

输出数据即为输入数据,符合设计要求。

2.3.4计数器模块的设计与实现

此模块用VerilogHDL语言输入方式设计,起控制整个运算过程的作用。

当CLR为高电平的时候,计数器被清零,同时CLKO为高电平。

以后每进来一个脉冲,计数器加1,直到加到7,也就是乘数移位次数到达8次的时候,CLKO输出为低电平。

该模块的符号如图2.341。

图2.341计数器模块的符号

Verilog代码如下:

moduleJiShuQi(CLKI,CLR,CLKO);

inputCLKI;

inputCLR;

outputCLKO;

regCLKO;

reg[3:

0]temp;

//addyourdeclarationshere

always(posedgeCLKIorposedgeCLR)

begin

if(CLR)

begin;

temp=0;

CLKO=1;

end

else

begin

if(temp==7)CLKO=0;

else

temp=temp+1;

end

end

//addyourcodehere

endmodule

计数器模块功能仿真见图2.342

图2.342计数器模块功能仿真

当计数脉冲到达8的时候,脉冲输出恒为低电平脉冲,符合设计要求,能到达控制作用。

2.3.5二选一选择器模块

此模块用原理图输入方式设计,运算位数为8位,功能是实现数据的选择。

总线IN作为输入,总线OUT作为输出。

当输入端CTR为高电平的时候,输出OUT为乘数存放器传进值,当CTR为低电平的时候,输出OUT为0。

电路原理图见图2.351。

二选一选择器模块功能仿真见图2.352和图2.353

图2.352二选一选择器模块功能仿真

当CTR为高电平时,输出为乘数,符合要求。

图2.352二选一选择器模块功能仿真

当CTR为低电平时,输出为0,符合要求。

 

图2.351二选一选择电路的原理图

2.4仿真调试

仿真调试主要验证设计电路逻辑功能、时序的正确性,本设计中主要采用功能仿真方法对设计的电路进展仿真。

〔1〕建立仿真波形文件及仿真信号选择

功能仿真时,首先选定需要仿真的模块,建立仿真波形文件,选择仿真信号,对选定的输入信号设置参数,实验中为了让运算没有错误,需要对每一个非元件库中提供的模块进展功能仿真。

选定的仿真信号和设置的参数图所示。

〔2〕功能仿真结果与分析

定点原码一位乘乘法器的整体功能仿真见图2.41和2.42。

图2.41

输入被乘数3H,乘数4H,输出为0C,结果正确。

图2.42

输入被乘数5H,乘数4H,输出为14〔16进制数〕,结果正确。

 

第3章编程下载与硬件测试

3.1编程下载

利用XilinxFoudation3.1的编程下载功能,将得到的furui.bit文件下载到XCV200实验板的XCV200可编程逻辑芯片中。

3.2硬件测试及结果分析

由于本人能力有限,该步骤未能完成。

 

参考文献

[1]昕燕.EDA技术实验与课程设计[M].:

清华大学,2006

[2]延滨.微型计算机系统原理、接口与EDA设计技术[M].:

邮电大学,2006

[3]王爱英.计算机组成与构造(第4版)[M].:

清华大学,2006

[4]王金明吉斌.数字系统设计与verilogHDL:

电子工业

[5]侯建军.数字逻辑与系统解题指导和Foundation操作指南2001中国铁道

[6]王冠黄熙王鹰.VerilogHDL与数字电路设计机械工业。

[7]延滨.微型计算机系统原理、接口与EDA设计技术[M].:

邮电大学,2006

 

课程设计总结:

主要从以下几方面总结:

1.设计过程中出现的问题及采用的解决方法;

2.设计到达的目的;

3.感受。

这次设计题目的原理难度不大,但对于根底不是很好的我来说,还是有一定难度的。

所以在实现的过程中还是出现了很多问题。

最初做二选一选择器模块时用的是VerilogDHL语言,但是由于刚刚接触该语言,掌握的不是很到位,所以并没有成功的实现预想的功能。

后来在教师的指导下,改用了组合逻辑电路,完成了实验的仿真调试。

但是由于本人的根底知识掌握的并不深刻,能力有限,最终并未完成编程下载和硬件测试,这也是本次设计的最大遗憾。

通过本次实验,我学到了很多重要的东西。

首先是学到了EDA设计的根本方法及其思想;其次,培养了我查阅资料的能力;最后,在实验的整个过程中,我的动手能力得到了一定程度的提高。

指导教师评语:

 

指导教师(签字):

年月日

课程设计成绩

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2