Rafael,
Gostei da idéia do feedback. Como conversamos com vc na última aula, essa prática ajuda muito a corrigir os erros nos labs.
Por exemplo, ao ver seu comentário sobre o erro no exercício 4 do meu grupo (10), que inferia muitos latches por não usar um clock'event, foi que percebi que isso atrapalhou bastante.
Alguns labs atrás, tive o problema de tentar controlar um processo usando dois sinais e pegar eventos nos dois, exatamente o que acontece no caso do datapath do exercício, no meu caso, eu tenho dois sinais, KEY(0) e KEY(1), que são o clock e o reset assincrono do circuito. Meu processo ficou assim:
process(KEY(0), KEY(1))
begin
if (KEY(1) = '0') then -- reset assincrono
...
elsif (KEY(0) = '0') then -- processa instrucao
...
end if;
end process;
Tanto no if como no elsif os mesmos sinais são alterados. Só não coloquei aqui para simplificar.
Como vc disse, essa lógica infere uma tonelada de latches. Só que ao tentar usar a sua dica, e colocar no if um 'event para cada sinal, o quartus informa uma série de erros como esse:
Error (10820): Netlist error at datapath.vhd(36): can't infer register for LEDG[0] because its behavior depends on the edges of multiple distinct clocks
Foi por isso que não coloquei os events no if. Entendi que sem eles a lógica fica errada e gera latches, mas não consegui resolver. Separar o if em dois processos, um para cada sinal KEY, também não funcionou.
Já estava quase mandando esse e-mail pedindo para que vc explicasse como fazer, quando resolvi buscar nos slides das aulas algum exemplo (que eu sabia ter visto) de um caso parecido. E achei mesmo: um contador de 4 bits com reset assincrono. Ai percebi que o certo era ter feito um event em apenas um dos sinais. Teste no meu projeto e não tem um latch sequer! \o/
Enfim, agora já estamos caminhando pra parte final da disciplina. Mas fica a dica que que esse tipo de retorno sobre a correção dos labs ajuda muito. Obviamente, cada grupo poderia entrar em contato e pedir para explicar o que deu errado, mas acho que ambos os caminhos são bons. =)