原码一位乘法器的设计说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第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为数据输出。

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

首先,单独调试仿真每个模块,确定在没有错误以后,再对整个运算器模块进行仿真。在没有错误的前提下,生成furui.bit文件下载到XCV200可编程逻辑芯片中经硬件测试验证运算结果。

1.3 设计环境

·硬件环境:伟福COP2000型计算机组成原理实验仪、XCV200实验板、微机。

·EDA环境:Foundation 3.1设计软件。

第二章详细设计方案

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

顶层方案图实现原码一位乘法运算的逻辑功能,采用原理图设计输入方式完成,电路实现基于XCV200可编程逻辑芯片。完成原理图的功能设计后,把输入/输出信号安排到XCV200指定的引脚上去,实现芯片的引脚锁定。

2.1.1创建顶层图形设计文件

顶层图形文件主要由两个数据输入端,一个脉冲输入端,一个启停控制端,一个数据输出端组成。定点原码一位乘乘法器的顶层原理图见图2.1。

2.1.2器件的选择与引脚锁定

(1)器件的选择

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

(2)引脚锁定

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

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

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

计数器模块起控制整个运算过程的作用。实现控制器的功能,其它所有需要脉冲的模块均受计数器即控制器的控制。当控制器的输入端(清零端)为低电平的时候,控制器才启动整个运算过程,只有当控制器的输出出现脉冲的时候,其它需要脉冲的模块才开始工作,当达到需要运算次数后,控制器封锁脉冲。各寄存器保持值不变。

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

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

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

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

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

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

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

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

2.3功能模块的设计与实现

被乘数寄存器模块,乘数寄存器模块,计数器模块,部分积寄存器模块用verilog HDL语言设计输入方式实现。数据选择器模块用原理图设计输入方式实现。

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

此模块用Verilog HDL语言输入方式设计,运算位数为8位,实现被乘数的接收及寄存,提供选择器模块的输入。用X总线输入,XOUT总线输出。当输入端LOAD为高电平的时候,被乘数寄存器把总线X的数据打入,当LOAD为低电平的时候,被乘数寄存器保持数据不变。该模块的符号如图2.31。

图2.311 被乘数寄存器的符号

Verilog代码如下:

module JICUNQIX (CLK, X, LOAD, XOUT) ;

input CLK ;

input [7:0] X ;

input LOAD ;

output [7:0] XOUT ;

reg [7:0]XOUT;

// add your declarations here

always (posedge CLK)

begin

if(LOAD)XOUT=X;

end

// add your code here

endmodule

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

相关文档
最新文档