Una dintre cele mai comune aplicații ale chipsurilor ROM este înlocuirea circuitelor combinaționale complexe de către ele. O astfel de soluție face posibilă simplificarea semnificativă a dispozitivului proiectat și reducerea numărului de microcircuite combinate utilizate și, uneori, chiar reducerea curentului consumat și creșterea vitezei circuitului.
De exemplu, luați în considerare o schemă combinată destul de complexă (Figura 11.5), care are opt intrări și patru ieșiri. Funcția circuitului este după cum urmează. Mai întâi, recunoaște două coduri diferite de intrare pe 5 biți (11001 și 10011) în cazul în care intrarea de rezoluție este "-display". există un semnal zero și când semnalele "Strobe 1" și "Strobe 2" ajung, circuitul emite impulsuri negative la ieșire. În care primul semnal de ieșire este generat în cazul în care codul de intrare este egal cu 11001, iar semnalul a venit „-Strob 1“, a doua ieșire - cu același cod, dar cu semnalul de intrare „-Strob 2“. Al treilea și al patrulea semnal de ieșire sunt generate cu codul de intrare 10011 și cu sosirea semnalelor de comandă "perete 1" și, respectiv, "perete 2". Adică, logica lucrării este destul de complexă și o varietate de elemente logice necesită multe.
Fig. 11.5. Un exemplu de circuit combinat, un ROM înlocuibil
Fig. 11.6. Permițând ROM-ul să înlocuiască schema combinată prezentată în Fig. 11.5
Să facem o carte ROM firmware. Semnalele de ieșire active sunt zero, iar cele pasive sunt semnale unice. Prin urmare, în majoritatea celulelor de memorie, codurile F vor fi scrise (toate semnalele de ieșire sunt pasive). Activ (zero) la primul semnal de ieșire în repaus pasiv va corespunde unui cod binar de 1110 (cod 16-ary - E), un semnal activ de ieșire al doilea va corespunde codului binar 1101 (16-ary - D), semnal de a treia ieșire activă, - un cod binar de 1011 (sau B), a patra ieșire activă este un cod binar de 0111 (sau 7). Asta este, doar conținutul celor patru locații de memorie va fi diferit de F.
Tabelul 11.2. ROM pentru înlocuirea circuitului combinat
Fig. 11.7. Metode pentru sincronizarea semnalelor de ieșire ale ROM-ului utilizând semnalul CS (a)
și registrul de ieșire (b)
Cipurile ROM pot înlocui orice jetoane combinate: decodoare, encodere, comparatoare de cod, add-uri, multiplexoare, convertoare de coduri etc. Cu toate acestea, cu un astfel de înlocuitor este întotdeauna util să se analizeze dacă este mai bine să se utilizeze chips-uri deja pregătite decât să se producă altele noi (programarea ROM-urilor). Cipurile ROM pot fi mai lente decât microcircuitele combinate standard și consumă mai mult curent. În plus, ele pot necesita rezistențe de ieșire, dacă chips-urile au ieșiri OK sau când se folosesc intrări CS pentru chips-uri cu ieșiri 3C. Un alt lucru este atunci când ROM-ul efectuează o funcție diferită de funcția microcircuitului combinat standard. Cel mai simplu exemplu este un decodor cu semnale active de ieșire pozitive și nu negative (ca în seria standard).
Fig. 11.8. Calculatorul patratelor numerelor de intrare
Tabelul 11.3. Cartela de calculator ROM cu PC-uri
Dezavantajul oricărui calculator de calcul tabelar de pe ROM este nevoia de a dubla cantitatea necesară de memorie atunci când numărul de intrare este mărit cu unul. De exemplu, atunci când un număr de intrare de 8 biți cantitatea necesară de celule ROM 256, cu numere de intrare de 16 biți - cu numărul de celule ROM 64K, iar la numerele de intrare de 32 de biți - cu numărul de celule ROM 4D. Astfel de volume mari sunt foarte dificil de implementat pe microcircuite disponibile pe piață. Prin urmare, foile de calcul de pe ROM sunt de obicei construite doar pentru biții de date de intrare de cel mult 16.
Una dintre cele mai comune aplicații ale ROM-ului ca convertor de coduri este construirea pe baza lor a tot felul de indicatori care afișează litere și numere pe ecran. ROM-ul în acest caz traduce codul (numărul) unei litere sau cifre în imaginea sa. Desigur, în acest caz, înlocuirea ROM-ului cu un circuit combinațional este absolut imposibilă, deoarece există o mulțime de litere și numere, iar imaginile lor sunt foarte diverse.
Cel mai simplu exemplu al acestei aplicații ROM este controlul unui indicator semnalizat pe șapte segmente, cunoscut tuturor prin calculatoare, case de marcat, ceasuri electronice, scale, etc. În indicatorii cu șapte segmente, imaginea tuturor cifrelor de la 0 la 9 este construită din numai șapte segmente (segmente de linie) (Figura 11.9).
Fig. 11.9. Decodificatorul Seven Segment Indicator pe ROM
Pentru a afișa un cod binar pe 4 biți ca cifră, trebuie să convertiți acest cod într-un cod pe 7 biți, fiecare segment al căruia va corespunde unui segment al indicatorului. Adică codul 0000 ar trebui să corespundă cu imaginea de zero (6 segmente situate de-a lungul perimetrului) și codul 0001 - imaginea unității (două segmente verticale drepte). Pentru a crește universalitatea indicatorului, este convenabil să adăugați zece cifre cu șase litere utilizate în codul hexazecimal (A, B, C, D, E, F). Șapte segmente ale indicatorului vă permit să faceți acest lucru, însă imaginile literelor nu sunt de o calitate foarte bună.
Tabelul 11.4. Firmware ROM card pentru decodorul indicatoarelor de semnalizare
Fig. 11.10. Generator de caractere matrice în ROM
În acest caz, se utilizează o matrice familiară cu 8 și 8 coloane. În fiecare celulă al ROM-ului, este înregistrat un cod de imagine al uneia dintre cele 8 linii ale unuia dintre cele 256 de caractere. Imaginea unui simbol ocupă 8 celule consecutive în ROM. Pentru litere și numere, coloana din dreapta nu este utilizată, servește la separarea de caractere între ele, dar pentru caracterele speciale (de exemplu, pentru simbolurile grafice) poate fi utilizată. În cazul unui indicator LED cu matrice, un număr de linii poate fi efectuat de un contor de 3 cifre cu un decodor 3-8 la ieșirea sa. În cazul unui monitor de televiziune, căutarea liniilor este efectuată cu ajutorul generatorului de scanare vertical al imaginii.
Nu este ușor să desenați o carte de firmware pentru o astfel de ROM, de obicei se face folosind programe speciale pe computer. Dar principiul compilării este simplu. De exemplu, în cazul în care activ (aprins) elementul de imagine corespunde unui singur semnal, atunci simbolul rândul zero „M“, se arată în figură, în ROM să fie scris 10000010, pentru primul rând - codul 11000110 pentru al doilea - codul 10101010 pentru al treilea - 10010010 AND etc.