Extras din laborator
Implementarea circuitelor logice combinaţionale cu circuite CPLD impune descrierea lor funcţională în limbaj VHDL. Se va utiliza pachetul de programe WARP6.3 care permite sinteza circuitelor logice cu circuite CPLD de tip Cypress: PLD, MAX340EPLD, FLASH370 etc.
Scopul lucrării
Se va sintetiza cu CPLD şi simula funcţional un multiplexor de tip 4:1 (4 intrări şi o ieşire). Se va generaliza metoda de implementare pentru un circuit logic combinaţional de complexitate mai mare. Schema bloc şi tabelul de adevăr asociat multiplexorului sunt prezentate în figura 1.
Fig.1: Schema bloc şi tabelul de adevăr al multiplexorului 4:1
Desfăşurarea lucrării
1. Folosind programul Galaxy din cadrul pachetului de programe WARP6.3 se va descrie în limbaj VHDL funcţionarea multiplexorului. Se vor parcurge următoarele etape:
1.1. Start Programs => WARP6.3 => Galaxy
1.2. File => New => Project [Target – device] - - sinteza MUX se va face cu un circuit CPLD
precizat în etapa 2.5
1.3. Project name: MUX4_1 -- se introduce numele proiectului
1.4. Project Path: c:warpstudent... -- se precizeă locţia unde va fi salva proiectul
1.5. Next => Next=>Select Target Device =>
=> CPLD => Flash 370I => C372i –66JC -- se selectează circuitul CPLD care va conţine multiplexorul ;
1.6. Finish
1.7. File => New => Text files =>
=> Save as: MUX.vhd -- se deschide un fişier-text în care se va descrie în limbaj VHDL multiplexorul;
1.8. Project => Add Files To Project =>
=> MUX.vhd => Add => OK -- se ataşează fisierul text MUX.vhd la proiect
1.9. În fişierul MUX.vhd se editează sursa VHDL :
------------------------------------------------------------------------------------------------------------------------------
library ieee; --se apelează bibliotecile necesare
use IEEE.std_logic_1164.all; -- pentru descrierea circuitului
entity mux4_1 is -- se declară entitatea logică mux4_1
port ( X : in std_logic_vector(3 downto 0); -- portul cuprinde semnalele
S : in std_logic_vector(2 downto 1); -- aplicate pinilor circuitului
Y: out std_logic );
end mux4_1;
architecture arch_of_mux4_1 of mux4_1 is -- se declartă arhitectura
-- asociată entităţii logice
begin
mux4_1: process (X,S) -- portul corespunde
begin
if S="00" then Y<=X(0);
elsif S="01" then Y<=X(1);
elsif S="10" then Y<=X(2);
else Y<=X(3);
end if;
end process mux4_1;
end arch_of_mux4_1;
------------------------------------------------------------------------------------------------------------------------------
1.10. Project => Compiler Options =>
=> Timing Model => 1164/VHDL => OK -- Se va selecta opţiunea de compilare pentru simulare
funcţională a multiplexorului cu programul
Active –HDL Sim;
1.11. Compile => Project -- Se vor compila fişierele ataşate aplicaţiei MUX4_1;
1.12. Analizând fişierul MUX.rep (Wiew => Report File) determinaţi cum au fost alocate semnalele de intrare şi ieşire din multiplexor pinilor circuitului CPLD.
2. Se va simula funcţionarea multiplexorului cu programul Active – HDL Sim din pachetul de programe Warp5.1. Se vor parcurge următoarele etape:
2.1. Start Programs => Warp5.1 => Active – HDL Sim
2.2. File => New Waveform => Open VHDL => c:WARPstudentvhdMUX.vhd
–- se deschide fişierul care va fi simulat
2.3. Simulation => Initialize
2.4. Waveform => Add Signals => Name => S =>Add
Waveform => Add Signals => Name => X =>Add
Waveform => Add Signals => Name => Y =>Add -- se selectează semnalele în vederea afişării
semnalelor
2.5. Se configurează semnalele de intrare ca stimuli (generatoare de semnal) în vederea simulării:
• se selectează semnalul S (tip bus de semnale), efectuându-se dublu clic-stânga. Pe ecran vor apărea componentele busului: S(2), S(1);
• se selectează S(1), se execută clic-dreapta după care se selectează opţiunea Stimulators;
• Stimulator type => formula => enter formula (…..) =>
=> Apply => Close -- se editează stimulul S(1);
Se completează rubrica “enter formula” astfel: <value> <time>, <value> <time>,..etc. “Value” poate fi 0 sau 1. “Time” reprezintă momentul de timp în care stimulul îşi schimbă valoarea (unitatea de măsura este picosecunda).
Pentru semnalul S(1) se completeaza rubrica “enter formula” astfel:
0 0, 1 100000, 0 200000, 1 300000, 0 400000
S(1) este reprezentat grafic în figura 2.
Preview document
Conținut arhivă zip
- Limbaje de dezvoltare hardware.doc