Gjuha VHDL

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 61

_________________________________________________________________

Gjuha VHDL

1
Përshkrimi me Gjuhën “VHDL”
________________________________________________________________

 Një vështrim mbi gjuhën VHDL

 Hyrje në gjuhën VHDL


 Historia e gjuhës VHDL
 Terminologji të rëndësishme
 Standartizimi i gjuhës VHDL

 Bazat e gjuhës VHDL

 Libraritë dhe paketat


 Entitetet, Arkitekturat dhe Konfigurimet
 Sinjalet dhe tipet e të dhënave
 Operatorët
 Proçeset
2
Hyrje në gjuhën VHDL
______________________________________________________________
 VHDL është një gjuhë, që përdoret për të përshkruar sjelljen e
projektimeve të qarqeve digitale

Very High Speed Integrate Circuits


Hardware
Description
Language

 Projektimet VHDL mund të simulohen dhe të përkthehen në një


formë të përshtatëshme për implementimin (realizimin) e hardware-
it.
 Përdorimi hirarqik i projektimeve VHDL lejon realizimin e
projektimeve të qarqeve digitale komplekse.
3
Historia e zhvillimit të gjuhës VHDL
________________________________________________________________

 Gjuha VHDL është zhvilluar nga programi VHSIC (Very High Speed
Integrated Circuits) në fund të viteve 1970 dhe fillim të viteve 1980
- Programi VHSIC është financuar nga Departamenti i Mbrojtjes së SHBA
- Mjetet ekzistuese të kohës ishin të pamjaftueshme për projektimet e hard-
eve komplekse

 Evolucioni i gjuhës VHDL ka ndjekur këto hapa:


- Në 1981, VHDL është propozuar si gjuhë e përshkrimit të hardëare-it
- Në 1986, VHDL u propozua si standart IEEE
- Në 1987, u miratua gjuha e parë standarte VHDL (IEEE-1076-1987)
- Në 1983 u miratua një gjuhë e revizionuar standarte VHDL (IEEE-1076-1993)
- Në 2002 u miratua gjuha e tanishme standarte VHDL (IEEE-1076-2002)
 Tani gjuha VHDL përdoret intensivisht nga industria dhe academia për
qëllime simulimi dhe sintetizimi të projektimeve të qarqeve digitale

4
Terminologji të rëndësishme
_____________________________________________________

 Simulimi është parashikimi (prognoza) e sjelljes së qarkut,që


projektohet
- VHDL ka shumë tipare të përshtatëshme për simulimin e projektimeve të
qarqeve digital
- Simulimi funksional përafron sjelljen e projektimeve hardëare, nëpërmjet
supozimit se të gjitha daljet ndryshojnë në të njejtën kohë
- Simulimi në kohë parashikon sjelljen ekzakte të një projektim hardëare

 Sinteza përfaqëson përkthimin e një projektimi (skeme) në një listë


elementësh netlist file, që përshkruan strukturën e një projektimi
hardëare
- Gjuha VHDL nuk është projektuar për qëllime sintetizimi
- Prandaj, jo të gjitha instruksionet e gjuhës VHDL vlejnë për sintetizim

5
Terminologji të rëndësishme (vazhdim)
_____________________________________________________
 FPGA (Field Programmable Gate Arrays) janë elementë
logjikë të programueshëm, tek të cilët, në bazë të programimit,
realizohet shpejt prototipi i qarkut digital, që kërkohet të projektohet.

- Konfigurimi i një elementi FPGA lejon implementimin virtual të çdo


projektimi.
- Projektimi VHDL gjeneron një fajll (file) me vargje bit-esh për konfigurimin e
elementit FPGA.

 ASICS (Applications Specific Integrated Circuits) janë


qarqe të integruar të projektuar (sipas porosisë) për aplikime specifike

- Projektimet VHDL mund të përdoren për gjenerimin e një fajll-i skeme të


detajuar për fabrikimin e një qarku ASIC.

6
Komente mbi Sintezën VHDL
_______________________________________________________________

