Pietro Biasuz Alan Diego dos Santos 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) 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 (Rising Edge Triggered) e ao utilizarmos a configuração de Read After Write 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 (Falling Edge Triggered) Read After Write sensibilidade para a borda de subida do clock (Rising Edge Triggered) Read Before Write Resultado Freqüência Máxima: 128 MHz Tsetup: 4,32 ns LUTs: 253 FlipFlops: 92