laborator7jh

11
UNIVERSITATEA “ŞTEFAN CEL MARE” SUCEAVA FACULTATEA DE INGINERIE ELECTRICĂ ŞI ŞTIINŢA CALCULATOARELOR LABORATOR nr. 7 VHDL. Latch-uri. Bistabile. Proiectarea unui microprocesor. 1. Scopul laboratorului În cadrul acestei lucrări se urmăresc două obiective: 1. Prezentarea latch-urilor şi a bistabilelor din VHDL. 2. Coduri VHDL pentru latch-uri şi bistabile. 2. Teorie VHDL 3. Consideraţii teoretice pentru latch-uri şi bistabile 3.1 Latch-uri şi bistabile Până acum s-au studiat circuitele logice combinaţionale, cu accent pe acele scheme tipice UCP-urilor şi anume sumatoare în cascadă şi cu transport anticipat, circuitele de scădere, de deplasare şi rotaţii stânga/ dreapta, multiplexoare şi decodificatoare adică într-un cuvânt Unitatea Aritmetică şi logică. În continuare ne vom îndrepta atenţia asupra circuitelor logice secvenţiale prin intermediul cărora vom proiecta calea de date şi unitatea de control a microprocesorului.. Reamintim că ieşirile circuitelor secvenţiale sunt dependente nu doar de intrările lor curente (ca şi la circuitele combinaţionale) dar şi de intrările anterioare. Din cauza acestei necesităţi de amintire a istoriei intrărilor, circuitele secvenţiale trebuie să conţină elemente de memorie. Latch-urile şi bistabilele sunt elementele principale de memorie pentru stocarea de informaţie. Prin urmare, sunt blocurile de construcţie fundamentale pentru toate circuitele secvenţiale. Un singur latch sau bistabil poate stoca doar un bit de informaţie. Acest bit de informaţie care este stocat în latch sau 1

Upload: betta55

Post on 21-Nov-2015

7 views

Category:

Documents


5 download

DESCRIPTION

hvjh

TRANSCRIPT

LABORATOR nr

UNIVERSITATEA TEFAN CEL MARE SUCEAVA

FACULTATEA DE INGINERIE ELECTRIC I TIINA CALCULATOARELOR

LABORATOR nr. 7 VHDL. Latch-uri. Bistabile.Proiectarea unui microprocesor. 1. Scopul laboratorului

n cadrul acestei lucrri se urmresc dou obiective:

1. Prezentarea latch-urilor i a bistabilelor din VHDL.2. Coduri VHDL pentru latch-uri i bistabile.2. Teorie VHDL3. Consideraii teoretice pentru latch-uri i bistabile3.1 Latch-uri i bistabile

Pn acum s-au studiat circuitele logice combinaionale, cu accent pe acele scheme tipice UCP-urilor i anume sumatoare n cascad i cu transport anticipat, circuitele de scdere, de deplasare i rotaii stnga/ dreapta, multiplexoare i decodificatoare adic ntr-un cuvnt Unitatea Aritmetic i logic. n continuare ne vom ndrepta atenia asupra circuitelor logice secveniale prin intermediul crora vom proiecta calea de date i unitatea de control a microprocesorului.. Reamintim c ieirile circuitelor secveniale sunt dependente nu doar de intrrile lor curente (ca i la circuitele combinaionale) dar i de intrrile anterioare. Din cauza acestei necesiti de amintire a istoriei intrrilor, circuitele secveniale trebuie s conin elemente de memorie.

Latch-urile i bistabilele sunt elementele principale de memorie pentru stocarea de informaie. Prin urmare, sunt blocurile de construcie fundamentale pentru toate circuitele secveniale. Un singur latch sau bistabil poate stoca doar un bit de informaie. Acest bit de informaie care este stocat n latch sau bistabil este denumit starea unui latch sau flip-flop. Prin urmare, un latch sau bistabil poate fi n una din cele dou stri: 0 sau 1. Spunem c un latch sau bistabilul i schimb starea atunci cnd coninutul acestuia se schimb din 0 n 1 i invers. Aceast valoare a strii este ntotdeauna disponibil la ieire. n consecin, coninutul unui latch sau bistabil reprezint valoarea strii i este ntotdeauna egal cu valoarea ieirii.

Diferena principal dintre latch i un bistabil este aceea c pentru un latch starea sau ieirea este constant afectat de ctre intrarea sa att timp ct semnalul de validare este activ. Cu alte cuvinte, atunci cnd un latch este activat, starea sa se schimb imediat atunci cnd se schim i intrarea. Atunci cnd un latch este dezactivat, starea rmne constant, i prin urmare este memorat valoarea anterioar. Pe de alt parte, un bistabil i schimb starea doar la un front activ al semnalului de activare, cum ar fi momentul precis n care semnalul trece din 0 n 1 (definit ca frontul cresctor al semnalului), sau cnd trece din 1 n 0 (front cztor). Totui, pe durata ct semnalul de validare (ceasul) este constant, 1 sau 0, starea bistabilului rmne constant chiar dac se schimb intrarea.

ntr-un sistem cu microprocesor, de obicei, dorim ca schimbrile s se fac precis la acelai moment de timp. Prin urmare, bistabilele sunt utilizate mai des dect latch-urile, din moment ce toate pot fi sincronizate s-i schimbe valoarea doar frontul activ al semnalului de validare (ceasului). Acest semnal de activare pentru bistabile este de obicei un semnal de ceas controlat global.

Din punct de vedere istoric, exist patru tipuri principale de baz de bistabil: SR, D, JK i T. Diferena principal dintre ele este numrul de intrri pe care le pot avea i cum pot fi schimbate coninuturile lor. Orice circuit secvenial propus poate fi construit utiliznd oricare dintre aceste tipuri de bistabile (sau combinaii dintre acestea). Totui, selectarea unui tip de bistabil n loc de altul poate afecta mrimea general a circuitului. Astzi, majoritatea circuitelor secveniale sunt proiectate cu bistabile de tip D din cauza uurinei n utilizarea lor. De aceea, ne vom concentra n principal doar pe bistabile de tip D.

n acest capitol, vom vedea cum sunt proiectate i cum funcioneaz latch-urile i bistabilele. Din moment ce bistabilele sunt inima circuitelor secveniale, n proiectarea microprocesoarelor este foarte important o bun nelegere a modului cum sunt proiectate i cum funcioneaz. 3.1.1 Latch-ul de tip SRCircuitul din figura 3-1 este denumit latch SR. n completarea celor dou ieiri Q i Q, mai sunt dou intrri S i R respectiv pentru setare i resetare. Latch-ul SR poate fi n una din cele dou stri: o stare de setare atunci cnd Q=1 sau o stare de resetare atunci cnd Q=0. Deoarece S i R sunt negate nseamn c sunt active pe 0.

n figura 3-1 sunt prezentate schema circuitului utiliznd pori NAND, tabelul de adevr, simbolul i evoluia n timp a circuitului SR.

Figura 3-1 Latch SR: (a) circuit utiliznd pori NAND; (b) tabela de adevr; (c) simbolul logic; (d) evoluia n timp.

Reamintim c pentru bistabilele sau latch-urile de tip SR combinaia 00 (pentru implementarea cu pori NAND sau 11 pentru implementarea cu pori NOR) este interzis. n figura 3-2 se prezint bistabilul latch SR implementat cu pori NOR.

Figura 3-2. Latch-ul SR: (a) circuit utiliznd pori NOR; (b) tabela de adevr; (c) simbolul logic.

3.1.2 Activarea Latch-ului SR

Latch-ul SR este tot timpul sensibil la intrri. n figura 3-3 se prezint un latch cu semnal de validare. Ct timp semnalul de validare este pe 1, latch-ul este transparent, adic orice modificare a intrrilor determin modificarea ieirii n conformitate cu tabelul de adevr. Trecerea n 0 a semnalului de validare face ca ultima informaie de la ieire s fie memorat (latch zvort) att timp ct semnalul rmne pe 0. Se obine un latch cu activare. n figura 3-3 sunt prezentate schema circuitului utiliznd pori NAND, tabelul de adevr, simbolul i evoluia n timp a circuitului SR.

Figura 3-3. Latch-ul SR cu activare: (a) circuit utiliznd pori NAND; (b) tabela de adevr; (c) simbolul logic; (d) evoluia n timp. 3.1.3 Latch de tip D

n figura 3-4, legnd un inversor ntre intrarea R i S se elimin situaia interzis cnd ambele intrri sunt pe 0. Se obine astfel un bistabil de tip D. Dup cum se poate observa acest bistabil copie valoarea intrrii la ieire i are proprietatea de memorare dac intrarea nu se schimb. Fr prezena unei intrri de validare, bistabilul nu are aplicaii. Ca urmare, trebuie trecut la bistabilul de tip D cu validare.

Figura 3-4. Latch-ul D: (a) circuit care folosete pori NAND; (b) tabela de adevr; (c) simbolul logic.3.1.4 Latch-ul D cu activare

Schema din figura 3-5, care utilizeaz un multiplexor comandat de semnalul de validare E, rezolv problema zvorrii. Ct E este pe 0 bistabilul de tip D este zvort intrarea copiind ieirea, iar ct timp D este pe 1 logic bistabilul copie n mod transparent intrarea la ieire.

Figura 3-5. Latch-ul de tip D cu validare: (a) circuit care folosete pori NAND; (b) tabela de adevr; (c) simbolul logic (d) evoluia n timp.

3.1.5 Ceasul

Latch-urile sunt cunoscute i ca sensibile pe nivel (sau transparente) deoarece ieirile lor sunt afectate de ctre intrri att timp ct acestea sunt validate. Starea lor de memorie se poate schimba pe durata ct semnalul de validare este activ.

ntr-un circuit al calculatorului, totui, nu dorim ca starea memoriei s se schimbe ct timp semnalul de validare este activ. De fapt, am dori s sincronizm toate schimbrile strii pentru a se ntmpla la un moment de timp precis i la intervale regulate. Pentru a se ndeplini acest lucru sunt necesare dou lucruri: 1) un semnal de sincronizare i 2) un circuit de memorie care s nu fie sensibil pe nivel.