- Ndofta dy autorët Brown dhe Vranesic përmblodhën rrezikun e sintezës


VHDL, kur në tekstin e tyre shkruajtën:

- Tendenca e fillestarëve është hartimi i kodeve, që i ngjajnë një programi me


shumë variabla dhe laqe(loops). Por është shumë e vështirë të përcaktosh
se çfarë qarku logjik do të prodhojnë mjetet e projektimit CAD (Computer
Aided Design) duke sintetizuar këto kode.

- Autorët Brown dhe Vranesic sygjeruan për sa më poshtë vijon:

- Në se një projektues e ka vështirë të përcaktojë se çfarë qarku logjik


përshkruhet me kodet VHDL, atëhere ka pak gjasa, që mjetet CAD të
sintetizojnë qarkun, që projektuesi përpiqet të përshkruaj.

7
Bazat e gjuhës VHDL
________________________________________________________________
Rregullat mbi emërtimet
Në këtë tutorial përdoren këto rregulla mbi emërtimet:

- Të gjitha fjalët kyçe VHDL tregohen me gërma të mëdha.


- Të gjitha shenjat dalluese (identifiers) tregohen me gërma të vogla
- Të gjitha nënvizimet e përdorur nga Altera Quartus II janë përdorur për të
lehtësuar lexueshmërinë e fragmenteve të kodeve VHDL

Për këto rregulla, ju duhet të konsultoheni me udhëzuesin mbi stilet e


kodeve të mjeteve tuaja CAD.
- Shumica (në se jo të gjitha mjetet) shoqërohen me një udhëzues për stilin e
kodeve-VHDL me rekomandimet mbi stilin.
- Shumica e firmave japin një stil kodimi–VHDL për të përmirësuar
lexueshmërinë e projektimeve hardware.

8
Bibliotekat dhe paketat
________________________________________________________________

- Bibliotekat japin një komplet paketsh, komponentesh dhe funksionesh,


që e thjeshtojnë detyrën e projektimeve hardëare.
- Paketat përmbajnë një koleksion tipesh të ngjashme të dhënash dhe
nënprogramesh.
- Më poshtë jepet një shembull i përdorimit të bibliotekës ieee (ieee
library) dhe të paketës së saj: std_logic_1164.

LIBRARY ieee;

USE ieee.std_logic_1164.ALL

9
Entitetet, Arkitekturat dhe Konfigurimet
________________________________________________________________

 Struktura e një projektimi me gjuhën VHDL I ngjan strukturës së


projektimit modern me një program (softëare) të orjentuar nga
objekti.
 Të gjitha projektimet VHDL furnizojnë një ndërfaqe të jashtme dhe një
realizim (implementim) të brendëshëm.
 Një projektim VHDL përbëhet nga entitete, arkitektura dhe
konfigurime.
Entity

1 Co
nf
Configuration 2

n ig
io ur
at at
gur io
i n
nf n
Co

Architecture 1 ....... Architecture n

Architecture 2

10
Entitet-et1
_____________________________________________________

 Një entitet është një specifikim i ndërfaqes së jashtëme të projektimit.


 Deklarimi i entitetit specifikon:

1. Emrin e entitetit.
2. Një komplet (seri) deklaratash të përgjithëshme2 që specifikojnë
parametrat specifike të projektimit.
3. Një komplet deklarime portash, që definojnë (përcaktojnë) hyrjet dhe
daljet e qarkut që projektohet.

 Deklarimet e përgjithëshme dhe deklarimet e portave janë fakultative.

1
Entity (ang) = Entitet, qënie, njësi, objekt
2
Generic Declarations

11
Deklarimet e Entitet-eve
______________________________________________________________

Deklarimet e entiteteve specifikohen si më poshtë:

ENTITY entity_name IS
GENERIC (
generic_1_name : generic_1_type;
generic_2_name : generic_2_type;
generic_n_name : generic_n_type
);
PORT (
Port_1_name : port_1_dir port_1_type;
Port_2_name : port_2_dir port_2_type;
Port_n_name : port_n_dir port_n_type
);
END entity_name;

