Taula de continguts:

Ordinador de deu bits - VHDL: 4 passos
Ordinador de deu bits - VHDL: 4 passos

Vídeo: Ordinador de deu bits - VHDL: 4 passos

Vídeo: Ordinador de deu bits - VHDL: 4 passos
Vídeo: Беслан. Помни / Beslan. Remember (english & español subs) 2024, De novembre
Anonim
Ordinador de deu bits: VHDL
Ordinador de deu bits: VHDL

Fet per: Tyler Starr i Ezzeedden Gazali

Introducció

Aquest projecte es va completar com a part del projecte final del CPE 133 a Cal Poly SLO. És un gran projecte per a algú que vulgui entendre com funcionen els ordinadors al nivell més baix i com aconsegueixen les seves tasques. El projecte es basa en l’ordinador SAP de 8 bits descrit al llibre d’Albert Malvino Digital Computer Electronics. No obstant això, hem augmentat l'ordinador a 10 bits per permetre la implementació de més codis operatius (codis d'operació). L'usuari pot programar l'ordinador per realitzar un conjunt d'operacions introduint determinades instruccions.

Arquitectura de sistemes i circuits:

L’ordinador està escrit en VHDL i estarà contingut a la placa Basys 3 de Digilent. Les entrades es maparan als commutadors de la part inferior de la placa. S'utilitzaran dos commutadors tàctils per a les funcions Restablir i Escriure. La sortida es mostrarà a la pantalla de 7 segments del tauler.

L'ordinador es dividirà en circuits més petits (mòduls) que gestionen diferents operacions. Cada mòdul s'explicarà detalladament en els passos següents.

Pas 1: materials

Materials
Materials

Tot el que es necessita per a aquest projecte és la placa FPGA Basys3 de Digilent i un cable micro USB per connectar la placa a l’ordinador.

Pas 2: diagrama de blocs dels mòduls de circuit

Diagrama de blocs dels mòduls de circuits
Diagrama de blocs dels mòduls de circuits
Diagrama de blocs dels mòduls de circuits
Diagrama de blocs dels mòduls de circuits
Diagrama de blocs dels mòduls de circuits
Diagrama de blocs dels mòduls de circuits

Els diagrames de blocs anteriors mostren els diferents mòduls de circuits que formen l'ordinador de 10 bits. A continuació es mostren les descripcions de cadascuna de les parts / mòduls que es mostren als diagrames anteriors.

Comptador de programes

Descripció d'entrades: l'entrada és una entrada de 5 bits per carregar un número al comptador de programes. Cp quan és alt, el comptador compta amb la caiguda de les vores del rellotge. Clr restableix el comptador a 0. Ep quan és alt, el comptador genera el recompte actual. Sp quan és alt, el comptador estableix el recompte al nombre de l'entrada

  • Descripció de les sortides:

    la sortida és una còpia del recompte per utilitzar en LEDS 0-15. Compte dóna sortida al recompte actual.

  • Lloc general al sistema: aquest comptador fa un seguiment de la ubicació de memòria en què es troba el programa. Tots els programes comencen a l'adreça de memòria 00000 (0) i arriben a 11111 (31), tret que s'utilitzi una parada. En les declaracions de salt, el comptador del programa continua comptant des de l'adreça a la qual salta el programa.

Entrada MUX

  • Descripció de les entrades: L'adreça pren l'entrada dels commutadors 11 a 15. MAR pren l'entrada del registre de 10 bits utilitzat com a MAR. El programa controla quina entrada es dirigeix a la sortida.
  • Descripció de les sortides: la sortida enruta l'entrada seleccionada a la memòria RAM.
  • Lloc general al sistema: aquest MUX determina si s’envia l’adreça des dels commutadors o el bus a la memòria RAM. En el mode de programa, es dirigeix l'adreça dels commutadors i en el mode d'execució es dirigeix l'adreça del bus.

ramMUX

  • Descripció d'entrades: userInput és l'entrada que l'usuari introdueix durant el mode de programa. aRegInput són les dades contingudes al registre A, que s’utilitza durant una operació de moviment. el control és la selecció d’aquest MUX.
  • Descripció de les sortides: la sortida és l'entrada de dades de 10 bits a la memòria RAM.
  • Lloc general al sistema: aquest MUX emet les dades d’entrada de 10 bits que s’utilitzen al mòdul RAM. Quan el bit de control és alt, el MUX emet les dades que l'usuari ha introduït en mode programa. Quan el bit de control és baix, el MUX emet les dades al bus de control.

ramModule

  • Descripció de les entrades: inputData són les dades que s’emmagatzemen a la memòria RAM. inputAddress és la ubicació on s’emmagatzemen les dades. programa indica si l’ordinador està en mode programa o execució. readWrite indica si s'està produint una operació de lectura o escriptura. notCE és el bit de control del mòdul RAM. moviment indica que s'està realitzant una operació de moviment.
  • Descripció de les sortides: outputDataToBus són les dades que van des de la memòria RAM fins al bus. outputData i output Address són les dades i l’adreça que van al registre d’instruccions.
  • Lloc general al sistema: la memòria RAM permet emmagatzemar programes i dades a la memòria abans d’executar-lo. Un cop el programa s’executa, la memòria RAM rep una adreça del MAR i envia les dades d’aquesta adreça al bus.

