原码一位乘法器的设计说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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