12
Shembull i deklarimit të Entitetit
_____________________________________________________

 Më poshtë jepet shembulli i deklarimit të Entitetit të një porte AND:

ENTITY andgate IS
PORT ( a : IN std_logic;
b : IN std_logic;
c : OUT std_logic );
END andgate;

SHËNIM:
Në deklarimin e PORTËS,
pikëpresja përdoret si
ndarëse

13
Portat
_____________________________________________________
 Emri i Portës :

- Përbëhet nga gërma, shifra dhe/ose nënvijëzime3


- Fillon gjithëmonë me gërmë
- Gërmat mund të jenë të mëdha ose të vogla

 Drejtimet e portës:
SHËNIM:
IN Input port
Një buffer është një dalje, që
OUT Output port
mund të ‘lexojë” nga
INOUT Bidirectional port
arkitektura e entitetit
BUFFER Buffered output port

3
(ang) underscore

14
Portat (vazhdim)
_____________________________________________________

 Standarti IEEE 1164-1993 definon një paketë me një komplet tipesh të


dhënash4, që përdoren me sukses për sintezën logjike.

- Terminalet e qarkut të sintetizuar duhet të përdorin tipe të dhënash, që


specifikohen në paketën std_logic_1164.
- IEEE rekomandon përdorimin e tipeve të mëposhtëm të të dhënave, për
paraqitjen e sinjaleve në një qark (system) që sintetizohet:

Std_logic

Std_logic_vector (<max> DOËNTO <min>)

4
(ang) Data types

15
Arkitektirat
_____________________________________________________

 Një arkitekturë është një specifikim për implementimin e brendëshëm


të projektit.

 Për një entitet mund të krijohen (përcaktohen) shumë arkitektura.

 P.sh. mund të dëshirojmë të krijojmë disa arkitektura për një entitet


të caktuar, ku çdo arkitekturë optimizohet të plotësojë kërkesa në
respect të:

- Performancës,
- Sipërfaqes së integrimit,
- Konsumit të energjisë
- lehtësisë në simulim

16
Deklarimet e Arkitekturës
_____________________________________________________

 Deklarimet e Arkitekturës specifikohen si më poshtë:

ARCHITECTURE architecture_name OF entity_name IS


BEGIN
-- Harto instruksionet VHDL për të korreluar
-- daljet (terminalet e daljes) me sejcilin
-- sinjal të daljes të definuar në deklarimin
-- e Entitetit.
END architecture_name;

17
Shembull i deklarimit të Arkitekturës
_____________________________________________________

 Më poshtë jepet shembulli i deklarimit të një arkitekture për një


portë AND:

ARCHITECTURE synthesis1 of andgate IS


BEGIN
C <= a AND b;
END synthesis1

SHËNIM:
Fjala kyçe AND shënon
përdorimin e një porte AND

18
Konfigurimet
_____________________________________________________

 Një konfigurim është një specifikim për të planifikuar lidhjen5 midis një
arkitekture dhe entitetit.

 Nënkuptohet, një konfigurim ekziston për çdo entitet.

 Konfigurimi lidh (maps) arkitekturën më të fundit të kompiluar me


entitetin

 Në shumicën e rasteve, konfigurimet përdoren për të specifikuar


arkitektura alternative për çdo projektim hardëare.

5
(Ang) Mapping

19
Sinjalet
_____________________________________________________

 Sinjalet përfaqësojnë fijet dhe elementët e kujtesës6

 Sinjalet mund të definohen vetëm Brenda një arkitekture

 Sinjalet shoqërohen me tipin e të dhënave

 Sinjalet kanë attribute

 VHDL është një gjuhë e lidhur fort me tipin e të dhënave:

- Mbështet shndërrimet e tipit explicit


- Nuk mbështet shndërrimet e tipit implicit

6
(ang) wires and storage elements

20
Përfaqësitë e sinjalit
_____________________________________________________

 Përfaqësitë e numërave binar janë të mjaftueshëm për gjuhët


softëare të programimit

Binary
Forcing 1 ‘1’ Forcing 0 ‘0’

 Fijet fizike nuk mund të modelohen me saktësi me anë të përfaqësive


të numërave binar.

 Vlera shtesë janë të nevojëshme për të paraqitur me saktësi gjëndjen


e sinjalit në fijet fizike lidhëse.

21
Përfaqësitë e logjikës me vlera të shumëfishta
_____________________________________________________

 Përfaqësitë e MVL (Multi-valued Logic) japin vlera shtesë, të


nevojëshme për paraqitjen e sinjaleve të panjohur dhe me rezistencë
të lartë.

 Standarti ieee.std_logic_1164 ka definuar dy përfaqësi sinjalesh me multi-


vlera:

- MVL - 4
- MVL – 9

22
MVL – 4
_____________________________________________________

 MVL – 4 shton dy vlera (‘X’ dhe ‘Z’) për të modeluar gjendjen apo
vlerën e sinjaleve me më shumë saktësi:

MVL - 4
Forcing 1 ‘1’ Forcing Unknown ‘X’
Forcing 0 ‘0’ High Impedance ‘Z’

 Fijet lidhëse mund të komandohen me vlera të shumëfishta

 MVL – 4 përdoret rrallë, meqenëse nuk jep vlera të shumta për të


modeluar saktësisht sinjalet.

23
MVL - 9
_____________________________________________________

 MVL – 9 shton 5 vlera të tjera për të modeluar me shumë saktësi vlerat


e sinjaleve:

MVL - 9
Uninicialized ‘U’ Weak 1 ‘H’
Don’t Care ‘-‘ Weak 0
Forcing 1 ‘1’ Forcing Unknown ‘X’
Forcing 0 ‘0’ High Impedance ‘Z’
Forcing Unknown ‘X’

 Sinjalet mund të komandohen me vlera të shumëfishta


 Sinjalet mund të përcaktohen mbas zgjidhjes së vlerave konfliktuale.

24
Më shumë për përfaqësinë MVL-9
____________________________________________________
 Katër tipe të standartizuara përdorin MVL-9:

Tipet e papërcaktuara ( të pazgjidhura, të pastabilizuara )7

Std_ulogic
Std_ulogic_vector ( <max> DOWNTO <min> )

Tipet e përcaktuara
Std_logic
Std_logic_vector ( <max> DOWNTO <min> )

 Tipet e përcaktuara përdorin të ashtuquajturit funksione rezolucioni8


për të përcaktuar vlerën e sinjalit, kur njëkohësisht mbi të veprojnë
vlera konfliktuale.

7
(ang) Unresolved Types
8
(ang) resolution functions

25
Tipet e të dhënave
____________________________________________________

 VHDL mbështet një komplet të pasur të tipeve të të dhënave, si dhe


tipe të të dhënave të definuara nga përdoruesi.

Tipet e të dhënave Karakteristikat


BIT Binary,
BIT_VECTOR Binary, Array
INTEGER Binary, Array
Real Floting Point

 Këto tipe të dhënash janë mjaft të përshtatëshme për simulim, por jo


për sintetizim.
 Gjithashtu, këto tipe të dhënsh vlejnë për përdorim brenda një
arkitekture, por nuk mund të përdoren për terminalet e jashtëme.
26
Sintetizimi në raport me simulimin
____________________________________________________
 Të gjitha projektimet e sintetizuara mund të simulohen
 Jo të gjitha simulimet mund të sintetizohen

Le të konsiderojmë kodin VHDL të mëposhtëm:

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;

ENTITY simple_boffer IS
PORT ( din : std_logic;
Dout : std_logic );
END simple_buffer;

ARCHTITECTURE behaviourall OF simple_buffer IS


BEGIN
dout <= din AFTER 10 ns;
END behaviorall;

27
Sintetizimi në raport me simulimin (vazhdim)
____________________________________________________

 Hyrja din jep vlerë në dout pas 10 ns.

