100 likes | 265 Views
Pietro Biasuz Alan Diego dos Santos. VHDL arquitetura ramses. Arquitetura e Organização. Componentes Básicos. Registradores REM (Registrador de Endereço) RDM (Registrador de Dados) PC (registrador e incrementador ) Ra Rb Rx RAux RegFlags ( Negative , Carry , Zero)
E N D
Pietro Biasuz Alan Diego dos Santos VHDL arquitetura ramses
Componentes Básicos • Registradores • REM (Registrador de Endereço) • RDM (Registrador de Dados) • PC (registrador e incrementador) • Ra • Rb • Rx • RAux • RegFlags (Negative, Carry, Zero) • Multiplexadores 4x1
Componentes Básicos • ULA (combinacional ) • ADD • OR • AND • NOT • SUB • NEG • SHR • Memória • Unidade de Controle (seqüencial) • LDR • STR • JMP • JN, JC, JZ
4 Modos de enderaçamento • Definidos diretamente pelos últimos bits da instrução • Direto - “00” • Indireto – “01” • Imediato – “10” • Indexado – “11”
Problema Encontrado • A memória gerada pelo Core Generator possui os seguintes sinais para operar: • Clock • Addr – endereço de leitura ou escrita • WE – ‘0’ para Read ou ‘1’ para Write • Din – valor de entrada • Dout – valor de saída
Problema Encontrado • Apesar de gerar com sucesso a memória e testá-la separadamente dos demais componentes, inicializá-la utilizando o arquivo .mif, as leituras obtidas sempre eram UNDEFINED no Test Bench.
Solução • Ao setarmos a sensibilidade da memória para a borda de subida (RisingEdgeTriggered) e ao utilizarmos a configuração de ReadAfterWrite não era possível realizar a leitura. • Achamos que a possível causa desse comportamento é porque a leitura da memória, nessas configurações é realizada só na metade final do ciclo de clock, e assim os dados seriam perdidos.
Solução • Testamos 2 novas configurações e assim, a memória funcionou como o esperado. • sensibilidade para a borda de descida do clock (FallingEdgeTriggered) ReadAfterWrite • sensibilidade para a borda de subida do clock (RisingEdgeTriggered) ReadBeforeWrite
Resultado • Freqüência Máxima: 128 MHz • Tsetup: 4,32 ns • LUTs: 253 • FlipFlops: 92