正在加载图片...
146wimD硬停横述语言 下载 xADD、如果 Mpr Count1将 Mcnd加到Acc 复位ACC 初始化 Count Reset==1 递增 Count左移Mcnd 图12-10乘法器的状态图 module Multiply (Mpr, Mend, Clock, Reset, Done, Acc //Mp1x是乘数,Mcnd是被乘数 input [15:0] MpIr, Mend input Clock, Reset output Don output [31:0] Acc reg [31: 0] Ace parameter INIT =0, ADD 1, SHIFT 2 reg [0: 1] Mpy state. reg [31: 0] Mend Temp initial Mpy state= INIT /始状态为工N工T always e (negedge Clock) begin: PROCESS integer count case (Mpy state INIT if(Reset) Mpy state= INIT /*由于 Mpy state将保持原值,上面的语句并不需要*/ begin Mpy state ADD Mend Temp [15:0]=Mend Mend Temp [31:161 beg⊥n if(Ir[c。unt]) ACC Acc Mcnd Temp Mpy state= sHIFT. SHIFT图12-10 乘法器的状态图 m o d u l e Multiply (Mplr, Mcnd, Clock, Reset, Done, Acc ) ; / / M p l r是乘数,M c n d是被乘数。 i n p u t [15:0] Mplr, Mcnd; i n p u t Clock, Reset; o u t p u t D o n e; r e g D o n e; o u t p u t [31:0] A c c; reg [31:0] A c c; p a r a m e t e r I N I T = 0, A D D = 1, SHIFT = 2; r e g [0:1] M p y _ S t a t e; r e g [31:0] M c n d _ T e m p; i n i t i a l Mpy_State = I N I T; //初始状态为I N I T。 a l w a y s @ (n e g e d g e C l o c k) b e g i n: P R O C E S S i n t e g e r C o u n t ; c a s e (M p y _ S t a t e) I N I T: i f (R e s e t) M p y _ S t a t e = I N I T; / *由于M p y _ S t a t e将保持原值,上面的语句并不需要* /。 e l s e b e g i n A c c = 0; C o u n t = 0; M p y _ S t a t e = A D D; Done = 0; M c n d _ T e m p [15:0] = M c n d; M c n d _ T e m p [31:16] = 16'd 0 ; e n d A D D: b e g i n i f (Mplr [C o u n t] ) A c c = Acc + Mcnd_Temp; M p y _ S t a t e = S H I F T ; e n d S H I F T: 146 Verilog HDL 硬件描述语言 下载 复位ACC. 如果Mplr[Count]=1 将 Mcnd 加到Acc 递增Count左移Mcnd 初始化Count
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有