- A përfaqëson kjo një system të botës reale? Po


- A mund të realizohet kjo në një chip (element të program.)? Ndofta
- A mund të realizohet në të gjitha chipet? Jo

 Kjo arkitekturë mund të simulohet por jo të sintetizohet.

 Disa mjete hyrëse të projektimit VHDL mund të lejojnë vetëm


përdorimin e fjalëve kyçe sintetizuese.

 Shumica e mjeteve kuptojnë vetëm një nënbashkësi të VHDL93.

28
Operatorët logjikë
____________________________________________________

 VHDL mbështet operatorët logjikë të mëposhtëm:

AND NAND NOT


OR NOR
XOR XNOR

 VHDL mbështet gjithashtu edhe operatorë të tjerë dhe krijimin e


operatorëve të rinj duke shfrytëzuar funksionet.

29
Operatorë të tjerë
____________________________________________________

 Gjuha VHDL mbështet operatorët relacionalë të mëposhtëm:

= (Equal)
/= (Not equal)
< (Less Than)
> (Grater Than)

 VHDL mbështet operatorët matematikë të mëposhtëm:

+ (Addition)
- (Subtraction)
* (Multiplication)
/ (Division)

30
Instruksionet e dhënies së vlerës9
____________________________________________________

SIGNAL a, b, c :std_logic;
SIGNAL avec, bvec, cvec : std_logic_VECTOR ( 7 DOWNTO 0);

-- Concurrent Signal Assignment Statements


-- NOTE: Both a and avec are produced concurrently
a <= b AND c;
avec <= bvec OR cvec;

-- Alternatively, Signals may be assigned constants


a <= ‘0’;
b <= ‘1’;
c <= ‘Z’;
avec <= “00111010”; -- Assigns 0x3A to avec
bvec <= X“3A”; -- Assigns 0x3A to avec
cvec <= X“3” & X“A”; -- Assigns 0x3A to avec

9
(ang) Assignment Statements

31
Instruksionet e dhënies së vlerës (vazhdim)
____________________________________________________
SIGNAL a, b, c, d : std_logic;
SIGNAL avec : std_logic_vector (1 DOWNTO 0);
SIGNAL bvec : std_logic_vector (2 DOWNTO 0);

-- Conditional Assignment Statement


-- NOTE: This implemnts a tree structure of logic gates
a <= ‘0’ WHEN avec = “00” ELSE
b WHEN avec = “11” ELSE
c WHEN d = ‘1’ ELSE
‘1’;

-- Selected Signal Assignment Statement


-- NOTE: The selection values must be constants
bvec <= d AND avec;
WITH bvec SELECT
a <= ‘0’ WHEN “000”,
b WHEN “011”,
c WHEN “1-—” -- Some tools won’t synthesize ‘-’
-- properly
‘1’ WHEN OTHERS;

32
Instruksionet e dhënies së vlerës (vazhdim)
____________________________________________________

SIGNAL a :std_logic;
SIGNAL avec, bvec :std_logic_VECTOR ( 7 DOWNTO 0);

-- Selected Signal Assignment Statement


-- NOTE: Selected signal assignment also work
-- with vectors

WITH a SELECT
avec <= “01010101” WHEN ‘1’,
Bvec WHEN OTHERS;

33
Instruksionet Process
___________________________________________________
 VHDL mbështet proceset.
 Proceset përmbledhin pjesë të projektimit
 Proceset përmbajnë një listë të ndjeshme10 që specifikon sinjalet dhe
portat, të cilat shkaktojnë ndryshime në daljet e procesit.

- Listat e ndjeshme mund të përdoren për të ruajtur gjendjet e


ndërmjetme të sistemit hardware

 P.sh. një flip-flop (FF) i trigeruar nga kërcimet është i ndjeshëm ndaj frontit të
përparmë apo të prapëm të kërcimit të impulsit clock.

- Si rrjedhojë, dalja e këtij flipflopi ndryshon vetëm pas ardhjes së këtij


