EDA课设八位硬件乘法器8位硬件乘法器一、设计目的①学习移位相加时序式乘法器的设计方法②学习层次化设计方法③学习原理图调用VHDL模块方法④熟悉EDA仿真分析方法二、设计原理(1)设计原理由加法器构成的时序逻辑方式的乘法器的原理是,通过逐项移位相加原理来实现,从被乘数的最低位开始,若为,若为1,则乘数左移与上一次和相加;若为0,左移后以全零相加,直至被乘数的最高位在下图中ARICTL是乘法运算控制电路,它的START信号的上升沿与高电平有两个功能,即16位寄存器清0和被乘数A向移位寄存器SREG8B加载;它的低电平则作为乘法使能信号CLK为乘法时钟信号,当被乘数加载于8位右移寄存器SEG8B后,在时钟同步下由低位至高位逐位移出,当其为1时,与门ANDARITH打开,8位乘数B在同一节拍进入8位加法器,与上一节拍锁存在16位锁存器REG26B中的高8位进行相加,其和在下一时钟节拍的上升沿被锁存进此锁存器;而当被乘数的移出位为时,与门全0输出如此往复,直至8个时钟脉冲后,乘法运算过程中止,此时REG16B的输出值即为最后乘积原理图如下:CLEARICTL(2)乘法器中各模块(电路的总体框图)说明:此电路由五部分组成它们,分别是控制器,锁存器,寄存器,乘法器,加法器。
1控制器是一个乘法器的控制模块,用来接受实验系统上的连续脉冲2锁存器起锁存的作用,它可以锁存8位乘数3移位寄存器起移位的作用,便于被乘数可以逐位移出4乘法器功能类似一个特殊的与非门5加法器用于8位乘数和高8位相加三、选择器件与功能模块选择器件:SREG8B(移位寄存器)REG16B(16位琐存器)ARICTL(运算控制器)ANDARITHd位乘法器)ADDER8B(8位加法器)数码管(显示结果)功能模块:1. 8位右移寄存器SREG8BLIBRARYIEEE;USEIEEE.STD_L0GIC_U64.ALL;ENTITYSREG8ISPORT(CLK:INSTD_LOGIC;LOAD:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);EN:INSTD_LOGIC;QB:OUTSTD_LOGIC);ENDSREG8;ARCHITECTUREbehaveOFSREG8ISSIGNALREG8:STD_L0GIC_VECT0R(7DOWNTO0);BEGINPROCESS(CLK,LOAD,EN)BEGINIFEN=*TTHENIFLOAD='TTHENREG8<=DIN;ELSIFCLK'EVENTANDCLK=*VTHENREG8(6DOWNTO0)<=REG8(7DOWNTO1);ENDIF;ENDIF;ENDPROCESS;QB<=REG8(0);ENDbehave;CLRLOAD-O1时序仿真图:NameIlOOOre2C0frg300One4000ns500Chs6000ns7000nc&]Qfrs900frsi*-LO6D?0~‘I-j—CLK0||||||||||||||||||s-orjhooooqi*mXsX_04:(":(前-X8~):s-2C60I|||||2. 8为加法器ADDER8BLIBRARYIEEE;USEIEEE.STD_L0GIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYadder8ISPORT(B,A:INSTD_XOGIC_VECTOR(7DOWNTO0);S:OUTSTD_L0GIC_VECT0R(8DOWNTO0));ENDadder8;ARCHITECTUREbehaveOFadder8ISBEGINS<='O'&A+B;ENDbehave;ADDER8BCIN>—COUT—X COUT-・X-LIBRARYIEEE;USEIEEE.STD_L0GIC_U64.ALL;ENTITYandarithISPORT(ABIN:INSTD_LOGIC;DIN:INSTD_LOGIC_VECTOR(7DOWNTO0);DOUT:OUTSTD-L0GIC_VECT0R(7DOWNTO0));ENDandarith;ARCHITECTUREbehaveOFandarithISBEGINPROCESS(ABIN,DIN)BEGINFORIIN0TO7LOOPDOUT(I)<=DIN(I)ANDABIN;ENDLOOP;ENDPROCESS;ENDbehave;andarith:RBIN口。
UT17・・D■NET..0]4・16为锁存寄存器REG16LIBRARYIEEE;USEIEEE.STDJLOGIC」164.ALL;ENTITYREG16ISPORT(CLK,CLR,EN:INSTDJLOGIC;D:INSTD_LOGIC_VECTOR(8DOWNTO0);Q:OUTSTD_L0GIC_VECT0R(15DOWNTO0));ENDREG16;ARCHITECTUREbehaveOFREG16ISSIGNALR16S:STD_L0GIC_VECT0R(15DOWNTO0);BEGINPROCESS(CLK,CLR,EN)BEGINIFEN=,VTHENIFCLR=T'THENR16S<=(OTHERS=>'O');ELSIFCLK'EVENTANDCLK=*TTHENR16S(6DOWNTO0)<=R16S(7DOWNTO1);R16S(15DOWNTO7)<=D;ENDIF;ENDIF;ENDPROCESS;Q<=R16S;ENDbehave;REQl^BCLK ACUR X-■CLKCUR■Q C X5 .Q[X5. _ 03时序仿真图:Ham?31000ns200Ona1JOOCna14000ns£00(raGOOftifi1.?OOCha1Ora1«OCra1—CLR0L1_0rrniirrnrnrirnrn_.DHWOXooi_JL003XW).85:(_X007):M8_x_3QH0W30000owo"BO;(OOOOX0300X03WX5.运算控制器ARICTLLIBRARYIEEE;USEIEEE.STD_L0GIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYarictlISPORT(CLK:INSTD_LOGIC;START:INSTD_LOGIC;CLKOUT:OUTSTD_LOGIC;RSTALL:OUTSTD_LOGIC;ARIEND:OUTSTD_LOGIC);ENDENTITYarictl;ARCHITECTUREART5OFarictlISSIGNALCNT4B:STD_LOGIC_VECTOR(3DOWNTO0);BEGINRSTALL<=START;PROCESS(CLK,START)BEGINIFSTART=1TTHENCNT4B<=*0000*;ELSIFCLK'EVENTANDCLK='1'THENIFCNT4B<8THENCNT4B<=CNT4B+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(CLK,CNT4B,START)BEGINIFSTART='O'THENIFCNT4B<8THENCLKOUT<=CLK;ARIEND<='O';ELSECLKOUT<=,O';ARIEND<='1';ENDIF;ELSECLKOUT<=CLK;ARIEND<='0';ENDIF;ENDPROCESS;ENDARCHITECTUREART5;fiRICTLCLKSTARTCLKOUTRSTALLAR I ENDCLKCLKOUTS-TARTRSTftLLARIENO时序仿真图:_-地5 18 即£ 2005s *8s 400 One 58 as 6005s 700 融s &X 0ns 900 Qn*1^-START 1 I IBAREND0四、实验数据记录及结果实验电路图:urr/.UF”j引脚分布图:v Pin Planner - P:/c»y/, A1fttt卜 ▼* NcdtMme 口 gonT £*• ^7 ,0] Irp.t <3fC.p朽♦ # 47,@ IpjtGu。
,,CCUT[15..O] Outjxtqy-** <«rosvcfcip»叫)卜・,-Rl> K>||Hsneil. : ▼砌Ea X、/Atef; Kta. &M 力4E thtedrrInpit皿t Inpjt Inpjtc1#a inpjt lnp*jt Inpit gt IWt Kot Inpjt Input IW
上图为2*2结果,结果为0100五、心得体会通过这次课程设计,使我们可以更熟练地使用QuartusII绘制原理图,通过利用自己所学的知识,设计出具有一定功能的器件,例如本次的8位乘法器,加深了我们对于知识的理解,为以后的学习和实践打下了良好的基础。