addressROM

  • Descripció de les entrades: opCode és l'entrada que conté l'adreça del codi op que està realitzant l'ordinador
  • Descripció de les sortides: opCodeStart és l'adreça de memòria que indica la primera ubicació de microinstruccions del opCode corresponent.
  • Lloc general al sistema: aquest mòdul pren la microinstrucció bloquejada i emet la ubicació de memòria que correspon a l'inici d'aquesta seqüència de microinstruccions.

ringCounter

  • Descripció de les entrades: reset restableix el comptador a 100000 (el primer "estat T"). Clk augmenta el comptador un en una vora de rellotge que cau. NOP indica que l'estat / cicle actual és un cicle "sense operació".
  • Descripció de les sortides: el recompte és la sortida del comptador.
  • Lloc general al sistema: el comptador d’anells controla el comptador predefinible i delimita els sis micro-passos de cada cicle d’instruccions (T1-T6).

pre-comptador

  • Descripció d'entrades: opCodeStart és la ubicació de memòria de les microinstruccions per a l'opCode que s'està duent a terme. T1 restableix el comptador a 0 quan és alt. Quan T3 és alt, opCodeStart es carrega i el recompte continua des d'aquesta ubicació durant els 3 cicles restants (T4-T6). Clr estableix el comptador a 0. Clk augmenta el comptador d’un en una vora descendent.
  • Descripció de les sortides: controlWordLocation emet la ubicació de memòria de la paraula de control que s’executarà.
  • Lloc general al sistema: cada codi op té 3 microinstruccions. El comptador augmenta 1 a partir de 0 durant els primers 3 cicles (cicle de recuperació). El comptador és desencadenat pel comptador d'anells per carregar l'adreça a opCodeStart i augmenta 1 en els 3 cicles restants. D'aquesta manera, el pre-comptador controla la seqüència de microinstruccions a dur a terme.

controlROM

  • Descripció d’entrades: controlWordLocation és l’adreça del controlWord que emetrà el controlROM. NOP indica que la ubicació és una ubicació "sense operació".
  • Descripció de les sortides: controlWord és la paraula de control que habilita / desactiva els diferents mòduls informàtics per dur a terme l’operació desitjada.
  • Lloc general al sistema: aquest mòdul descodifica la ubicació de la memòria des del pre-comptador i emet el controlWord per a l'operació desitjada.

ALU

  • Descripció de les entrades: A i B són les entrades del registre A i del registre B en què l'ALU realitza les operacions aritmètiques i lògiques. Quan la resta està activa, indica que B es resta de A.
  • Descripció de les sortides: el resultat és el resultat de sumar A i B, o restar B de A. Les sortides més grans que menys, menys i iguals Per indicar si (AB o A = B) i s’utilitzen al mòdul de salt condicional. l'error indica un desbordament o desbordament quan està actiu.
  • Lloc general al sistema: l'ALU conté la lògica per a les operacions aritmètiques i lògiques realitzades per l'ordinador. Aquest mòdul pot sumar i restar dos números binaris de 10 bits. L’ALU també pot determinar si A> B, A

condicionalJmp

  • Descripció d’entrades: inputCount s’utilitza per bloquejar el recompte actual. inputAddress s’utilitza per bloquejar l’adreça a la qual es saltaria. loadFromRegister quan hi ha panys baixos inputAddress. loadCount quan es bloqueja el inputCount. quan outputEnable és baix, la sortida s'estableix a l'adreça per anar a.gT, iT i eQ determinar quina condició s'està comprovant. mayorThan, lessThan i equalTo són les entrades de l'ALU que indiquen el resultat de la comparació entre A i B. A la vora de rellotge ascendent de Clk, l'entradaCount i inputAddress es llegeixen als registres.
  • Descripció de les sortides: outputJmp és l’adreça que llegirà el comptador de programes.
  • Lloc general al sistema: aquest mòdul gestiona salts condicionals i no condicionals per a l'ordinador. Basat en les entrades gT, iT i eQ, el mòdul determina quina condició s’ha de comprovar i si aquesta condició és certa o falsa. Si la condició és certa, emetrà l'adreça de la instrucció a la qual saltar, en cas contrari, emet el recompte de la següent instrucció.

binToBCD

  • Descripció d'entrades: numerar el número de 10 bits per convertir a decimal codificat binari.
  • Descripció de les sortides: centenars de dígits al lloc dels centenars del número binari. desenes el dígit al lloc de desenes del nombre binari. uns són el dígit que es troba al lloc binari.
  • Lloc general al sistema: aquest mòdul converteix el número de 10 bits del registre de sortida a BCD perquè el nostre controlador de pantalla de quatre dígits mostri el número en decimal a la pantalla de 7 segments.