fronti (kërcimi).
- Ndryshe flip-flopi ruan gjendjen e mëparëshme.

10
(ang) Sensitivity List

34
Instruksionet Process
____________________________________________________
 Fjalët kyçe të përdorura për dhënien e vlerave të kushtëzuara11 dhe të
selektuara12 ndryshojnë nga ato të përdorura brënda një procesi.

Jashtë procesit Brenda procesit


WHEN…ELSE IF…ELSIF…ELSE…END IF
WITH…SELECT..WHEN CASE…WHEN…END CASE

 Një “select assignment’ jashtë procesit është nga pikëpamja funksionale


ekuivalente me instruksionin Case brënda procesit.

 Procesi mund të përdoret edhe për logjikën kombinatore, por më shpesh


procesi përmbledh logjikën sekuenciale.

11
(ang) conditional assignments
12
(ang) selected assignments

35
Instruksionet process (vazhdim)
____________________________________________________
SIGNAL reset, clock, d, q :std_logic;

PROCESS (reset, clock)


-- reset and clock are in the sensitivity List to
-- indicate that they are important imputs to the process
BEGIN
-- IF keyword is only valid in a process
IF (reset = ‘0’) THEN
q <= 0;
ELSIF (clock ‘EVENT AND clock = ‘1’) THEN
q <= d;
END IF;
END PROCESS

Atributi EVENT është i vërtetë


nëqoftëse një kërcim detektohet
në sinjalin korespondues.

36
Instruksionet process (vazhdim)
____________________________________________________

SIGNAL a, b, c, d :std_logic;

PROCESS (a, b, d)
-- a, b and d are in the sensitivity list to indicate that
-- the outputs of the process are sensitive to changes in them
BEGIN
-- CASE keyëord is only valid in a process
CASE d IS
When ‘0’ =>
C <= a AND b;
WHEN OTHERS =>
C <= ‘1’;
AND CASE;
END PROCESS;

SHËNIM
Programi Implementon
një qark kombinator.

37
Shembulli i realizimit të një flip-flopi
____________________________________________________

 Një flip-flop mund të specifikohet duke përdorur një proces dhe atributin
EVENT të një sinjali
 Atributi EVENT mund të përdoret për të kontrolluar kërcimin e sinjalit
(impulsit) clock.
 Simboli i një flip-flop-i tregohet më poshtë:

38
Specifikimi VHDL I një flip-flopi
______________________________________________________
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY dffe IS
PORT (rst,clk,ena,d : IN std_logic;
q : out std_logic );
END dffe;

ARCHITECTURE synthesis1 OFF dffe IS


BEGIN
PROCESS (rst, clk)
BEGIN
IF (rst = ‘1’) THEN
Q <= ‘0’;
ELSIF (clk’EVENT) AND (clk = ‘1’) THEN
IF (ena = ‘1’) THEN
q <= d;
END IF;
ENF IF;
END PROCESS;
END synthesis1;

39
Qarqet sekuenciale komplekse
______________________________________________________

 Qarqet komplekse mund të ndërtohen duke përdorur makinat e gjendjeve të


fundme FSM13.

 FSM-të mund të specifikohen lehtë duke përdorur proceset dhe instruksionin


CASE.

 Për të interesuarit, në dy slide-t që pasojnë, jepet një FSM e specifikuar në


VHDL.

13
(ang) Finite State Machines

40
Shembulli i një makine gjendjesh të fundme
______________________________________________________

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY vending IS:
PORT (
reset :IN std_logic;
clock :IN std_logic;
buttons :IN std_logic_vector_(1 DOWNTO 0);
lights :OUT std_logic_vector_(1 DOwNTO 0)
);
END vending

41
Shembulli i një makine gjendjesh të fundme (vazhdim)
_________________________________________________________________

ARCHITECTURE synthesis 1 OF vending IS


