1. Specificatii
Ce se da...
Orice sistem digital poate fi partajat in doua blocuri cu roluri si structuri diferite: cale de date si cale de control. Calea de date este parametrizata (depinde de dimensiunea datelor prelucrate) si contine toate elementele care concura la procesarea fluxului de date. Aici se vor gasi registrele si unitatile functionale de executie (sumatoare, multiplicatoare, etc.). Calea de control nu depinde de dimensiunea datelor prelucrate, ea avind rolul de a furniza semnale de comanda pentru calea de date. In esenta, calea de control este structurata ca un automat secvential cu numar finit de stari. Figura 1 prezinta grafic relatia dintre calea de date si calea de control. Trebuie remarcat ca semnalul de ceas (Ck) si semnalul de initializare (Reset) sint distribuite in acelasi timp ambelor blocuri constitutive.

Figura 1. Partajarea unui sistem digital in cale de date si cale de control.
...si ce se cere?
Un registru din calea de date va trebui sa aibe n intrari de date, n iesiri de date, o intrare pentru semnalul de ceas, si una pentru semnalul de reset. Toate registrele din calea de date primesc pe intrarea de ceas semnalul global Ck, iar pe intrarea de reset semnalul global Reset. Insa, nu toate registrele trebuie sa comute la fiecare perioada de tact. De aceea este nevoie de un semnal suplimentar (provenit de la calea de control) prin care registrul "sa fie informat" daca la momentul determinat de frontul semnalului de ceas ii este permis sau nu sa comute. In cazul in care registrul nu comuta, acesta trebuie sa ignore aparitia frontului activ al semnalului de ceas si sa isi pastreze starea. Aceasta intrare suplimentara o vom denumi En de la Enable (to enable = a permite).
Un bistabil de tip D cu intrare En va avea simbolul bloc ca cel prezentat in figura 2.

Figura 2. Simbolul bloc al unui bistabil cu posibilitati de comanda.
Pentru clarificarea ideilor, in figura 3 se prezinta o schema generala simplificata a oricarui sistem digital.

