Memorii ROM: Diferență între versiuni
Linia 20: | Linia 20: | ||
* cu blocuri '''always''' combinaționale și sub-blocuri '''case'''. | * cu blocuri '''always''' combinaționale și sub-blocuri '''case'''. | ||
Metoda preferată este ultima, din cauza ușurinței descrierii (vezi [[Verilog# | Metoda preferată este ultima, din cauza ușurinței descrierii (vezi [[Verilog#Blocuri și operatori condiționali|operatori condiționali]]). |
Versiunea de la data 11 martie 2012 09:55
Majoritatea funcțiilor implementate de circuite combinaționale pot fi descrise analitic, adică ieșirea poate fi calculată aplicând operatori (adunare, scădere, shiftare, operații logice) ieșirilor. Astfel de funcții sunt cele pe care le-ați implementat în lucrările 1 și 2 de laborator. Există însă cazuri în care nu există o relație clară între valoarea de intrare și valoarea de ieșire, astfel încât nu se poate aplica o regulă pentru calculul acesteia din urmă. În acest caz, soluția constă în utilizarea unei memorii ROM (Read-Only Memory), numită și LUT (Lookup Table), care are rolul de a stoca pentru fiecare valoare de intrare, valoarea corespunzătoare de ieșire.
Interfața unei memorii ROM
![](/images/f/ff/Rom0.png)
O memorie ROM, ca circuit, are o singură intrare, pe care se specifică valoarea de intrare, și o singură ieșire pe care se propagă valoarea funcției pentru intrarea specificată. Pentru fiecare valoare intrare, o memorie ROM dispune de o locație de memorie, care este accesată când valoarea corespunzătoare apare pe portul de intrare. Valoarea locației este propagată pe portul de ieșire. Astfel, o memorie ROM are doi parametrii importanți:
- numărul de biți ai portului de intrare (care reprezintă adresa în memorie), care determină numărul total de locații ale memoriei, notat M;
- numărul de biți ai portului de ieșire (care este egal cu numărul de biți ai fiecărei locații de memorie), notat N;
Observație: Dacă portul de intrare are M biți, atunci numărul total de adrese posibile, respectiv numărul total de locații în memoria ROM este de 2M. Deci, numărul total de biți ai memoriei ROM (capacitatea memoriei) este produsul dintre numărul total de locații (2M) și dimensiunea în biți a unei locații (N).
Implementarea unei memorii ROM
Fiind un circuit combinațional, în Verilog, implementarea unei memorii ROM se poate face în trei moduri:
- cu blocuri assign și operatorul condițional;
- cu blocuri always combinaționale și sub-blocuri if;
- cu blocuri always combinaționale și sub-blocuri case.
Metoda preferată este ultima, din cauza ușurinței descrierii (vezi operatori condiționali).