8位乘法器设计Word格式文档下载.docx

上传人:b****4 文档编号:16539986 上传时间:2022-11-24 格式:DOCX 页数:12 大小:231.96KB
下载 相关 举报
8位乘法器设计Word格式文档下载.docx_第1页
第1页 / 共12页
8位乘法器设计Word格式文档下载.docx_第2页
第2页 / 共12页
8位乘法器设计Word格式文档下载.docx_第3页
第3页 / 共12页
8位乘法器设计Word格式文档下载.docx_第4页
第4页 / 共12页
8位乘法器设计Word格式文档下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

8位乘法器设计Word格式文档下载.docx

《8位乘法器设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《8位乘法器设计Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。

8位乘法器设计Word格式文档下载.docx

例如被乘数为00000101,乘数为01101111,初始条件下,部分积为0,乘数最低位为1,加被乘数,和为00000101,使其右移一位,形成新的部分积为00000010,乘数同时右移一位,原和最低位1被放到乘数的最高位,此时,乘数最低位为1,加00000101,和为00000111,使其右移一位,形成新的部分积为0000011,依次类推,循环8次,总共需要进行8次相加和8次移位操作,最终得出乘积结果。

其设计流程图所如下所示:

3.8位乘法器的顶层设计

8位移位相加乘法器的原理图如下图所示。

在图中,START信号的上升沿及其高电平有两个功能,即16位寄存器清零和被乘数A[7……0]向移位寄存器SREG8B加载;

它的低电平则作为乘法使能信号。

CLK位乘法时钟信号。

当被乘数被加载于8位右移寄存器SREG8B后,随着每一时钟节拍,最低位在前,由低位至高位逐位移出。

当为1时,1位乘法器ANDARTIH打开,8位乘数B[7…0]在同一节拍进入8位加法器,与上一次锁存在16位锁存器中的高8位进行相加,其和在下一时钟节拍的上升沿被锁进此锁存器。

而当被乘数的移出位为0时,与门全零输出。

如此反复,直至8个时钟脉冲后。

最后乘积完整出现在REG16B端口。

移位相加乘法器的原理图如下:

根据上图移位相加乘法器的原理图,利用元例化的方法可得乘法器乘法器的顶层设计的VHDL的代码如下:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYARICTLIS

PORT(CLK:

INSTD_LOGIC;

START:

ARIEND:

OUTSTD_LOGIC;

CLKOUT:

OUTSTD_LOGIC;

RSTALL:

OUTSTD_LOGIC);

ENDENTITYARICTL;

ARCHITECTUREARTOFARICTLIS

SIGNALCNT4B:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

RSTALL<

=START;

PROCESS(CLK,START)IS

BEGIN

IFSTART='

1'

THENCNT4B<

="

0000"

;

ELSIFCLK'

EVENTANDCLK='

THEN

IFCNT4B<

8THEN

CNT4B<

=CNT4B+1;

ENDIF;

ENDPROCESS;

PROCESS(CLK,CNT4B,START)IS

BEGIN

0'

THEN

8THEN

CLKOUT<

=CLK;

ARIEND<

='

ELSECLKOUT<

ENDIF;

ENDPROCESS;

ENDARCHITECTUREART;

ENTITYADDER4BIS