TYPE STATETYPE is (Idle, Opt1, Opt2, Error);
SIGNAL currentstate, nextstate : statetype;
BEGIN
Fsm1: PROCESS (buttons, currentstate)
BEGIN
CASE currentstate IS
WHEN Idle =>
lights <= “00”
CASE buttons IS
WHEN “00” =>
nextstate <= Idle;
WHEN “01” =>
nextstate <= Opt1;
WHEN “10” =>
nextstate <= Opt2;
WHEN OTHERS =>
nextstate <= Error;
END CASE;

42
Shembulli i një makine gjendjesh të fundme (vazhdim)
_________________________________________________________________

WHEN Opt1 =>


lights <= “01”;
IF buttons /= “01” THEN
nextstate <= Idle;
END IF;

WHEN Opt2 =>


lights <= “10”;
IF buttons /= “10” THEN
nextstate <= Idle;
END IF;
WHEN Error =>
lights <= “11”;
IF buttons = “00” THEN
nextstate <= Idle;
END IF;
END CASE;
END PROCESS;

43
Shembulli i një makine gjendjesh të fundme (vazhdim)
_________________________________________________________________

fsm2: PROCESS (reset, clock)


BEGIN
IF (reset = ‘0’) THEN
Currentstate <= Idle;
ELSEIF (clock’EVENT) AND (clock = ‘1’) THEN
Currentstate <= nextstate;
END IF;
END PROCESS;
END synthesis1;

44
Shembuj të VHDL
_________________________________________________________________

 Slide-t që pasojnë përfaqësojnë shembuj të kodeve VHDL të sintetizuar.

 Do të ishte Ideale, t’ju jepni përgjigje pyetjeve, përpara se të shikoni


zgjidhjet.

- Zgjidhjet e dhëna mund të simulohen dhe sintetizohen duke përdorur


çfarëdo mjetesh sintetizuese VHDL, që keni në dispozicion.

45
Shembulli 1a
(logjikë kombinatore)
_________________________________________________________________

 Projektoni një entitet VHDL të quajtur andnand për të specifikuar


ndërfaqen e qarkut të mëposhtëm:

 Përdorni std_logic për tipin e sinjalit të portave për të gjitha terminalet


hyrëse dhe dalëse.

46
Zgjidhja e shembullit 1a
_________________________________________________________________

 Përshkrimi VHDL i entitetit andnand është si më poshtë:

ENTITY andnand IS
PORT ( a :IN std_logic;
b :IN std_logic;
q :OUT std_logic;
qbar :OUT std_logic );
END endnand;

47
Shembulli 1b
(logjikë kombinatore)
_________________________________________________________________

 Projektoni një arkitekturë VHDL për të specifikaur implementimin e


brendëshëm të qarkut andnand.

 Emëroni arkitekturën synthesis1.

48
Zgjidhja e shembullit 1b
_________________________________________________________________

ARCHITECTURE synthesis1 OF andnand IS


BEGIN
q <= a AND b;
qbar <= a NAND b;
AND synthesis1;

49
Shembulli 2a
(logjikë kombinatore)
_________________________________________________________________
 Projektoni një entitet VHDL të quajtur quadmux për të specifikuar
ndërfaqen e katër multiplekserave me dy hyrje, bllokskema e të cilit jepet
në figurën e mëposhtëme:

Port Type Width Direction


a Std_logic_vector 4 IN
b Std_logic_vector 4 IN
sel Std_logic 1 IN
c Std_logic_vector 4 OUT

50
Zgjidhja e shembullit 2a
_________________________________________________________________

