Documente Academic
Documente Profesional
Documente Cultură
Pas 1
Sintez
(translare)
Aria i STA
(static
timing
analysis)
Timing
Aria
Pas 2
Pas 3
Optimizare
Pas 4
X
Timing
Constrngeri
Netlist
optimizarea din punct de vedere a ariei ocupate i apoi optimizare numai pentru aspectele de
timing dac exist constrngeri de acest tip care nu sunt ndeplinite.
Procesul de sintez const din mai multe etape de transformri i optimizri, trecerea
unui proiect de la descrierea comportamental VHDL la descrirea netlist realizndu-se prin
mai multe nivele intermediare, care corespund la diferite nivele de abstractizare a proiectului,
aa cum este reprezentat n figura 2.
VHDL
Translare
Nivel RTL
Reprezentare structural.
Control-Data Flow-Graph
Optimizare
Translare
Nivel Logic
Logic sincron. Reprezentare ecuaii
booleene pt. circuite combinaionale
Optimizare
Optimizare
Netlist
4 celule; 24 tranzistoare
(a)
3 celule; 14 tranzistoare
(b)
Accelerate , Brake
Accelerate , Brake
Accelerate
Slow
Medium
Accelerate
Accelerate
Brake
Brake
Brake
Stop
Accelerate
Fast
Brake
when
when
when
when
=>
(Accelerate='1') then
NextSpeed <= Slow;
else
NextSpeed <= Stop;
end if;
Slow =>
if (Brake='1') then
NextSpeed <= Stop;
elsif (Accelerate='1') then
NextSpeed <= Medium;
else
NextSpeed <= Slow;
end if;
Medium =>
if (Brake='1') then
NextSpeed <= Slow;
elsif (Accelerate='1') then
NextSpeed <= Fast;
else
NextSpeed <= Medium;
end if;
Fast =>
if (Brake='1') then
NextSpeed <= Medium;
else
NextSpeed <= Fast;
end if;
others =>
NextSpeed <= Stop;
end case;
end process FSM_COMB;
FSM_SEQ: process (Clock,Keys)
begin
if (Keys='0') then
Speed_s <= Stop;
elsif falling_edge(Clock) then
Speed_s <= NextSpeed;
end if;
Speed <= Speed_s;
end process FSM_SEQ;
end; -- architecture RTL;
component FSM_CAR_SPEED_CNTL
port(Clock, Keys, Brake, Accelerate: in std_logic;
Speed:out STATE_TYPE);
end component;
component FSM_CAR_Control
port (Speed: in STATE_TYPE;
Clock, Keys, Brake, Accelerate: out std_logic);
end component;
begin
Car: FSM_CAR_SPEED_CNTL
port map (
Clock => Clock,
Keys => Keys,
Brake => Brake,
Accelerate => Accelerate,
Speed => Speed);
Driver: FSM_CAR_Control
port map (
Speed => Speed,
Clock => Clock,
Keys => Keys,
Brake => Brake,
Accelerate => Accelerate);
end STRUCT;
3. Apare o nou fereastr (Device Properties) prezentat mai jos, n care trebuie
selectate informaii despre placa de dezvoltare (hardware device) considerat pentru sintez
i despre instrumentele ce vor fi folosite n etapele (flow-ul) proiectului. Informaiile despre
plac pot fi aflate de pe aceasta. n fereastra Device Properties se alege:
Pentru Family, se alege Spartan3
Pentru Device, se alege XC3S200
Pentru Package, se alege PQ208
Pentru Speed (vitez), se alege -4
Pentru Synthesis Tool, se alege XST (VHDL/Verilog)
Pentru Simulator, se alege ISE Simulator (VHDL/Verilog)
Pentru Preferred Language, se alege VHDL.
n final se apas click pe buronul Next.
4. n urmtoarea fereastr (Create New Source) suntem ntrebai dac dorim s crem
un fiier surs nou. Deoarece fiierul surs pe care l vom considera deja este creat
(Car_speed.vhd), acesta va fi adugat n proiect mai trziu. De aceea se apas Next.
7. nainte de crearea proiectului apare fereastra Adding Source Files pentru a vedea
situaia fiierelor surs adugate la proiect i elementele coninute de acestea. De asemenea,
se poate selecta ce variante de vizualizare dorim s asociem pentru elementele din fiierele
surs adugate n proiect. n acest caz se selecteaz Synthesis/Imp + Simulation, apoi OK.
Astfel, prin expandarea User Constraints se pot executa procese pentru crearea
constrngerilor legate de timing (Create Timing Constraints), pentru asocierea porturilor
circuitului sintetizat la pinii circuitului FPGA (Asign Package Pins) sau pentru crearea
constrngerilor legate de arie (Create Area Constraints).
n cadrul acestei lucrri nu vom impune nici o constrngere. Pentru a vedea n ce
const i cum pot fi stabilite constrngerile, se poate aciona pe rnd dublu-click pe
procesele menionate mai sus pentru a fi executate. Dup ce se acioneaz prima dat
dublu-click pe unul din procesele din cadrul User Constraints, se cere confirmarea pentru
crearea unui fiier pentru constrngeri (Implementation Constraint FileUCF). n ferestrele
care apar prin executarea proceselor nu se va edita nimic, acestea doar se vor vizualiza
dup care se vor nchide.
11. n continuare se poate trece la efectuarea sintezei propriu-zise a proiectului. Pentru
aceasta, avnd selectat FSM_CAR_SPEED_CNTL +RTL (Car_FSM.vhd) n zona Sources,
n cmpul Proceses se acioneaz dublu-clik pe Synthesize XST.
Prin sintez proiectul este transformat ntr-o structur cu componente logice (pori,
bistabile, LUT-uri lookup table, etc) din cadrul circutului FPGA al plcii Spartan-3. Cnd
procesul de sintez s-a terminat, acesta este anunat prin mesajul Process Synthesize
completed successfully.
12. Dup terminarea sintezei, n cmpul Processes, prin expandarea procesului
Synthesize XST se pot vizualiza i executa celelalte procese asociate acestuia (View
Synthesis Report, View RTL Schematic, View Technology Schematic, etc)
10
11
reprezentat pe diverse nivele ierarhice care pot fi parcurse similar ca n cazul vizualizrii
schemei la nivel RTL. n figura 7 sunt reprezentate schemele la nivel tehnologic pentru
circuitul sintetizat.
12
5. Lucru individual
n directorul .../Xilinx1A/ creai un subdirector numit FSM_10A, copiai aici fiierul
surs FSM_A din lucrarea nr. 10 i realizai sinteza circuitului corespunztoare descrierii
respective, procednd similar ca n cazul sintezei proiectului car_speed.
13