PORT(C4:

INSTD_LOGIC;

A4:

INSTD_LOGIC_VECTOR(3DOWNTO0);

B4:

S4:

OUTSTD_LOGIC_VECTOR(3DOWNTO0);

CO4:

ENDENTITYADDER4B;

ARCHITECTUREARTOFADDER4BIS

SIGNALS5:

STD_LOGIC_VECTOR(4DOWNTO0);

SIGNALA5,B5:

A5<

&

A4;

B5<

B4;

S5<

=A5+B5+C4;

S4<

=S5(3DOWNTO0);

CO4<

=S5(4);

ENTITYSREG8BIS

PORT(CLK:

LOAD:

DIN:

INSTD_LOGIC_VECTOR(7DOWNTO0);

QB:

ENDENTITYSREG8B;

ARCHITECTUREARTOFSREG8BIS

SIGNALREG8B:

STD_LOGIC_VECTOR(7DOWNTO0);

PROCESS(CLK,LOAD)IS

IFCLK'

IFLOAD='

THENREG8B<

=DIN;

ELSEREG8B(6downto0)<

=REG8B(7DOWNTO1);

QB<

=REG8B(0);

ENTITYREG16BIS

PORT(CLK:

CLR:

D:

INSTD_LOGIC_VECTOR(8DOWNTO0);

Q:

OUTSTD_LOGIC_VECTOR(15DOWNTO0));

ENDENTITYREG16B;

ARCHITECTUREARTOFREG16BIS

SIGNALR16S:

STD_LOGIC_VECTOR(15DOWNTO0);

PROCESS(CLK,CLR)IS

IFCLR='

THENR16S<

0000000000000000"

EVENTANDCLK='

R16S(6DOWNTO0)<

=R16S(7DOWNTO1);

R16S(15DOWNTO7)<

=D;

Q<

=R16S;

ENDARCHITECTUREART;

ENTITYADDER8BIS

PORT(CIN:

A:

B:

S:

OUTSTD_LOGIC_VECTOR(7DOWNTO0);

COUT:

ENDENTITYADDER8B;

ARCHITECTUREARTOFADDER8BIS

COMPONENTADDER4BIS

ENDCOMPONENTADDER4B;

SIGNALSC:

STD_LOGIC;

U1:

ADDER4B

PORTMAP(C4=>

CIN,A4=>

A(3DOWNTO0),B4=>

B(3DOWNTO0),

S4=>

S(3DOWNTO0),CO4=>

SC);

U2:

SC,A4=>

A(7DOWNTO4),B4=>

B(7DOWNTO4),

S(7DOWNTO4),CO4=>

COUT);

ENTITYANDARITHIS

PORT(ABIN:

DOUT:

OUTSTD_LOGIC_vector(7DOWNTO0));

ENDENTITYANDARITH;

ARCHITECTUREARTOFANDARITHIS

PROCESS(ABIN,DIN)IS

FORIIN0TO7LOOP

DOUT(I)<

=DIN(I)ANDABIN;

ENDLOOP;

ENTITYMULTI8X8IS

INSTD_LOGIC_VECTOR(7DOWNTO0);

DOUT:

OUTSTD_LOGIC_VECTOR(15DOWNTO0));

ENDENTITYMULTI8X8;

ARCHITECTUREARTOFMULTI8X8IS

COMPONENTARICTLIS

START:

ENDCOMPONENTARICTL;

COMPONENTANDARITHIS

PORT(ABIN:

DIN:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDCOMPONENTANDARITH;

COMPONENTADDER8BIS

A:

B:

S:

COUT:

ENDCOMPONENTADDER8B;

COMPONENTSREG8BIS

ENDCOMPONENTSREG8B;

COMPONENTREG16BIS

ENDCOMPONENTREG16B;

SIGNALS1:

SIGNALS2:

SIGNALS3:

SIGNALS4:

SIGNALS6:

STD_LOGIC_VECTOR(8DOWNTO0);

SIGNALS7:

DOUT<

=S7;

S1<

U1:

ARICTLPORTMAP(CLK=>

CLK,START=>

START,

CLKOUT=>

S2,RSTALL=>

S3,ARIEND=>

ARIEND);

U2:

SREG8BPORTMAP(CLK=>

S2,LOAD=>

S3,

DIN=>

A,QB=>

S4);

U3:

ANDARITHPORTMAP(ABIN=>

S4,DIN=>

B,DOUT=>

S5);

U4:

ADDER8BPORTMAP(CIN=>

S1,A=>

S7(15DOWNTO8),

B=>

S5,S=>

S6(7DOWNTO0),COUT=>

S6(8));

U5:

REG16BPORTMAP(CLK=>

S2,CLR=>

S3,D=>

S6(8DOWNTO0),Q=>

S7(15DOWNTO0));

4.乘法器仿真

1)系统仿真情况

输入值A=0AH、B=0CH,结果DOUT=0078H;

输入值A=0CH、B=0AH,结果DOUT=0078H;

输入值A=02H、B=03H,结果DOUT=0006H;

仿真图如下:

2)仿真分析

当START输入信号为“1”,REG16B清零和被乘数A[7..0]向移位寄存器加载。

此后START信号为“0”,乘法进行。

乘法时钟从ARICTL的CLK输入。

当被乘数加载于8位右移寄存器SREG8B后,随着每一时钟节拍,最低位在前,由低位至高位逐位移出。

当为1时,与门ANDARITH打开,8位乘数B在同一节拍进入八位加法器,与上一次锁存在16位锁存器REG16B中高8位进行相加,其和在下一时钟节拍的上升沿被锁进此寄存器。

而当被乘数移出位为0时,与门全零输出。

如此往复,直至八个时钟脉冲后,有ARICTL的控制,乘法运算终止ARIEND输出高电平,以此点亮发光管,以示乘法结束。

此时,REG16B的输出值即为最后乘积。

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

当前位置:首页 > 人文社科 > 广告传媒

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1