ENTITY quadmux IS
PORT ( a : IN std_logic_vector (3 DOWNTO 0);
b : IN std_logic_vector (3 DOWNTO 0);
sel IN std_logic;
c : IN std_logic_vector (3 DOWNTO 0);
END quadmux;

51
Shembulli 2b
(logjikë kombinatore)
_________________________________________________________________

 Projektoni një arkitekturë VHDL për të specifikuar implementimin e


brendëshëm të qarkut quadmux.

 Kujtojmë që për 4 multipleksera me dy hyrje tabela e vërtetësisë është:

sel c [3…0]
0 a [3…0]
1 b [3…0]

 Emëri i arkitekturës është synthesis1.


52
Zgjidhja e shembullit 2b
_________________________________________________________________

ARCHITECTURE synthesis1 of quadmux IS


BEGIN
WITH sel SELECT
C <= a WHEN ‘0’;
B WHEN OTHERS;
END synthesis1;

53
Shembulli 3
(logjikë kombinatore)
_________________________________________________________________

 Projekto dhe sintetizo specifikimin e një qarku për kontrollin e një display
me 7 segmente 14.
 Bllokskema e këtij qarku tregohet në figurën e mëposhtëme:

14
(ang) Seven Segment Display Controller

54
Zgjidhja e shembullit 3
_________________________________________________________________
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY seven_seg IS
PORT ( dataIn :IN std_logic_vector_(3 DOWNTO 0);
sements :OUT std_logic_vector_(7 DOWNTO 0) );
END seven_seg;

ARCHITECTURE synthesis1 of seven_seg IS


BEGIN
WITH dataIn SELECT
Segments <= “10000001” WHEN “0000”, --0
“11001111” WHEN “0000”, --1
“10010010” WHEN “0000”, --2
“10000110” WHEN “0000”, --3
“11001100” WHEN “0000”, --4
“10100100” WHEN “0000”, --5
“10100000” WHEN “0000”, --6
“10001111” WHEN “0000”, --7
“10000001” WHEN “0000”, --8
“10000100” WHEN “0000”, --9
“11111111” WHEN OTHERS;
END synthesis1;

55
Shembulli 1
(Logjikë sekuenciale)
_________________________________________________________________

 Projektoni një specifikim VHDL të sintetizueshëm të një regjistri me 8 bit,


me një sinjal aftësues (enable) dhe një sinjal reset-imi asinkron.

 Bllokskema e regjistrit me 8bit është si më poshtë:

56
Zgjidhja e shembullit 1
_________________________________________________________________
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY dregister IS
PORT ( rst, clk, ena :IN std_logic;
d :IN std_logic_vector_(7 DOWNTO 0);
q :IN std_logic_vector_(7 DOWNTO 0);
END dregister;

ARCHITECTURE synthesis1 of dregister IS


BEGIN
PROCESS (rst, clk)
BEGIN
IF (rst = ‘1’) THEN
q <= X“00”;
ELSIF (clk’EVENT) AND (clk = ‘1’) THEN
IF (ena = ‘1’) THEN
q <= d;
END IF;
END IF;
END PROCESS;
END synthesis1;

57
Shembulli 2
(Logjikë sekuenciale)
_________________________________________________________________

 Projektoni një implementim VHDL të sintetizueshëm të një numëratori me


32 bit me një sinjal enable dhe një sinjal reset-imi asinkron.

 Bllokskema e këtij numëratori është si më poshtë:

58
Zgjidhja e shembullit 2
_________________________________________________________________

LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY counter IS
PORT (
reset :IN std_logic;
clock :IN std_logic;
enable :IN std_logic;
value :out std_logic_vector (31 DOWNTO 0)
);
END counter;

59
Zgjidhja e shembullit 2 (vazhdim)
_________________________________________________________________
ARCHITECTURE synthesis1 of counter IS

-- The onsigned type is used


SIGNAL count : unsigned (31 DOWNTO 0); -- so that unsigned arithmetic
-- Will be synthesized

BEGIN
PROCESS (rst, clk)
BEGIN
IF (reset = ‘1’) THEN
count <= X“00000000”;
ELSIF (clock’EVENT) AND (clock = ‘1’) THEN
IF (enable = ‘1’) THEN
count <= count + 1;
END IF;
END IF;
END PROCESS;
-- Here,the count value
Value <= std_logicvector (count) -- is converted to
-- std_logic_vector
-- using a conversion function
END SYNTHESIS1

60
FUND
_______________________________________________________

Faleminderit

61

You might also like