Un semnal de ceas este pur i simplu un semnal rectangular aa cum este prezentat n figura 3-6. Vom numi frontul semnalului de ceas, atunci cnd i schimb valoarea din 0 n 1, un front cresctor (rising edge). Invers, frontul descresctor (falling edge) al ceasului este frontul cnd semnalul se schimb din 1 n 0. Vom folosi simbolul ( pentru a arta frontul cresctor i ( pentru frontul descresctor. ntr-un circuit al calculatorului, poate fi folosit fie frontul cresctor fie frontul descresctor al ceasului ca un semnal de sincronizare pentru a scrie data ntr-un element de memorare. Acest front al semnalului se refer la frontul de activare a ceasului. n toate exemplele noastre, vom utiliza frontul cresctor al ceasului ca un front de activare. Prin urmare, la fiecare front cresctor, data va fi nchis sau stocat n elementul de memorare. Un ciclu de ceas dureaz ntre un front cresctor i urmtorul front cresctor sau de la un front cztor la urmtorul front cztor de ceas. Viteza ceasului, msurat n heri (Hz) este numrul ciclilor pe secund. Tipic, viteza ceasului pentru un microprocesor din sistemele embedded (nglobat) funcioneaz n jurul frecvenei de 20 MHz, n timp ce un microprocesor pentru un calculator personal (PC) funcioneaz pn la 2-3 GHz i chiar mai sus. O perioad de ceas este timpul pentru un ciclu de ceas (secunde pe ciclu), prin urmare este doar inversul vitezei ceasului.

Viteza ceasului este determinat de ct de repede poate produce un circuit rezultate valide. De exemplu, un circuit combinaional cu dou nivele va avea rezultate valide la ieire mult mai repede dect poate scoate un ALU. Bineneles, vom dori ca viteza ceasului s fie ct mai rapid cu putin, dar poate fi att de rapid nct s funcioneze i circuitul cel mai lent.

Figura 3-6 prezint o descriere VHDL a unui circuit divizor al ceasului care divide un ceas de 25 MHz pn la 1 Hz.

Figura 3-6. Semnalul de ceas

Figura 3.7. Descrierea comportamental VHDL a unui circuit divizor de ceas.

3.1.6 Bistabile de tip D

Din nefericire pentru latch, un bistabil nu este sensibil pe nivel, ci este triggerat pe front. Cu alte cuvinte, data se stocheaz ntr-un bistabil doar la un front activ al ceasului. Un bistabil de tip D activ pe front se obine prin legarea n serie a unui ir de latch-uri de tip D. n figura 3-8 se prezint un bistabil de tip D activ pe front pozitiv, obinut prin conectarea n serie a dou latch-uri de tip D. Semnalul de ceas Clk este conectat la intrarea E ale celor dou latch-uri: unul direct i unul printr-un invertor.

Primul latch este denumit latch principal (master). Latch-ul master este activat atunci cnd Clk =0 deoarece inversorul activeaz latch-ul MASTER. Ieirea masterului QM copie datele de pe intrare. Totui, semnalul de la QM nu poate trece ctre ieirea principal Q, deoarece al doilea latch (denumit latch slave) este dezactivat cnd Clk=0. Atunci cnd Clk=1, latch-ul master este dezactivat (zvort) dar latch-ul slave este activat astfel nct ieirea de la lach-ul master, QM, este transferat ctre ieirea principal Q. Lach-ul slave se activeaz atunci cnd Clk=1 dar coninutul se schimb doar la un front cresctor al ceasului, deoarece odat ce Clk este pe 1, latch-ul master este dezactivat iar intrarea latch-ului slave, QM, va fi constant. Prin urmare, cnd Clk=1 i latch-ul slave este activat, ieirea principal Q nu se va schimba deoarece nu este schimbat intrarea QM.

Circuitul prezentat n figura 3-8 (a) este numit bistabil cu front pozitiv deoarece ieirea principal Q de pe latch-ul slave se schimb doar la frontul cresctor al ceasului. Dac latch-ul slave este activat cnd ceasul este pe 0 (de ex., cu ieirea invertorului conectat la intrarea E al latch-ului slave), atunci ne vom referi la un bistabil cu front triggerat negativ. Circuitul este denumit i la bistabil de tip D master-slave deoarece se utilizeaz n circuit dou latch-uri de tip D.

Triunghiul mic de pe intrarea de ceas simbolizeaz c bistabilul este activ pe front. Prezena unui cerc n faa triunghiului ne-ar spune c bistabilul este activ pe front negativ. Reamintim c denumirea Q reprezint starea curent, Qnext starea urmtoare (viitoare) i Q` reprezint negatul lui Q. Figura 3-8 Bistabil de tip D triggerat pe front pozitiv master-slave: (a) circuit utiliznd latch-uri de tip D; (b) tabela de operaii; (c) simbolul logic; (d) evoluie n timp.

Figura 3-9. Comparaie a unui latch, cu un bistabil triggerat pe front pozitiv i un bistabil triggerat pe front negativ: (a) circuit; (b) evoluie n timpn figura 3-9 se compar un latch (a), un bistabil activ pe front pozitiv (b) i un bistabil activ pe front negativ (c)3.1.7 Bistabil de tip D cu activare

n figura 3-10 se prezint circuitul, tabela de adevr i simbolul bistabilului de tip D cu activare.

Figura 3-10. Bistabil de tip D cu activare: (a) circuit; (b) tabela de adevr; (c) simbolul logic

3.1.8 Intrri asincrone

Bistabilele i schimb strile doar la un front cresctor sau un front descresctor pe baza unui semnal de ceas de sincronizare. Multe circuite necesit iniializarea bistabilelor la o stare cunoscut care este independent de semnalul de ceas. Sunt denumite circuite secveniale asincrone, circuitele secveniale care i schimb strile oricnd intervine o schimbare la valorile de la intrare i acest lucru se petrece independent de ceas. Pe de alt parte, circuitele secveniale sincrone, schimb strile doar la frontul activ al semnalului de ceas. De obicei, intrrile asincrone, sunt disponibile att pentru latch-uri ct i pentru bistabile i sunt utilizate fie pentru a seta sau fie pentru a terge coninutul elementului de stocare independent de ceas.

Figura 3-11 prezint latch-ul i bistabilul de tip D cu intrri asincrone de setare/ resetare active pe 0 precum i simbolurile asociate. entru bistabilele de tip SR, JK i T.

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY Clockdiv IS PORT (

Clk25Mhz: IN STD_LOGIC;

Clk: OUT STD_LOGIC);

END Clockdiv;

ARCHITECTURE Behavior OF Clockdiv IS

CONSTANT max: INTEGER := 25000000;

CONSTANT half: INTEGER := max/2;

SIGNAL count: INTEGER RANGE 0 TO max;

BEGIN

PROCESS

BEGIN

WAIT UNTIL Clk25Mhz'EVENT and Clk25Mhz = '1';

IF count < max THEN

count