Procesorul din plis este foarte simplu!

Procesorul din FPGA este foarte simplu!
- aici este pregătirea și editarea pură -

Cuvânt înainte sau puțină versuri.
Electronica modernă a trecut mult timp acest prag, când sisteme complexe au necesitat eforturile unor echipe imense și investiții financiare grave. Acum, când există circuite integrate logice programabile (FPGA), dezvoltarea a devenit atât de simplă încât schemele complicate pot fi create într-o chestiune de ore de către forțele unui inginer.







Aici voi prezenta o astfel de evoluție, care va arăta cum vă puteți face procesoarele în FPGA. Și arătați cât de simplu este la nivelul modern al dezvoltării electronice digitale.

Scopul acestui articol nu este de a face un „minim“, „optimă“, „mai bun“ sau chiar unele alte caracteristici suplimentare ale procesorului, și reprezentarea principiului construcției sale și construirea unor baze care pot fi potrivite pentru construirea de alte procesoare și tigăi de implementare programatori care era, probabil, doar frică să atingă o sferă atât de complexă, cum ar fi construirea de procesoare.

1. Ce este un procesor? Răspunsul la această întrebare, după cum se dovedește, nu este atât de simplu. Dacă vă întoarceți la Internet, atunci veți primi o mulțime de răspunsuri la planul descriptiv, în care nu există o scădere a esenței procesorului? Și cum să distingem procesorul de o altă schemă? Și dacă este necesar să căutăm această diferență? Să uităm de toate acestea și să încercăm să oferim un răspuns în ceea ce privește electronica digitală.

Procesoarele au multe proprietăți, dar una dintre cele mai importante este capacitatea procesorului de a executa un anumit program de acțiuni. Și în acest sens, procesorul este dispozitivul executiv pentru executarea programelor. Din punctul de vedere al acestei definiții, procesorul poate fi orice. Și mecanice, electrice și hidraulice.

Cu toate acestea, în acest caz, suntem interesați doar de un singur tip de procesor. Acesta este un procesor digital digital. Dacă înțelegeți procesoarele electronice digitale și începeți încă de la început, cu istoria creării lor, va deveni rapid clar că un astfel de procesor este format din elemente digitale de anumite tipuri. Anume, de la distribuirea schemelor logice și a unui set de registre, care la rândul lor constau în declanșatoare (de obicei tip D). Pas cu pas, sortarea unor astfel de scheme poate ajunge la o anumită concluzie.

Anume: Un procesor este un circuit electronic digital, care este o mașină de stat finită destinată executării unui program scris cu coduri digitale.

Această definiție este baza dezvoltării descrise în acest articol.

2. Automat de stat finit Este destul de ușor de citit despre automatul finit (CA) și despre teoria construcției sale în literatură și pe internet. Nu există răspunsuri la aceste întrebări aici. Aici este important doar ca una dintre formele mașinii digitale digitale de stare finită să fie următoarea schemă:






Fig.1.

Pentru funcționarea stabilă a navei spațiale, este necesar ca timpul de funcționare al părții logice a circuitului să fie mai mic decât perioada de timp a impulsurilor de sincronizare care ajung la intrarea CLK. Această observație va fi importantă în viitor.

3. Descrierea procesului procesorului Descrierea procesorului este un circuit electric care poate fi reprezentat în moduri diferite. organigrame Familiar pentru CPU nu este foarte potrivit pentru ingineri, deoarece oricare dintre ei editare atunci când este necesar duce la anumite dificultăți. Pentru a evita aceste dificultăți au fost dezvoltate descriere hardware limbi (HDL), care permit nu numai amplu descrie schema de cicluri CPU, dar este ușor de corectat, deoarece corectarea textului documentului este mult mai ușor decât grafica.

În acest articol, Alter HDL - AHDL va fi folosit și va fi testat în Alter CAD - Quartus II. Dacă se dorește, codul poate fi ușor tradus în VHDL datorită transparenței și simplității designului aplicat.

4. Componentele procesorului pentru a vorbi despre care înregistrează ce funcții pe care o desfășoară și modul în care acestea sunt conectate exact la momentul in care nu (spune despre acest lucru mai jos). Întregul set de registre de procesoare este un registru mare, pe care îl vom numi BigRegister. Și, în conformitate cu figura 1, circuite de prelucrare (care este o mașină de stat), ar trebui să conțină, cu excepția „registru mare“ o anumită bază logică, care este așa-numita LogicKernel. Nu există alte părți pentru procesor. Intrări și ieșiri pentru dispozitivele externe sunt situate în LogicKernel și BigRegister cuprinde numai registrele de procesor interne. În LogicKernel, desigur, nimeni nu se oprește să se conecteze direct la ieșirile registrului sau aplicat la intrarea celelalte registre de date din intrările logice de bază, astfel încât în ​​figura 1 și prezintă posibile registre privind intrările și ieșirile. Se înțelege că acestea sunt printre declanșatoarele registrului mare, dacă acestea sunt necesare.

În conformitate cu aceste afirmații, vom compila elementul ierarhic superior al procesorului în limba AHDL:

Aceasta este o schemă de procesor foarte generalizată cu intrări și ieșiri impersonale. În schema reală, intrările și ieșirile vor obține nume specifice și parametrii lățimii pneurilor. Observăm doar că intrările și ieșirile circuitelor conectate la registru în ambele module de procesor sunt denumite identice, iar intrările sunt precedate de simbolul "i", iar ieșirile de către simbolul "o". Pentru AHDL, aceste personaje sunt doar o parte din nume și nu înseamnă nimic. Puteți, de exemplu, să modificați numele intrărilor și ieșirilor în locații, iar ultima linie a descrierii va conecta terminalele de același nume ale miezului logic și ale registrului mare. În unele cazuri, acest lucru poate fi convenabil, dar aici se aplică o altă idee. Ideea este ca programatorul ar trebui sa fie capabil sa inteleaga pe cat posibil ceea ce este legat de unde. Toate intrările încep cu simbolul "i", iar ieșirile cu simbolul "o".

Setul de registre este după cum urmează:

Set de procesoare I / O:

În conformitate cu aceste idei, editează fișierul de proiect de top:

Nu a putut trage o mare înregistra un fișier separat, și să scrie toate elementele sale în fișier de nivel superior, dar acest lucru nu se face în mod deliberat, cu accent suplimentar pe modificarea procesorului pe un singur nucleu variantei de realizare multi-core, în care se înregistrează o separare și logică este esențială.

Începutul fișierului logic al kernelului:

5. Miez logic Miezul logic al procesorului necesită o atenție deosebită, astfel încât textul sursă al nucleului logic din paragraful anterior a fost terminat "în cel mai interesant loc".

Mai întâi de toate, permiteți-mi să vă reamintesc că avem un nucleu logic - este o schemă combinatorie pură, ceea ce înseamnă că nu există declanșări și blocări în elementele circuitului circuitului. De asemenea, toate elementele care descriu structura FPGA sunt excluse. Întreaga implementare a kernel-ului este dată "la mila compilatorului", iar elementele sunt atribuite doar anumite autobuze care sunt convenabile pentru descrierea circuitului și nu trebuie neapărat să fie prezente în FPGA în mod explicit. Da, nu este necesar.

Secțiunea elementelor din schema de kernel logică:
Alegerea anvelopei pe care o numim în această secțiune se află în întregime pe dezvoltator și nu are o semnificație importantă pentru esența acestui articol, deci aici este un set specific fără explicație de ce anume astfel de pneuri sunt alese pentru descriere.

Secțiunea descrierii logice:







Trimiteți-le prietenilor: