Dicas VHDL 1
1 – Não se podem declarar variáveis dentro de arquitetura – variáveis são declaradas dentro de processos.
1a- Entre blocos da arquitetura só há sinais ligando os blocos.
2 – Não se pode declarar um sinal dentro de um Process (apenas variáveis), mas pode-se atribuir o valor de uma variável a um sinal, ou realizar operações entre sinais e variáveis.
3 – Sinais podem ser usados dentro de um Process, mas atribuições a sinais dentro de processo podem causar resultados inesperados porque a atribuição do valor é retardada até que um comando WAIT seja executado. O mesmo ocorre se o processo for disparado por alguma mudança em um ou mais elementos da lista de sensibilidades, que é equivalente a executar um WAIT no final do processo.
4 – Sinais são usados para fazer comunicação entre processos e também são usados para interligar (wire) projetos estruturais (projetos que explicitam a interligação física dos módulos, sem detalhar o comportamento de cada módulo).
5 – Dentro de um processo, atribuições a sinais podem enviar dados para outros processos (disparando-os).
6 – Dentro de um processo, valores de sinais podem ser usados do lado direito de expressões para atribuir valores a variáveis.
7 – IMPORTANTE: Dentro de um processo, a atribuição a um sinal é retardada (não é feita) até que um ciclo de simulação seja rodado, sendo disparado pela execução de um comando WAIT, ou através da mudança de um sinal na lista de sensibilidades, o que também é feito no final do processo. Exemplo: Process Begin Sys_clk <= NOT (sys_clk) after 50 ns; Int_bus <= data_in after 10 ns; Data_out <= my_function (int_bus) after 10 ns; WAIT 30 ns; -- só após 30 ns após o tempo de simulacao anterior
-- é que sys-clk, int_bus e data_out vao mudar, -- com seus respectivos atrasos !!
8 – Dentro de um processo (atribuições sequenciais) um sinal só pode ter atribuído um valor de cada vez. Ex.: Process Begin Xyz <= 1 after 4 ns; Pqd <= 10 after 5