21
[https://www.nandland.com/vhdl/examples/example-record.html]
3.7. Implementarea pe FPGA a unui multiplexor
Trecând la implementarea concretă pe FPGA, vom implementa pe Basys3 multiplexorul cu 2 linii de
selecție, unde Q va fi conectat la LED0, Y va fi conectat la SW[3:0], iar S va fi conectat la SW[15:14], ca în
schema următoare:
Fig. 26: Conexiunile către pinii FPGA
În schema de mai sus se vede cum este implementat în interiorul FPGA-ului multiplexorul despre care
am tot vorbit în acest capitol. Se dorește realizarea conexiunilor către pinii de FPGA. În acest scop, în
proiectele Vivado există noțiunea de constrângeri. Cele mai frecvente constrângeri sunt cele legate de
realizarea conexiunilor către pini. Fișierul de constrângeri este un fișier cu extensia XDC, iar acest fișier poate
fi deja gata făcut (cum este cazul plăcii Basys3), sau putem să îl creăm noi. După cum se vede în figură,
comutatoarele (switch, în engleză) SW0, SW1, SW2, SW3, SW14 și SW15 sunt conectate la următorii pini de
intrare / ieșire a FPGA-ului: V17, V16, W16, W17, T1 și respectiv R2. Ledul LED0 este conectat la pinul U16.
Prin fișierul de constrângeri se dorește realizarea conexiunii dintre pinii de IO ai FPGA-ului și pinii de IO ai
multiplexorului realizat în cod.
Astfel, pinul Y0 al multiplexorului va trebui conectat cu pinul de intrare / ieșire V17, Y1 cu V16 și așa mai
departe.
3.8. Crearea fișierului de constrângeri
Primul pas în crearea fișierului de constrângeri este rularea sintezei. Pentru aceasta se apasă pe Run
Synthesis de sub tabul SYNTHESIS din fereastra Flow Navigator:
Fig. 27: Rularea sintezei
După aceasta apare fereastra Lunch Runs. Se lasă setările implicite și se apasă butonul OK.