fourDigitDriver

  • Descripció de les entrades: el número és l'entrada binària de 16 bits que es condueix al descodificador. inClk és el rellotge intern de les plaques Basys i s’utilitza per a un divisor de rellotges. RST restableix el rellotge utilitzat per conduir els dígits.
  • Descripció de les sortides: l’ànode determina quin lloc de dígits s’il·luminarà. dígit és el número d'entrada del descodificador.
  • Lloc general al sistema: aquest mòdul condueix el descodificador per enviar el número BCD a la pantalla.

descodificador

  • Descripció de les entrades: inputNumber és el dígit que prové del controlador i que es descodificarà.
  • Descripció de les sortides: els càtodes determinen quins càtodes s’activaran per mostrar el dígit desitjat.
  • Lloc general al sistema: aquest mòdul descodifica el dígit que es mostrarà a la pantalla de 7 segments.

fourDigitDisplay

  • Descripció de les entrades: número és el número que es mostrarà a la pantalla de 7 segments. error indica quan la pantalla hauria de llegir "Err". Clk és el senyal de rellotge en què s’executa la pantalla. Aquest senyal ha d’estar al voltant dels 60 Hz perquè la pantalla pugui mostrar tots els llocs de 4 dígits simultàniament.
  • Descripció de les sortides: l’ànode determina quin lloc de dígits està habilitat. càtode determina quins càtodes s’activen per mostrar el dígit desitjat.
  • Lloc general al sistema: aquest mòdul mostra un número a la pantalla de 7 segments. Consulteu el manual d’instruccions de la placa Basys 3 per obtenir informació sobre quins càtodes i ànodes s’activen per utilitzar la pantalla. Quan el bit d'error és alt, la pantalla mostra "Err".

outputMUX

  • Descripció de les entrades: progModeInput determina quins leds s’encenen durant el mode de programació. runModeInput determina quins leds s’encenen durant el mode d’execució. modeSelect és el bit de selecció o control del MUX.
  • Descripció de les sortides: ledOutput indica quins leds s’encendran.
  • Lloc general al sistema: depenent del mode en què es trobi l'ordinador (programa o rom), el MUX activarà diferents leds. En mode de programa (modeSelect és '0'), l'MUX encén els leds per assemblar-se a la ubicació de memòria en què es troba l'ordinador i el que conté. En mode d'execució (modeSelect és '1'), el MUX s'utilitza per depurar, però es pot configurar per mostrar qualsevol altra cosa.

divisor de rellotge

  • Descripció de les entrades: stop llegeix els cinc bits MSB del bus per detectar una ordre stop ('11111') i atura el rellotge. inputClk és el senyal de rellotge intern de la placa Basys 3.
  • Descripció de les sortides: ouputClk és el nou rellotge que s’ha alentit.
  • Lloc general al sistema: aquest rellotge s’utilitza per frenar l’ordinador i permetre a l’usuari determinar què passa. El rellotge pot funcionar molt més ràpid, però, actualment està configurat a 2 Hz.

triStateBuffer

  • Descripció d'entrades: Din és l'entrada de 5 bits que entra al buffer. Ep és el bit de control.
  • Descripció de les sortides: Dout és la sortida de 5 bits del buffer
  • Lloc general al sistema: quan el bit de control Ep està actiu, la memòria intermèdia emet l'entrada. Quan el bit de control no està actiu, el buffer no emet res.

tenBitDRegister

  • Descripció d'entrades: Dbus és l'entrada a la qual es troba el registre. Clk permet que el registre llegeixi dades en una vora ascendent del rellotge. ARST estableix el registre a 0 de manera asíncrona. Quan outputEnable és baix, el contingut del registre és la sortida. Quan readIn és baix, el registre bloqueja Dbus a la vora del rellotge ascendent.
  • Descripció de les sortides: Qbus és la sortida del registre
  • Lloc general al sistema: el registre s’utilitza diverses vegades a tot l’ordinador i s’utilitza per emmagatzemar informació en realitzar operacions.

fiveBitDRegister

  • Descripció d'entrades: Dbus és l'entrada a la qual es troba el registre. Clk permet que el registre llegeixi les dades en una vora ascendent del rellotge. ARST estableix el registre a 0 de manera asíncrona. Quan outputEnable és baix, el contingut del registre és la sortida. Quan readIn és baix, el registre bloqueja Dbus a la vora del rellotge ascendent.
  • Descripció de les sortides: Qbus és la sortida del registre.
  • Lloc general al sistema: el registre s’utilitza diverses vegades a tot l’ordinador i s’utilitza per emmagatzemar informació en realitzar operacions.

Pas 3: Codi

A continuació es mostra una carpeta que conté la restricció i els fitxers font de l’ordinador de 10 bits.

Pas 4: demostració i codi de mostra

El vídeo anterior mostra com programar l’ordinador de 10 bits a la placa FPGA Basys 3. A continuació, també s’adjunta un pdf que conté els codis op i un programa de mostra.

Recomanat: