FPGA_VIVADO_SI_VHDL_Mihael_Cristian_Ignat

(Cristian I.K_ntXI) #1
33

Fig. 41: Contraexemplu pentru generarea semnalului de clock

Funcționalitatea numărătorului descris în Table 2: Modul de funcționare a unui numărător poate fi
observată în Fig. 42: Simularea numărătorului. Aici se observă că valoarea ieșirii, q, nu se modifică decât
atunci când CE = 1 și apare front crescător al semnalului CLK. De asemenea, când apare semnalul de reset, r,
valoarea ieșirii trece în 0.


Fig. 42: Simularea numărătorului

Procesul ce implementează un numărător pe 4 biți este următorul, unde semnalul ‘cnt’ pe 4 biți este
atribuit direct ieșirii Q:


process(clk)
begin
if rising_edge(clk) then
if r = '1' then
cnt <= “ 0000 ”;
elsif ce = '1' then
cnt <= cnt + '1';
end if;
end if;
end process;

Exercițiu: adăugați pinii LD pe un bit și D_in pe număr de biți identic cu ieșirea, iar când LD este ‘1’,
valoarea de ieșire a numărătorului se va actualiza cu data D_in, după care va continua numărarea de la
valoarea respectivă.


Codul complet al numărătorului cu parametri generici se poate găsi în counter.vhd, iar fișierul de
testare se găsește în testB_counter.vhd.


5.4. Registrul de deplasare................................................................................................................


Registrul de deplasare (registru de shiftare) este format din niște bistabili conectați în serie. Cele mai
utilizate tipuri de regiștri de deplasare au data de intrare paralelă, iar la ieșire pot avea data tot paralelă, pe
același număr de biți ca și data de intrare, sau data pe un singur bit, data de la intrare fiind serializată.


Un astfel de registru are următoarele date de intrare:


  • RESET – resetează toți bistabilii

  • LOAD - utilizat la încărcarea datelor în registru

  • LD (Load Data) - datele de încărcare ale registrului. Pentru a încărca datele, vor trebui îndeplinite
    următoarele condiții: RESET = 0 și LOAD = 1

Free download pdf