Meus comentários
P1- Tive problemas ao usar o lpm_ram_dq, porque tentei fazer a memória assíncrona, mas o quartus disse que não é possível utilizar essa opção para a cyclone II, então eu fiz a entrada E (chip enable) como inclock na entrada da memória e aí consegui compilar. Isso estaria correto?
R1- Não se preocupem com a implementação específica de uma determinada megafunction. Vocês têm apenas que fazer funcionar.
P2- Quando o exercício diz controle de tri-state, quer dizer que minha saída será uma palavra de Z's para atuar como alta impedância quando, por exemplo, o G(output enable) for 0?
R2- Voces podem fazer de duas maneiras. A primeira é a que o Caio menciona e, nesse caso, o Quartus vai transformar o tri-state para a implementação MUX. A segunda é fazer diretamente em MUX.
P3- Para demonstrar o funcionamento de todo espaço de endereçamente [;2^{10};] endereços sendo que a memória tem no máximo [;2^{8};] endereços, o que o sistema deve fazer quando o dois bits mais significativos forem diferentes de 00? Apresentar algum erro?
R3- O exercício tem o objetivo de ilustrar o que acontece em máquinas comerciais, quando o barramento de endereço normalmente tem capacidade de endereçamento maior do que as memórias instaladas. Uma coisa inaceitável é que ações fora do espaço de memória disponível venham a afetar o conteúdo de qualquer célula de memória. Eu vou testar escrita no endereço 10 0000 0000 e depois leitura no endereço 10 0000 0000. O conteúdo não pode ter sido mudado.