Professional Documents
Culture Documents
21/junho/2013
multi1:
entity work.multiplica
generic map(N=>32)
port map(clock=>ck, M1=>RA, M2=>RB,
start=>uins.start_mult_div,
produto=>produto, endop=> end_mult);
LO e HI
-
Sidle
Reset=0
Sfetch
CY1
Sreg
CY2
start_mult_div se
IR=MULTU/DIV
IR=(MULTU e End_mul=0) ou
(DIVU e End_div=0)
(IR=MULTU e End_mul=1)
ou (IR=DIVU e End_div=1)
Salu
wAlu
wpc, whilo
Caso geral
IR=LBU/
LW
Swbk
wreg
wpc
Sld
ce
wmdr
IR=SB/
SW
Sst
rw0, ce, wpc
bw0 se IR=SB
IR =J/JAL/JALR/JR /BEQ/
BGEZ/BLEZ/BNE
Ssalta
wpc
wreg se
IR=JAL/JALR
Alterar o estado SALU para considerar a espera pelo final ou da multiplicao ou da diviso.
Importante: deve-se colocar o sinal end_mult na lista de sensitividade (porqu?):
process(PS, i, end_mult)
E) Arquivo top: acertar os comandos port map relativos ao bloco de dados e controle, levando-se
em considerao os novos sinais da interface de comunicao.
F) Exemplo de simulao, utilizando o arquivo de teste fornecido:
Descrio dos eventos:
1 Decodificao de uma instruo de multiplicao e a respectiva ativao do sinal
uins.start_mult_div;
2 Final da multiplicao e escrita dos resultados da multiplicao nos registradores HI e LO;
3 Execuo das instrues MFLO e MFHI para escrita nos registradores 16 ($s0) e 17 ($s1).