Figura 3. Structura simplificata a unui sistem digital.
Calea de control se implementeaza sub forma unui automat secvential constind dintr-un Circuit Logic Combinational (CLC), care determina starea viitoare pe baza starii prezente si a intrarilor, si un registru care memoreaza starea prezenta. CLC-ul care determina iesirile furnizeaza semnale de comanda pentru calea de date, pe baza starii prezente. In calea de date, pentru simplitate, s-a reprezentat numai un registru.
Cum se proiecteaza un registru de patru biti cu facilitati de comanda?
Raspunsul la aceasta intrebare este prezentat in continuare.
2. Descrierea comportamentala
Modelul VHDL al entitatii
Entitatea VHDL descrie interfata unui sistem digital, precizind denumirea, tipul si directia porturilor si eventualii parametrii generici ai sistemului. Codul VHDL care descrie un simbol bloc similar celui din figura 2 este prezentat in continuare.
library IEEE ;
use IEEE.std_logic_1164.all ;
entity dff4 is
port (
reset, ck, en: in std_logic :='0' ;
d: in std_logic_vector(3 downto 0) := "0000" ;
q, qn : out std_logic_vector(3 downto 0)
) ;
end dff4 ;
Modelul VHDL al arhitecturii comportamentale
Arhitecturile sint asociate unei entitati si descriu comportamentul si/sau structura acesteia. In continuare se prezinta o arhitectura comportamentala asociata entitatii dff4. Arhitectura propusa respecta stilul de modelare si constringerile impuse de sintetizatorul de cod VHDL Synergy din pachetul Cadence.
architecture behavioral of dff4 is
begin
behave: process
begin
wait until ((ck'event and ck = '1') or
(reset'event and reset = '0'));
if reset = '0' then
q <= "0000";
qn <= "1111";
elsif (ck'event and ck = '1') then
if en = '1' then
q <= d;
qn <= not d;
end if;
end if;
end process behave;
end behavioral;
3. Descrierea structurala
Descrierea VHDL comportamentala, prezentata pina aici, poate constitui intrarea pentru un produs software denumit generic "sintetizator de hardware". Un sintetizator produce o descriere structurala, la nivel de porti si bistabile, pe baza unor componente precizate intr-o biblioteca de tehnologie. Bineinteles ca exista si posibilitatea de a asocia unei descrieri structurale o reprezentare grafica. In continuare se prezinta codul VHDL obtinut ca efect al sintezei pentru tehnologia ES2 (European Silicon Structures). In figura 4 se prezinta schema asociata descrierii structurale.
-- Begin decompilation after module instance generation
library Ieee;
use Ieee.Std_Logic_1164.all;
library Syn_ind;
use Syn_ind.Syn_ind_Decl_Pack_Mvl9.all;
--------------Architecture Body ------------------
ARCHITECTURE Behavioral_Syn of Dff4 is
signal Vhs_Temp_Q : Std_Logic_Vector (3 downto 0);
signal w000003 : Std_Logic;
signal Vhs_Temp_Ck : Std_Logic;
signal Vhs_Temp_Reset : Std_Logic;
signal w000001 : Std_Logic;
signal Vhs_Temp_D : Std_Logic_Vector (3 downto 0);
signal Vhs_Temp_En : Std_Logic;
signal w000004 : Std_Logic;
signal Vhs_Temp_Qn : Std_Logic_Vector (3 downto 0);
signal w000002 : Std_Logic;
BEGIN
TEMP_ASSIGN_1 : Vhs_Temp_Reset <= Reset;
TEMP_ASSIGN_2 : Vhs_Temp_Ck <= Ck;
TEMP_ASSIGN_3 : Vhs_Temp_En <= En;
TEMP_ASSIGN_4 : Vhs_Temp_D <= D;
TEMP_ASSIGN_5 : Q <= Vhs_Temp_Q;
TEMP_ASSIGN_6 : Qn <= Vhs_Temp_Qn;
mod001948 : LIBDFFR port map(
D => w000003, RESETZ => Vhs_Temp_Reset,
CK => Vhs_Temp_Ck, QZ => Vhs_Temp_Qn(1),
Q => Vhs_Temp_Q(1)
);
mod001926 : LIBMUX21 port map(
B => Vhs_Temp_D(1), A => Vhs_Temp_Q(1),
S => Vhs_Temp_En, Y => w000003
);
mod001940 : LIBDFFR port map(
D => w000001, RESETZ => Vhs_Temp_Reset,
CK => Vhs_Temp_Ck, QZ => Vhs_Temp_Qn(3),
Q => Vhs_Temp_Q(3)
);
mod001902 : LIBMUX21 port map(
B => Vhs_Temp_D(3), A => Vhs_Temp_Q(3),
S => Vhs_Temp_En, Y => w000001
);
mod001952 : LIBDFFR port map(
D => w000004, RESETZ => Vhs_Temp_Reset,
CK => Vhs_Temp_Ck, QZ => Vhs_Temp_Qn(0),
Q => Vhs_Temp_Q(0)
);
mod001938 : LIBMUX21 port map(
B => Vhs_Temp_D(0), A => Vhs_Temp_Q(0),
S => Vhs_Temp_En, Y => w000004
);
mod001944 : LIBDFFR port map(
D => w000002, RESETZ => Vhs_Temp_Reset,
CK => Vhs_Temp_Ck, QZ => Vhs_Temp_Qn(2),
Q => Vhs_Temp_Q(2)
);
mod001914 : LIBMUX21 port map(
B => Vhs_Temp_D(2), A => Vhs_Temp_Q(2),
S => Vhs_Temp_En, Y => w000002
);
END Behavioral_Syn;

Figura 4. Reprezentarea schematica a structurii rezultate prin sinteza de hardware.
Metodologia de proiectare top-down a sistemelor digitale
, utilizind limbaje de descriere hardware este prezentata in figura 5. Se remarca existenta a trei etape distincte dintre care primele doua (descrierea de nivel inalt a sistemului si implementarea) se realizeaza direct de catre proiectant. Ultima etapa cade in sarcina fabricantului (in cazul unui circuit integrat dedicat) sau se reduce la programarea dispozitivului (in mod automat). Un rol foarte important il are simularea, care valideaza corectitudinea fiecarei etape in parte. Ideal ar fi ca simularea, indiferent de nivelul la care se face, sa se bazeze pe aceiasi vectori de test.

Figura 5. Metodologia de proiectare top-down a sistemelor digitale.