Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1) Conhece suas ferramentas:
a. O “RTL Viewer” para verificar as conexões entre os blocos.
b. Paneis de “Warnings” e “Errors”
1
c. Monitoramento de sinais na simulação. No “Node Finder” clique nos três pontos e
selecione a instancia desejada (por exemplo, a unidade de controle). Depois clique
no triangulo ao lado do “Filter” e selecione “Design Entry (all names)”. Depois,
selecione o sinal (por exemplo, “atual” que mostre o estado atual com o nome).
Atenção: o filtro “Design Entry” mostra todos os sinais antes da fase de
optimização durante a compilação. Ao contrário, o filtro “Post-synthesis” que só
mostra os sinais existentes depois da compilação. Somente os sinais contidos no
“Post-synthesis” poderão ser simulados.
2
d. Números das células usadas para analisar se blocos não forem criados (número de
células igual zero). Se a coluna não estiver disponível clique no botão direito do
mouse sobre a barra que contém a palavra “Entity” e selecione “Customize
Columns” e adicione “Logic Celles”.
2) Assegure‐se que para todos os casos de atribuição de sinais, os sinais de saída sejam
definidos.
a. Esse comportamento pode ser observado pelos “warnings” do tipo:
Warning (10631): VHDL Process Statement warning at controladora.vhd(60):
inferring latch(es) for signal or variable "R_end_rc", which holds its previous value
in one or more paths through the process
b. Zere os sinais na controladora antes do “case”:
3
c. Use “when OTHERS” em multiplexadores e troca “NULL”s pelo “(others => “0”)”
3) Coloque todos os sinais de entrada relevantes na lista de sensibilidade.
a.
b. Esse comportamento pode ser observado pelos “warnings” do tipo:
Warning (10492): VHDL Process Statement warning at controladora.vhd(213):
signal "RIent" is read inside the Process Statement but isn't in the Process
Statement's sensitivity list
4) Remova ”se possível” todos os “warnings”. Só os “warnings” seguintes não ocasionarão
problemas:
Warning: Feature LogicLock is only available with a valid subscription license. Please
purchase a software subscription to gain full access to this feature.
Warning: Found 9 output pins without output pin load capacitance assignment
Warning: The Reserve All Unused Pins setting has not been specified, and will default to 'As
output driving ground'.
Warning: Found pins functioning as undefined clocks and/or memory enables.
5) Coloque um exemplo para CADA instrução na memória de instruções (MI).
4
6) Não use as bibliotecas “ieee.std_logic_signed.all”, ”ieee.std_logic_unsigned.all” e
"ieee.std_logic_arith.all" como eles não pertencem ao padrão IEEE e podem criar
problemas na síntese. Só use “ieee.std_logic_1164.all” e “ieee.numeric_std.all”
A sintaxe é:
a. Addição/Substração:
output_aux <= std_logic_vector(signed(Ent1) + signed(Ent2));
output_aux <= std_logic_vector(signed(Ent1) ‐ signed(Ent2));
ou
output_aux <= std_logic_vector(unsigned(Ent1) ‐ unsigned(Ent2));
output_aux <= std_logic_vector(unsigned(Ent1) + unsigned(Ent2));
b. Comparação:
if(signed(Ent_1) < signed(Ent_2)) then
c. Deslocamento:
res <= std_logic_vector(shift_left(signed(Ent2),to_integer(unsigned(Ent1))));
d. Acesso de matrizes:
BR_aux(to_integer(unsigned(R_end_ra))) <= Ra;
e
Rb <= BR_aux(to_integer(unsigned(R_end_rb)));
7) Use uma notação clara para o “port mapping”:
8) Comece cada simulação com “reset = 1” durante 2‐3 ciclos de clock.
9) Para simulações, selecione uma frequência que é baixa suficiente. Recomendo 1 MHz.
(Extensão do tempo para simulações pelo “Edit > End Time..”).
5