Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

Lookup-tabellen begrijpen: van ROM's tot geavanceerde ALU's

In het vorige hoofdstuk verkenden we digitale geheugenapparaten, ontdekten hoe solid-state opslagcellen precies geadresseerd kunnen worden met binaire waarden. Door de adreslijnen van een ROM met specifieke binaire patronen aan te sturen, kunnen we opgeslagen data direct uit de geheugencellen ophalen.

Stel je een ROM voor dat voorgeprogrammeerd is met een waarheidstabel voor een bepaalde logicafunctie. De adreslijnen fungeren dan als de functie's ingangen, terwijl de datalijnen de corresponderende uitgangen leveren. Met deze opzet kan een enkele ROM-chip elke gewenste logicafunctie emuleren – of het nu een half-adder, een full-adder, of een heel ander combinatorisch circuit is – zonder enige fysieke herbedrading.

Hieronder is een 4 × 2-bit ROM, geconfigureerd om een half-adder te implementeren. Wanneer de A en B ingangen op de adrespinnen worden toegepast, geeft de ROM de correcte Som (Σ) en Carry-uit (Cout) bits uit.

 

Lookup-tabellen begrijpen: van ROM s tot geavanceerde ALU s

 

In tegenstelling tot een poort-gebaseerde half-adder, die de ingangen verwerkt door een vast netwerk van logische poorten, „onthoudt” deze ROM simpelweg de correcte uitgang voor elk invoerpaar. Door een nieuwe waarheidstabel in een andere ROM, of zelfs een wisbare EPROM, te schrijven, kunnen we de logicafunctie onmiddellijk herconfigureren, wat ongekende flexibiliteit biedt.

In essentie heet een ROM die vooraf bepaalde uitgangen levert voor elke mogelijke invoer een lookup-tabel. Dit concept spiegelt hoe we vermenigvuldigingstabellen in school onthouden: in plaats van 5 × 6 elke keer opnieuw te berekenen, herinneren we ons dat het 30 is.

Het gebruik van software (de ROM's opgeslagen data) in plaats van hardware biedt diverse voordelen:

  • Softwarewijzigingen zijn veel eenvoudiger dan hardwarewijzigingen.
  • Software kan gearchiveerd worden op schijven, banden, of andere media, wat documentatie en overdracht vergemakkelijkt.
  • Software kan tussen apparaten gekopieerd worden, wat één chip laat leren van een andere.
  • Complexe functies die onwieldig zouden zijn met discrete poorten, kunnen straightforward geïmplementeerd worden.

De kracht van lookup-tabellen groeit met de complexiteit van de functie. Bijvoorbeeld, een 4-bits adder zou gebouwd kunnen worden met een ROM met 8 adreslijnen (twee 4-bits operanden) en 4 datalijnen voor de gesigneerde som. Met 256 adresbare locaties moet elke invoercombinatie zorgvuldig geprogrammeerd worden.

 

Lookup-tabellen begrijpen: van ROM s tot geavanceerde ALU s

 

Het programmeren van zo een tabel vereist precisie, maar het voordeel van software-gedrag weegt op tegen het risico van een verkeerd geprogrammeerde entry.

Lookup-tabellen blinken ook in het afhandelen van randgevallen, zoals overflow in 2's complement optelling. Bijvoorbeeld, 0111 (7) en 0110 (6) optellen in een 4-bits veld levert 1001 (–7) op in plaats van de correcte 13. Door de ROM te programmeren om een aangepaste waarde uit te geven – misschien het maximale vertegenwoordigbare positieve getal – kunnen we de reactie op overflow-condities controleren.

Behalve simpele optelling, het uitbreiden van de ROM met twee extra adreslijnen vergroot de capaciteit van 256 naar 1.024 entries. Dit stelt de ROM in staat om meerdere operaties uit te voeren op basis van twee controlebits (A8 en A9): optelling, aftrekking (beide volgordes), en gelijkheidstesten – allemaal op 4-bits operanden.

 

Lookup-tabellen begrijpen: van ROM s tot geavanceerde ALU s

 

Met nog meer adreslijnen kan de ROM een wijd scala aan binaire operaties hosten, zoals pariteitschecks of XOR's, effectief fungerend als een Arithmetic Logic Unit (ALU). Historisch, gebruikten de IBM 1401 en 1620 computers lookup-tabellen voor optelling, een ontwerpkeuze dat de bijnaam „CADET” (Can't Add, Doesn't Even Try) opbracht.

Een veelvoorkomend modern gebruik van ROM-gebaseerde lookup-tabellen is in controlsystemen die een nauwkeurige wiskundige functie vereisen. Bijvoorbeeld, automotive brandstofinjektiesystemen passen de lucht-brandstofverhouding aan gebaseerd op motorbelasting, omgevingstemperatuur, en barometrische druk. Sensoren meten deze variabelen, hun analoge uitgangen worden gedigitaliseerd, en de resulterende digitale vector fungeert als het ROM-adres. De ROM geeft dan de optimale injectieparameters uit.

ROM's corrigeren ook gedigitaliseerde signalen. Thermocouple transmitters converteren een niet-lineaire millivoltage in een temperatuurwaarde. Door correctiedata in een ROM op te slaan, kan het apparaat de uitgang lineariseren, wat de nauwkeurigheid verbetert. Deze toepassing wordt vaak een digitale karakterisator genoemd.

 

Lookup-tabellen begrijpen: van ROM s tot geavanceerde ALU s

 

Een ander klassiek voorbeeld is codevertaling. Een 128 × 8 ROM kan 7-bits ASCII codes vertalen in 8-bits EBCDIC codes door elke invoer af te beelden op zijn corresponderende uitgang in de ROM-tabel.

 

Gerelateerd Werkblad: Geheugenapparaten Werkblad

Industriële technologie

  1. Ladder Logic 202: PLC-geheugenorganisatie onder de knie krijgen
  2. Fundamenten van digitaal geheugen: adressering, toegang en volatiliteit
  3. ROM, PROM, EPROM en EEPROM begrijpen: ontwerp, programmeren en identificatie
  4. Microprocessoren: de evolutie van stored-program computing
  5. Magnetische neuromorfie berekening brengt AI-efficiëntie naar menselijk niveau
  6. Hoe tilltafels werkplekergonomie verbeteren en letselrisico verminderen
  7. Cervoz lanceert geavanceerde DDR4‑2666 geheugen voor industriële AI- en IoT-oplossingen
  8. Dynamische geheugentoewijzing in C: malloc, calloc, realloc en free onder de knie krijgen
  9. Dynamisch Geheugenbeheer in C: calloc, malloc en free uitgelegd
  10. C++ Dynamisch Geheugen Beheersen: Stack vs. Heap Uitgelegd
  11. Java 10: Heap toewijzen op NV-DIMM met -XX:AllocateHeapAt