Nuolatinė atmintis. Atminties testai ZX-Spectrum, perkelta į ROM Flash ROM, flash ROM

Aprašyta, kaip įdiegti Kvartas, bet tai buvo tik žingsnis link užduoties. Norėdami tuo įsitikinti FPGA o programuotojo darbas, pirmas teko blykstyti.
Paaiškėjo, kad tai galima padaryti dviem būdais, pirmasis yra baigtas JTAG sąsaja, šiuo atveju konfigūracijos informacija perduodama tiesiai į FPGA. Šio metodo trūkumas yra tas FPGA atmintis yra nepastovi ir programinė įranga turi būti įkelta į FPGA kiekvieną kartą, kai įjungiamas maitinimas.

Išeitį iš šios situacijos pasiūlo pati ir ji slypi Įdėkite atminties lustą šalia FPGA ir įkelkite programinę-aparatinę įrangą iš jos kiekvieną kartą po maitinimo įjungimo. Vienintelis dalykas, kurį verta pridurti, yra tai, kad programinė įranga yra saugoma ne įprastoje „flash drive“, o specialioje lustoje - nuoseklios konfigūracijos ROM. U Altera- tai yra serijos mikroschemos EPCS arba EPCQ, programuojamas per sąsają Aktyvus serialas. Tai yra antras būdas, esmė yra užprogramuoti nuoseklios konfigūracijos ROM lustą, o po maitinimo įjungimo FPGA nuskaito iš jo programinę-aparatinę įrangą.
Tačiau tai kelia kitą klausimą: ar gali būti, kad norint užprogramuoti serijinės konfigūracijos ROM lustą, reikia atskiros jungties?
Pasirodo, tuo pasirūpino FPGA kūrėjai ir FPGA gali veikti kaip tarpininkas tarp sąsajų JTAG Ir Aktyvus serialas. Tai yra, ji gauna programinę-aparatinę įrangą JTAG sąsają ir įrašo ją į ROM naudodami Aktyvus serialas. Išsiaiškinome teoriją ir galime pradėti praktikuoti.

Mano prašymu pardavėjas el. paštu atsiuntė derinimo plokštės schemą ir kelis paprastus projektus. Viename iš projektų buvo rastas failas su plėtiniu .sof, kuris reikalingas programinei įrangai.
Norėdami paleisti FPGA naudodami jtag būtina:

  • paleisti Kvartas
  • pasirinkti Programuotojas skirtuke Įrankiai
  • nurodykite programinės įrangos failą


  • FPGA mirksi paspausdami mygtuką Pradėti, prieš tai įdiegę reikiamus žymimuosius langelius

  • Jei programinė įranga sėkmingai įdiegta, viršutiniame dešiniajame kampe matome 100% Succesful

Tame pačiame aplanke, kuriame buvo paimtas .sof failas, failas su plėtiniu .pof. Failai su šiuo plėtiniu turi būti suaktyvinami tiesiogiai prisijungus prie ROM, bet aš norėjau paleisti plokštę be nereikalingų judesių per jtag. Norėdami tai padaryti, iš .sof failo reikėjo gauti failą su plėtiniu .Jic.

Norėdami konvertuoti .sof failą į .jic, jums reikia:

  • meniu Failas pasirinkite Konvertuoti programavimo failus

  • atsidariusiame meniu lauke pasirinkite Programavimo failo tipas pasirinkti JTAG netiesioginis
    Konfigūracijos failas (.jic)
  • lauke Konfigūravimo įrenginys pasirinkite plokštėje esančio ROM tipą
  • lauke Režimas pasirinkite programinės įrangos režimą
  • lauke Failo pavadinimas nustatyti išvesties failo pavadinimą ir katalogą

  • lauke Įveda failą konvertuoti spustelėkite SOF duomenys, dešinėje pusėje pasirodys mygtukas Pridėti failą, spustelėdami galite pasirinkti failą, kurį norite konvertuoti

7 / 8 121

spausdinimo versija

Atminties testai ZX-Spectrum, perkelti į ROM

Su RAM susiję gedimai užima „garbingą“ nišą tarp visų galimų „Spectrums“ neveikimo priežasčių. Atminties lustai yra gana nepatikimi ir linkę perdegti (ypač jei kyla problemų dėl maitinimo). Ir ypač jei „Spectrum“ maitinimo šaltinis yra transformatorius. Kiek kartų mano Leningrad-1 kompiuteryje su transformatoriniu maitinimu buvo pastebėta - netyčia peršokate kompiuterio maitinimo šaltinį (+5V ir žemė), o viena ar dvi KR565RU5 mikroschemos jau "išskrido".

Paprastai atminties lustas visiškai sudega. Tie. Tai ne tai, kad viena dalis jame neveikia, bet kad visas lustas nustoja veikti. „Spectrum“ atmintis sutvarkyta taip, kad kiekviena RAM lustas būtų atsakingas už savo atminties bitą (48K spektro atveju tai yra 8 lustai, po vieną bitą, iš viso 64 KB adresuojamos atminties). Kai kompiuteris paleidžiamas, ROM atlieka savo atminties testą ir, jei kuri nors RAM ląstelė "sugedo", kompiuteris nustato laisvos atminties ribą iki ląstelės adreso, esančio prieš sugedusį. Šiuo atveju laisvos atminties ribos reikšmė nustatoma sistemos kintamajame P_RAMT (jis yra RAM adresais 23732-23733. Veikiančiame kompiuteryje šio sistemos kintamojo reikšmė bus lygi #FFFF (kad yra, skaičiai 255 bus įrašyti abiejuose atminties langeliuose). Jei sistemoje kintamajame yra skaičius, kuris nėra lygus #FFFF, pavyzdžiui, jei yra #F000, tai reiškia, kad atminties langelis #F001 jau yra sugedęs.

Visa tai labai gerai, bet tik tuo atveju, jei aptikta sugedusi atminties ląstelė nėra turimos RAM pradžioje. Faktas yra tas, kad norint, kad BASIC-48 veiktų, reikia ir tam tikros turimos darbinės atminties. O jei RAM pradžioje bus aptiktas atminties defektas, tai BASIC paprasčiausiai neįsijungs, ir mes nieko negalėsime sužinoti. Jei vienas iš RAM lustų visiškai perdegs, kompiuteris nepaleis BASIC.

Tada belieka „šokti su tamburinu“ ir surasti, kas iš tikrųjų sudegė. Taikoma atminties lustams, galite išbandyti primityvią, bet kartais naudingą diagnostiką. Faktas yra tas, kad sugedusio atminties lusto (KR565RU5) temperatūra gali skirtis nuo kitų veikiančių lustų. Veikiant KR565RU5 RAM įkaista. Uždėjus pirštą ant RAM lustų galima pajusti, kad lustai pastebimai šilti. Sugedusi mikroschema gali įkaisti kaip lygintuvas arba gali būti visiškai šalta. Nebūtinai taip bus, tačiau šį metodą galima prisiminti ir karts nuo karto pritaikyti.

Apskritai, gaminant spektrus, geros formos taisyklės yra įdiegti ROM ir procesoriaus lustus ant lizdų. Tai labai palengvina gyvenimą taisant kompiuterį. Šiuo atveju mus domina ROM lustas. „Senoviniuose“ spektruose, pagamintuose 80-ųjų pabaigoje (90-ųjų pradžioje), paprastai buvo įdiegti du ROM lustai. Tai padiktavo tai, kad tuo metu nebuvo taip paprasta gauti 16K ROM lustą (buržuazinis pavadinimas 27128), todėl buvo paprasčiau ir pigiau jį pakeisti dviem 8K lustais, laimei jie turėjo buitinį analogą KR573RF4, KR573RF6. . Ir dažniausiai viena iš mikroschemų (dažniausiai ROM-0) buvo dedama ant lizdo. Kodėl ROM-0? Nes ROM yra surinktas ant dviejų lustų, jo adresų erdvė padalinta į dvi dalis. Bendra ROM talpa yra 16K. Todėl pirmasis 8K laikomas ROM-0, o antrasis 8K laikomas ROM-1. Kai kompiuteris paleidžiamas, procesorius pradeda vykdyti programą, esančią adresu #0000, ir būtent tai yra sritis, kurią adresuoja ROM-0.

Taigi taip, mums tikrai reikia bent vieno ROM, kad jis būtų lizde. Jei kompiuterio plokštės lizde yra tik vienas ROM, tai taip pat labai gerai. Reikalas tas, kad ROM gali būti pašalintas ir pakeistas savo ROM, kuriame yra „susiuvami“ atminties testas. Tada, įjungus kompiuterį, bus paleistas mums reikalingas atminties testas, kuris aiškiai parodys, kas vyksta su kompiuterio atmintimi.

Labai labai seniai, kai dar neturėjau ROM programuotojo, turėjau eiti į radijo turgų ir ten kietokai už atitinkamą kyšį į ROM įrašė bet ką. Jie taip pat turėjo „Spectrums“ atminties testus. Taip, tada buvo geras laikas...

Taigi, nusipirkę brangų ROM lustą, galite išbandyti savo kompiuterį. Tačiau pirmiausia reikėjo išspręsti klausimą – kaip teisingai įkišti ROM į lizdą? Faktas yra tas, kad ROM testas yra perkeltas į 2K lustą. Turi 24 kaiščius. Spectrum naudoja 28 kontaktų ROM. Šiuo atveju mikroschemos 21 ir 24 kaiščiai su bandymu buvo pakelti ir sujungti taip:

Tokia mikroschema įkišama į lizdą, kaip parodyta nuotraukoje:

Manau, kad nuotraukoje viskas aiškiai matyti. ROM (GND) 12 kaištis turi sutapti su 14 kištuku lizde. O bandomojo ROM išsikišęs kaištis turi patekti į 28-ą lizdo kaištį (+5V maitinimo šaltinis).

Užuot sugadinę ROM, galite sukurti adapterio plokštę. Viršuje įdėjome 24 kontaktų lizdą bandomajam ROM, o iš apačios išsikiša kaiščiai, skirti montuoti plokštę į 28 kontaktų lizdą kompiuteryje. Visus reikiamus 21 ir 24 ROM kaiščių prijungimo pakeitimus galima atlikti tiesiogiai šioje plokštėje:

Savo praktikoje dažnai naudoju šią bandomąją programinę-aparatinę įrangą:

Bandomasis ROM, skirtas ZX-Spectrum 48K

Kaip rodo pavadinimas, tikrina 48K RAM. Jis veikia labai lėtai (apie 12 minučių). Pirmiausia išvalomi ekrano atributai, po to ekranas dažomas ir išvalomas po vieną, tada rodomi RAM testo rezultatai. Po to yra ROM testas, tačiau jis visada baigiasi klaida, bet mums tai nesvarbu. Svarbiausia yra patikrinti RAM.

DĖMESIO!
Šis testas turi vieną „gudrybę“ - jei pradėdami testą laikote tarpo klavišą, tada grafinė dalis su atributų šešėliavimu praleidžiama ir RAM testas prasideda tiesiogiai. Paspausto tarpo klavišo testas atliekamas tuo metu, kai baigiasi kraštinių spalvų parinkimas bandymo pradžioje.

Išlaikius testą, jei vienas iš RAM lustų yra sugedęs, galite pamatyti pirmajame „Byte Tales Nr. 01“ numeryje:

„BYT Tales“ Nr. 01 – „Byte“ kompiuterio taisymas

Kitas bandomasis ROM, skirtas ZX-Spectrum 48K

48K atminties testu iš ankstesnės puslapio skilties nesu visiškai patenkintas, todėl turėdamas laisvo laiko ir noro išardžiau šį testą ir pagal jį „nukirpau“ savo versiją, kurioje bandžiau suvokti mano "norus".

Rezultatas buvo šiek tiek pažangesnis atminties testas, kuriame pridėjau kelis atminties tikrinimo algoritmus, iš testo išmečiau nereikalingą kodą (jo yra daug), taip pat padariau KR580VI53 sintezatoriaus „trukdymą“ korpuse. naudojant testą „Baitų“ kompiuteryje.

Šio puslapio pabaigoje galite atsisiųsti bandomąją programinę-aparatinę įrangą kartu su visais iS-DOS šaltiniais (testas parašytas iS-Assembler).

ROM testas ZX-Spectrum 48K (iš žurnalo "Radio Amateur" 1995 Nr. 9

Žurnale "Radio Amateur" Nr. 9 1995 m. buvo paskelbtas G. Ulanovskio ZX-Spectrum 48 ROM testo išmetimas.

Testo ypatumas yra tas, kad jis nerodo teksto ekrane - visa informacija apie RAM veikimą rodoma linijų pavidalu ant sienos. Tai gali būti naudinga visiškai neveikiant RAM, kai rodant tekstą ekrane nieko nebus matoma, o linijos ant kraštinės bus aiškiai matomos (informacijos išvestis ant kraštinės nepriklauso nuo našumo ir RAM prieinamumas apskritai).

Baigus testą, ant kraštinės rodomos 8 baltos juostelės, simbolizuojančios 8 bitus RAM. Pirmoji juosta iš viršaus rodo D0 bito tinkamumą naudoti, antroji - D1, trečioji - D2 ir kt. Jei veikia atitinkamas RAM bitas, juosta bus siaura:

Sugedusio bito atveju pralaidumas bus dvigubai platesnis:

Testo trūkumas yra tas, kad jis patikrina tik pirmąsias 16K RAM (adresais #4000-#7FFF). Tačiau tai galima lengvai išspręsti pakeitus bandymo šaltinį.

Testas vyksta 4 etapais (užpildomas ir tikrinamas baitas #00, #FF, #55 ir #AA). Jei norite, prie šaltinio teksto galite pridėti kitų RAM tikrinimo parinkčių.

Pavyzdžiui, pakeičiau testą, kad patikrinčiau visą 48K RAM kiekį, taip pat į šaltinį įtraukiau KR580VI53 užstrigimo baitų kompiuteriui procedūrą. Dviejų bandymo parinkčių ir šaltinių programinę-aparatinę įrangą galima atsisiųsti šio straipsnio pabaigoje.

Bandomasis ROM, skirtas ZX-Spectrum 128K

Šis testas leidžia greitai patikrinti atmintį 128-ajame ZX-Spectrum.

Šiame vaizdo įraše galite pamatyti, kaip testas vyksta veikiančiame kompiuteryje:

Čia turėtų būti vaizdo įrašas, bet jis neveiks, nebent įjungsite „JavaScript“ šioje svetainėje.

Po pranešimo apie sėkmingą ROM testą atsiranda kilpa; galite to nepaisyti.

Kai dirbama kai kurie Kompiuteriuose su prijungtu disko valdikliu išlaikant testą galimi gedimai. Faktas yra tas, kad prijungus pavaros valdiklį, atliekama modifikacija, kuri draudžia pasirinkti bet kokius prievadus, kai valdiklis veikia. Pavyzdžiui, ką rekomenduojama daryti jungiant C-48 valdiklį prie ZX-Spectrum:

Iš procesoriaus /IORQ išvesties į kompiuterio grandinę einantis laidininkas nutrūksta, o prie pertraukos prijungiamas loginis elementas, perjungiantis /IORQ signalą.

Tai daroma siekiant išjungti galimus kompiuterio prievadus, kurie prieštarauja disko valdiklio prievadams. Visų pirma, tai yra Kempstono vairasvirtės prievadas. Tačiau niekas neieškos konkretaus kompiuterio modelio, kad pamatytų, kas gali prieštarauti disko valdikliui, todėl lengviau išjungti prieigą prie prievadų, kol veikia disko valdiklis.

Antras punktas: vėl įeikite kai kurie Tokiu būdu modifikuotuose kompiuteriuose TR-DOS paleidžiamas iškart po atstatymo. Tai daroma taip, kad kiekvieną kartą iš BASIC nereikėtų „įvesti“ komandos RANDOMIZE USR 15616, kad paleistumėte TR-DOS.

Trečias punktas: vėl kai kurie Kompiuteriuose ROM su BASIC yra sujungtas su ROM TR-DOS viename luste. Pavyzdžiui, kaip šiame kompiuteryje Leningrad-1:

Programuotojas- aparatinė ir programinė įranga, skirta įrašyti / nuskaityti informaciją į nuolatinį saugojimo įrenginį (įrašyti vieną kartą, "flash" atmintis, ROM, vidinė mikrovaldiklių ir PLC atmintis).

Programuotojas- tai įrenginys, kuris įveda darbui reikalingą informaciją į programuojamus nepastovius skaitmeninius lustus, pvz PROM (ROM), EPROM (PROM), EEPROM (EEPROM), Blykstė, BIČIULIS, GAL, FPGA Ir mikrovaldikliai. Įrašymo procesas dažnai vadinamas " ", " ", " ", " ".

„Flash ROM“, „flash ROM“.

„Flash ROM“- įrašyti informaciją į ROM.

Kai kompiuteriai buvo dideli, nuo šeštojo dešimtmečio vidurio iki aštuntojo dešimtmečio vidurio, kompiuteriai naudojo magnetinę šerdies atmintį. Ši atmintis buvo naudojama kaip RAM ir ROM. Gaminant ROM, laidas arba praėjo per žiedą, arba jį aplenkė. Viela buvo perverta per ferito žiedą naudojant specialią adatą. Tai yra "susiūta" atminties matrica tiesiogine prasme. Todėl šiam procesui buvo gana natūraliai priskirtas apibrėžimas "flash ROM". Norėdami tai padaryti teisingai "blykstė", sukūrė technologinį dokumentą "firmware žemėlapis" kuriame buvo nurodyta, per kuriuos žiedus laidą pervesti, o per kuriuos ne. Tačiau ferito šerdies atmintis yra praeitis, tačiau šis terminas "blykstė" Ir "firmware" kalbant apie rašymo į ROM procesą, naudojamas ir šiandien. Be to žodis "firmware" naudojamas ir kaip veiksmažodis, susijęs su informacijos įvedimo į ROM procesu, ir kaip daiktavardis, susijęs su pačia informacija arba įvedama failu.

Skirtingai nuo puslaidininkių, magnetinės šerdys nebijo spinduliuotės ir elektromagnetinės spinduliuotės, todėl magnetinės šerdies atmintis kurį laiką buvo naudojama karinėse ir kosminėse sistemose. Patikimai žinoma, kad jis buvo naudojamas „Shuttle“ borto kompiuteriuose iki 1991 m. Galbūt tokia atmintis vis dar naudojama kai kuriose senesnėse sistemose. Šiuo metu puslaidininkinė atmintis, atspari specialiesiems efektams, jau sukurta, o magnetinių šerdžių era praėjo, tačiau terminas "firmware" liko.

Degantis ROM

„Įrašyti ROM“- informacijos įvedimas.

Ferito šerdies atmintis buvo pakeista puslaidininkine RAM atmintimi, o mikroschemos su metalinėmis, dažnai nichrominėmis, matricomis viduje, buvo pradėtos naudoti kaip ROM. Norint įvesti informaciją į tokias mikroschemas, pertekliniai trumpikliai turi būti sudeginti srovės impulsu. Vėliau džemperiai buvo pradėti naudoti ne tik iš metalo, bet ir iš puslaidininkių. p-n sandūra arba polisilicis, bet fizinio trumpiklio sunaikinimo arba sankryžos gedimo principas
buvo išsaugotas srovės impulso poveikis. Tokie ROM ir šiandien naudojami karinėse ir aviacijos sistemose. Visi specialios paskirties mikroschemų ChipStar programuotojai yra "perdegti" tokius ROM.

Įrašymas, įkeliamas ROM

Buitiniuose ir pramoniniuose įrenginiuose, kur atsparumo išoriniams veiksniams reikalavimai yra mažesni, o sąnaudų ir atminties talpos reikalavimai yra didesni, lustai su lydytais trumpikliais buvo pakeisti elektra programuojamais EPROM lustais ir elektra perprogramuojamais EEPROM ROM lustais ir kt. neseniai, lustai su remiantis FLASH. Keičiantis technologijoms, keitėsi ir terminija: pradėta dažniau kalbėti apie ROM "rašo", arba "pakrovimas", ir šis terminas dažniau vartojamas kalbant apie vidinį mikrovaldiklių ROM, o „rašyti“ – kalbant apie atskiras atminties lustus.

Programavimo ROM arba mikrovaldiklis

"Programavimo ROM arba mikrovaldiklis"- informacijos įvedimas į ROM arba mikrovaldiklį.

Terminas "programavimas" taip pat labai dažnai taikomas rašymo į ROM procesui. Ir jei ROM atžvilgiu jis visada suvokiamas vienareikšmiškai, tada mikrovaldiklių atžvilgiu kyla neaiškumų: "Programuokite mikrovaldiklį" gali reikšti arba paruošto programos kodo (vaizdo) įrašymą į mikrovaldiklio ROM naudojant aparatinę įrangą (programuotoją, atsisiuntimo kabelį), arba patį programos kūrimo procesą.

P.S. P.S

Sakysite, kad taip lengva susipainioti visoje šioje terminijoje, ir būsite visiškai teisus. Tačiau angliškai kalbančioje aplinkoje viskas nėra geriau! Ne tik jie visi vienodi "dega" ("deginti"), "atsiuntimai"("parsisiųsti"), "rekordas"("rašyti"), tokie ir terminai "programuotojas"- asmuo, kuris kuria programą ir "programuotojas"- įrenginys, kuris įrašo šią programą į mikroschemą, žymimas vienu žodžiu: "programuotojas".

Mikroprograminės mašinos yra kitas žingsnis tobulinant skaitmeninės grandinės intelektą. Remiantis mikroprogramuotais automatais, galima sukurti įrenginius, veikiančius pagal gana sudėtingus algoritmus, atliekančius įvairias įvesties signalų nustatytas funkcijas, gaminančius sudėtingas išėjimo signalų sekas. Šiuo atveju veikimo algoritmas mikroprogramų mašina galima lengvai pakeisti pakeitus ROM programinę-aparatinę įrangą.

Skirtingai nuo anksčiau laikytų „kietųjų“ loginių įrenginių, kurių veikimo principą vienareikšmiškai lemia naudojami elementai ir jų prijungimo būdas, mikroprograminės mašinos naudojant tą pačią grandinę galima atlikti įvairias funkcijas. Tai yra, jie yra daug lankstesni nei grandinės, pagrįstos „kieta“ logika. Be to, dizainas mikroprograminės mašinos Grandinės projektavimo požiūriu tai gana paprasta. Bet kurio trūkumas mikroprogramų mašina Palyginti su grandinėmis, pagrįstomis „kieta“ logika, yra mažesnis maksimalus našumas ir reikia sudaryti ROM programinės įrangos žemėlapį su mikroprogramos, dažnai gana sudėtinga.

Dažniausia struktūra mikroprogramų mašina(11.15 pav.) apima tik tris elementus: ROM, briaunų suaktyvintą registrą ir laikrodžio generatorius.


Ryžiai. 11.15.

ROM turi (L+M) adreso bitų ir N duomenų bitų. Registras taikomas naudojant keletą skaitmenų (N + L). ROM duomenų bitai įrašomi į registrą teigiamoje briaunoje laikrodžio signalas nuo generatoriaus. Dalis šių bitų (M) naudojama ROM adresui formuoti, kita dalis (N-M) naudojama išvesties signalams generuoti. Įvesties signalai (L) tiekiami į registro įvestis ir naudojami kartu su ROM išvesties bitų dalimi, norint gauti ROM adresą.

Schema veikia taip. Kiekvieno laikrodžio ciklo metu ROM sukuria duomenų kodą, taip nustatydamas ne tik grandinės išėjimo signalų būseną, bet ir ROM adresą, kuris bus nustatytas kitame laikrodžio cikle (po kito teigiamo krašto). laikrodžio signalas). Šį kitą adresą taip pat veikia įvesties signalai. Tai yra, skirtingai nei signalų sekvencinis, aptartas ankstesniame skyriuje, šiuo atveju adresus galima rūšiuoti ne tik nuosekliai (naudojant skaitiklį), bet ir savavališka tvarka, kurią nustato ROM programinė įranga, vadinama programine įranga.

Tinkamo grandinės veikimo sąlyga yra tokia. Vienam laikotarpiui laikrodžio signalas Registras ir ROM turi turėti laiko veikti. Kitaip tariant, registro delsos ir ROM adreso gavimo delsos suma neturėtų viršyti laikotarpio laikrodžio signalas. Taip pat atkreipkite dėmesį, kad įvesties signalai mikroprogramų mašina negalima tiesiogiai pritaikyti ROM adresų įvestims (be registro), nes jų asinchroninis (laikrodžio signalo atžvilgiu) pokytis gali sukelti trumpalaikį procesą ROM duomenų išvestėse būtent tuo momentu, kai įrašomi ROM išvesties signalai. į registrą. Dėl to į registrą gali būti įrašyta neteisinga informacija, kuri sutrikdys visos grandinės veikimą. Registras sinchronizuoja įvesties signalų pokyčius su laikrodžio signalu, dėl ko visi ROM adreso kodo bitai keičiasi vienu metu – išilgai teigiamos briaunos laikrodžio signalas. Registras turi būti suaktyvintas iš krašto; užrakto registro naudojimas neleidžiamas, nes tai gali sukelti laviną primenantį trumpalaikį procesą.

Tokios paprastos schemos galimybės pasirodo labai didelės. Pavyzdžiui, mikroprogramų mašina gali sukurti išvesties signalų sekas, reaguodamas į konkretų įvesties signalų pasikeitimą. Jis taip pat gali laikinai sustabdyti išvesties signalus, kol ateis įvesties signalai. Jis gali analizuoti įvesties signalo trukmę ir, priklausomai nuo to, generuoti tam tikrus išėjimo signalus. Tai taip pat gali padaryti daug kitų dalykų.

Suformuluokime kelias elementarias funkcijas, iš kurių galima sudaryti mikroprogramos automato veikimo algoritmus (11.16 pav.):


Ryžiai. 11.16.
  1. Nuosekli paieška ROM adresai (pavyzdžiui, norint išduoti išvesties signalų seką).
  2. Periodiškai kartojant ROM adresų seką (pavyzdžiui, norint pakartoti išvesties signalų seką).
  3. Sustojimas ties tam tikru ROM adresu (pavyzdžiui, laukti, kol pasikeis įvesties signalas).
  4. Laikinas reakcijos į įvesties signalus išjungimas (pavyzdžiui, norint baigti reakciją į ankstesnį įvesties signalų pasikeitimą). Ši funkcija paveikslėlyje nepavaizduota.

Kaip pavyzdį apsvarstykite kai kurių elementarių funkcijų vykdymą mikroprogramų mašina, parodyta pav. 11.17.


Ryžiai. 11.17.

ROM turi 64x8 organizaciją (gali būti du PE3 lustai arba vienas RT18 lustas), registro bitų skaičius yra dešimt (gali būti du IR27 lustai). Grandinė turi du įvesties signalus ir keturis išėjimo signalus. Tokia organizacija mikroprogramų mašina Gerai tai, kad jos mikroprograma (ty ROM programinės įrangos žemėlapis) yra labai aiški, ją lengva sudaryti ir skaityti.

11.7 lentelė. ROM programinės įrangos kortelė 64x8 mikroprogramų mašina
Adresas 0 1 2 3 4 5 6 7 8 9 A B C D E F
00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
10 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
30 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

ROM duomenų išvesties bitai skirstomi į dvi grupes po 4 signalus: žemieji eina į sekančio ROM adreso formavimą, aukštieji – keturis išvesties signalus. Įvesties signalai patenka (per registrą) į du svarbiausius ROM adreso bitus. Jei pavaizduosime ROM programinės įrangos žemėlapį įprasta keturių eilučių ir 16 stulpelių lentelės forma (11.7 lentelė), tada šioje lentelėje bus aiškiai parodyta ir kiekvieno vidinio signalo būsena, ir grandinės atsakas į bet kurį įvestį. signalas, taip pat nurodo visus išvesties signalus kiekviename laikrodžio cikle.

Visų pirma, nesunku pastebėti, kad vienos ar kitos lentelės eilutės pasirinkimą atlieka reikšmingiausi ROM adreso kodo bitai, tai yra įvesties signalai. mikroprogramų mašina. Taigi, bet koks įvesties signalų pasikeitimas pereina į kitą programinės įrangos žemėlapio eilutę. Pavyzdžiui, eilutė 00 atitiks nulį įvesties signalų mikroprogramų mašina, o 30 eilutė – vieno įvesties signalai.

11.8 lentelė. Grandinės programinės įrangos pavyzdys pav. 11.17
Adresas 0 1 2 3 4 5 6 7 8 9 A B C D E F
00 11 22 33 44 55 66 77 88 99 A.A. BB CC DD E.E. FF 00
10 11 22 33 44 55 66 77 88 99 55 BB CC DD E.E. FF 00
20 10 21 32 43 54 65 76 87 98 A9 B.A. C.B. DC ED
mob_info