MICROPROCESSADORES 2º Trabalh de Labratóri Unidade de Cntrl Hardwired Objectiv: Pretende-se que s aluns cmpreendam a metdlgia usada na síntese, implementaçã e prgramaçã de um cmputadr elementar de Cicl Únic, cnstituíd pr uma Unidade de Cntrl Hardwired e pr uma Unidade de Prcessament. O trabalh terá uma duraçã de 2 semanas, devend relatóri ser entregue na aula de labratóri da segunda semana. O trabalh deverá ser preparad (prject e ediçã de esquemátic) fra d hrári de labratóri, destinand-se as hras de labratóri à resluçã de eventuais prblemas e demnstraçã d trabalh realizad. Acnselha-se, para facilitar a execuçã d trabalh, a cnsulta ds texts Manual de Intrduçã a Xilinx e Ntas sbre utilizaçã de Macrs e Buses em Xilinx dispníveis na página da cadeira. Pretende-se prjectar um cmputadr elementar de Cicl Únic, cnstituíd pr uma Unidade de Cntrl Hardwired, uma Unidade de Prcessament de bits e ainda pels regists, memória e lógica adicinal necessárias à sua peraçã. A Unidade de Prcessament (UP) a cntrlar é uma versã expandida daquela que fi prjectada e implementada n primeir trabalh de labratóri. Esta UP (datapath) será frnecida pel crp dcente. O seu diagrama de blcs é seguinte: DA Asel 2 2 A UA (R0,R1,R2,R3) B RW 2 Bsel Bus A Bus B Address ut Input A Input B MA 0 1 0 1 MUX A MUX B MB Data ut FS 3 X UF Z Y Z N
Aspects imprtantes relativs a funcinament da UP: Existem regists na Unidade de Armazenament (UA), denminads R0, R1, R2 e R3. Cada um destes regists tem bits. Asel seleccina qual ds regists da UA é clcad n Bus A da UP: Asel=00 seleccina R0, Asel=01 seleccina R1, etc. D mesm md, Bsel seleccina qual ds regists da UA é clcad n Bus B da UP: Bsel=00 seleccina R0, Bsel=01 seleccina R1, etc. A entrada RW determina se a saída da Unidade Funcinal (UF) é escrita num ds regists (RW=1) u nã (RW=0). Quand RW=1, as linhas DA (Destinatin Address) seleccinam qual ds regists é escrit: DA=00 seleccina R0, DA=01 seleccina R1, etc. Os dads para cada um ds perands X e Y da UF sã prvenientes, u d banc de regists da UA, u das entradas externas Input A e Input B: quand MA=0 perand X da UF é lid d Bus A e quand MA=1 perand X da UF prvém da entrada externa Input A; perand Y da UF é cntrlad de frma similar pela entrada MB. As linhas FS (Functin Selectin) determinam qual a micrperaçã executada pela UF: FS 2 FS 1 FS 0 Micrperaçã Descriçã 000 Z = X Transferência de X 001 Z = X+Y Adiçã 010 Z = X-Y Subtracçã 011 Z = X+1 Increment de X 100 Z = X-1 Decrement de X 101 Z = Y Transferência de Y 110 Z = X OR Y OR (bit a bit) 111 Z = X AND Y AND (bit a bit) A micr-peraçã executada na UF afecta 2 flags: Zer (Z) e Negative (N). Estas flags sã guardadas num regist de Flags após a execuçã de cada instruçã. Dessa frma, elas ficam acessíveis para serem testadas durante a instruçã seguinte.
O cmputadr de Cicl Únic a prjectar utilizará instruções de 12 bits e perará dads de bits. A Unidade de Cntrl (UC) a implementar será d tip Hardwired. A memória de instruções tem uma dimensã 6x12, u seja, é cnstituída pr 6 palavras de 12 bits cada. A memória de dads tem uma dimensã 16x, u seja, é cnstituída pr 16 palavras de bits. Ambas as memórias serã frnecidas sb a frma de uma macr. O seguinte diagrama de blcs apresenta a arquitectura d cmputadr a prjectar e implementar: N diagrama de blcs é pssível identificar as variáveis de cntrl da UP indicadas na secçã anterir, e ainda as seguintes variáveis adicinais: MW (1 bit): Memry Write. Cntrla a peraçã de escrita na memória de dads: se MW=1 cnteúd de Mem. Data In Bus é escrit na psiçã de memória indicada n Mem. Address Bus; se MW=0, a memória nã é escrita. J (1 bit): Jump. Indica se existe um salt (J=1), u se PC (Prgram Cunter) é simplesmente incrementad de uma unidade (J=0); Jsel (2 bits): Jump Select. Quand J=1, as linhas Jsel indicam tip de salt a executar: Jsel Cndiçã de Salt 00 Salt incndicinal 10 Salta se Z = 1 01 Salta se N = 1 O sequenciament das instruções d prgrama é efectuad através d Cntadr d Prgrama (PC), d blc identificad cm Cntrl de Salt, das flags Z e N e ainda através das instruções de salt dedicadas especialmente para esse efeit, as quais cntrlam as variáveis J e JSel. O funcinament d Cntrl de Salt pde ser descrit da seguinte frma: Se J=0, entã PC deve ser incrementad uma unidade; Se J=1:
Se JSel=00, entã a valr de PC deve ser adicinad u decrementad valr de 6 bits presente n bus Salt. Cm esse valr está sb a frma de cmplement para 2, entã pde-se realizar um salt de até 31 psições de memória para a frente, u até 32 para trás; Se JSel=01, 10 entã se N u Z (respectivamente) estiverem inactivs, incrementa-se PC 1 unidade; se estiverem activs deve ser adicinad a PC valr presente ns 6 bits d bus Salt. Pde assim efectuar-se um salt cndicinal de até +31 u -32 psições de memória. O cnjunt de instruções que se pretende implementar está cntid na tabela seguinte. Para cada instruçã indica-se seu OpCde, sua designaçã simbólica, descriçã e tip de endereçament utilizad. OpCde Operaçã Descriçã Endereçament 0000 MOVI DR, Op (DR) Op Imediat 0001 CMP RA, RB (RA) (RB) Regist 0010 CMP RA, M[RB] (RA) M[(RB)] Regist 0011 SUMI DR, SR, Op (DR) (SR)+Op Imediat 0100 SUM DR, RA, RB (DR) (RA)+(RB) Regist 0101 INC DR (DR) (DR) + 1 Regist 0110 SUB DR, RA, RB (DR) (RA)-(RB) Regist 0111 DEC DR (DR) (DR)-1 Regist 1000 AND DR, RA, RB (DR) (RA) AND (RB) Regist 1001 OR DR, RA, RB (DR) (RA) OR (RB) Regist 1010 SWAP DR, M[RB] (DR) M[(RB)] Regist 1011 LD DR, M[RB] (DR) M[(RB)] Regist 1100 STR M[RB], RA M[(RB)] (RA) Regist 1101 JMP Offset (PC) (PC) + Offset Relativ 1110 JN Offset N: (PC) (PC) + Offset Relativ 1111 JZ Offset Z: (PC) (PC) + Offset Relativ Ntaçã usada na tabela: símbl (RA) representa cnteúd d regist RA e M[(RB)] denta a psiçã de memória cuj endereç é dad pel cnteúd d regist RB. Nte que, nas instruções de salt, camp Offset está sb a frma de cmplement para 2. As instruções sã armazenadas na memória das instruções de acrd cm s seguintes frmats: Endereçament Imediat: 2 2 Endereçament pr Regist: OpCde DR SR OP 2 2 2 2 OpCde DR RA RB xx
Endereçament Relativ (salts cndicinais e incndicinais): 2 6 OpCde 00 Offset em que: OpCde ( bits): códig da peraçã a executar; DR (2 bits), SR (2 bits), RA(2 bits), RB(2 bits): qualquer destes camps pde valer 00(R0), 01(R1), 10(R2) u 11(R3); Op ( bits): perand (cnstante) de bits; Offset (6 bits): cnstante em frmat de cmplement para 2 que indica diferencial usad n salt relativ. 5.1 Cnjunt de Instruções e palavra de cntrl (1ª Semana) Cmplete a tabela para as instruções apresentadas cnfrme está exemplificad, u seja, a frma cm cada instruçã deve ser armazenada na memória de instruções, e qual a palavra de cntrl necessária para que essa instruçã seja executada na arquitectura cmputacinal prpsta. Cada grup cmpleta apenas uma das tabelas. Para esclher a tabela que crrespnde a seu grup, use dia da semana em que realiza labratóri. Nte que para algumas instruções camp Asel pde tmar valr d camp RA e para utras d camp DR enquant Bsel pde tmar valr d camp RB u d camp SR. Instruçã Representaçã na SUM R3, R1, R2 0100 11 01 10 00 11 1 01 10 0 0 001 0 0 XX INC R3 JMP -20 SUMI R2, R0, 6 Tabela I: Tabela de instruções a cmpletar nas sessões de Segunda-feira Instruçã Representaçã na SUM R3, R1, R2 0100 11 01 10 00 11 1 01 10 0 0 001 0 0 XX JN -13 DEC R1 MOVI R3, + Tabela II: Tabela de instruções a cmpletar nas sessões de Terça-feira Instruçã Representaçã na SUM R3, R1, R2 0100 11 01 10 00 11 1 01 10 0 0 001 0 0 XX DEC R2 JZ -15 SUMI R1, R3, 6 Tabela III: Tabela de instruções a cmpletar nas sessões de Quarta-feira
Instruçã Representaçã na SUM R3, R1, R2 0100 11 01 10 00 11 1 01 10 0 0 001 0 0 XX INC R0 JMP 12 MOVI R1, -5 Tabela IV: Tabela de instruções a cmpletar nas sessões de Quinta-feira Instruçã Representaçã na SUM R3,R1,R2 0100 11 01 10 00 11 1 01 10 0 0 001 0 0 XX JN -26 DEC R3 SUMI R2, R3, +5 Tabela V: Tabela de instruções a cmpletar nas sessões de Sexta-feira 5.2 Descdificadr de Instruções (1ª Semana) Cm fi indicad anterirmente, Descdificadr de Instruções deverá ser d tip hardwired, u seja, deverá ser implementad cm um circuit cmbinatóri. Prjecte e implemente n Xilinx Descdificadr de Instruções. Crie uma macr a partir d circuit implementad. 5.3 Cntrl de Salt (1ª Semana) Prjecte e implemente n Xilinx blc de Cntrl de Salt e Prgram Cunter. Crie uma macr a partir d circuit implementad. Pde utilizar s circuits que lhe parecerem mais adequads. 5. Cmputadr de Cicl Únic (1ª Semana esquema de ligaçã ds blcs, 2ª Semana implementaçã e teste) Utilize Xilinx para ligar tds s móduls dispníveis (Memórias, UP, UC, Cntrl de Salt...) de frma a bter Cmputadr de Cicl Únic. 5.5 Prgramaçã e Demnstraçã (2ª Semana) Afim de demnstrar funcinament d cmputadr cdifique um prgrama na linguagem assembly deste micrcmputadr, u seja, usand cnjunt de 16 instruções dispnível. Cada grup implementa apenas um prgrama. Para esclher prgrama que crrespnde a seu grup, use dia da semana em que realiza labratóri. A frma de prgramar as memórias de instruções e de dads, assim cm verificar seu cnteúd será indicada quand frem dispnibilizadas as macrs que as implementam. Prgrama para s turns de 2ª feira Escreva um prgrama que analise um vectr de númers bináris de bits (psitivs u negativs representads em cmplement para dis) e substitua s númers psitivs pr zer deixand s restantes inalterads. O númer de elements d vectr deverá ser lid a partir da primeira psiçã da memória de dads e s elements d vectr a partir das psições da memória de dads que se seguem. Prgrama para s turns de 3ª feira Escreva um prgrama que analise um vectr de númers bináris de bits (psitivs u negativs representads em cmplement para dis) e substitua s númers negativs pr +1 deixand s restantes inalterads. O númer de elements d vectr deverá ser lid a partir da primeira psiçã da memória de dads e s elements d vectr a partir das psições da memória de dads que se seguem.
Prgrama para s turns de ª feira Escreva um prgrama que analise um vectr de númers bináris de bits (psitivs u negativs representads em cmplement para dis) e substitua s númers negativs pel seu simétric deixand s restantes inalterads. O númer de elements d vectr deverá ser lid a partir da primeira psiçã da memória de dads e s elements d vectr a partir das psições da memória de dads que se seguem. Prgrama para s turns de 5ª feira Escreva um prgrama que analise um vectr de númers bináris de bits (psitivs u negativs representads em cmplement para dis) e substitua s númers psitivs pel seu simétric deixand s restantes inalterads. O númer de elements d vectr deverá ser lid a partir da primeira psiçã da memória de dads e s elements d vectr a partir das psições da memória de dads que se seguem. Prgrama para s turns de 6ª feira Escreva um prgrama que analise um vectr de númers bináris de bits (psitivs u negativs representads em cmplement para dis) e substitua s númers psitivs pr -1 deixand s restantes inalterads. O númer de elements d vectr deverá ser lid a partir da primeira psiçã da memória de dads e s elements d vectr a partir das psições da memória de dads que se seguem. O trabalh decrrerá durante 2 semanas, devend ser discutid e apresentad durante a segunda aula de labratóri. As aulas de labratóri destinam-se, essencialmente, à crrecçã de errs e bugs e a tirar dúvidas que pssam existir sbre a implementaçã d prject. O trabalh deverá ser planead e desenvlvid, tant quant pssível, fra d hrári de labratóri, send impssível realizá-l sem qualquer preparaçã prévia e apenas durante as hras de labratóri. Tend em cnsideraçã estes aspects, trabalh desenvlvid será avaliad pr fases. Assim: 1ª SEMANA N iníci da 1ª aula de labratóri s aluns deverã apresentar trabalh crrespndente às alíneas 5.1, 5.2 e 5.3, quer a nível de preparaçã e prject (diagrama de blcs e tabelas), quer a nível de implementaçã em Xilinx. Deverã igualmente ter prjectad Cmputadr de Cicl Únic (5.) a nível de diagrama de blcs. 2ª SEMANA N iníci da 2ª aula deverã trazer td prject implementad em Xilinx, de preferência cmpletamente funcinal, mas admite-se que pderã existir alguns errs que necessitem da ajuda d dcente (nã esquecer que existem aulas de dúvidas durante quase tds s dias da semana), prgrama especificad para seu dia da semana, e ainda um relatóri. O trabalh será apresentad, testad e discutid (através de questões individuais dirigidas) durante a 2ª aula de labratóri. N fim da aula deverá ser entregue relatóri (que deverá vir impress e prnt a entregar cm excepçã de pnts referentes a alterações de última hra e cnclusões). Este deverá ser sucint (dispensam-se intrduções teóricas), mas terá brigatriamente que cnter: Objectivs Prject Um diagrama de blcs geral d Cmputadr de Cicl Únic e um esquemátic de tdas as unidades prjectadas; As etapas de prject e pções que levaram à btençã d descdificadr de instruções e cntrl de salt (pr ex.: mapas de Karnaugh e tabelas de verdade); Respsta à questã 5.1 (cmpletar a tabela) Códig d prgrama devidamente cmentad
Cnclusões cnclusões e cmentáris as resultads btids na simulaçã. Anex descriçã de alterações de última hra. O relatóri cmplet nã deverá exceder as 5 páginas (excluind s anexs). De md a testar funcinament d descdificadr e Unidade de cntrl de salt, estes esquemas deverã seguir as seguintes regras: O esquema d descdificadr de instruções dever-se-á chamar decd_inst Este esquema deverá ter seguinte sinal de entrada: DI_instruca(11:0) Os aluns deverã tmar a decisã acerca ds sinais de saída que deverã existir e quais s seus nmes (estas decisões cntarã para a avaliaçã final d trabalh). Para testar e verificar descdificadr de instruções s aluns deverã usar ficheir de teste teste_di.tbw O esquema d cntrl de salt dever-se-á chamar cntrl_salt Este esquema deverá ter s seguintes sinais de entrada: CLK JSel(1:0) Offset(5:0) N Z Os aluns deverã tmar a decisã acerca ds sinais de saída que deverã existir e quais s seus nmes (estas decisões cntarã para a avaliaçã final d trabalh). Para testar e verificar cntrl de salt s aluns deverã usar ficheir de teste teste_c_salt.tbw O cmputadr de cicl Únic será avaliad na 2ª semana. Para tal, serã frnecidas as memrias (dads e instruções), macrs da UP, d descdificadr de instruções e d cntrl de salt (para s aluns que nã as implementaram na 1ª semana). Também será frnecid um dcument cm as indicações necessárias à prgramaçã das memrias e teste d cmputadr de cicl únic. A memória de instruções frnecida cnterá um pequen prgrama que permitirá testar funcinament d cmputadr independentemente d funcinament d prgrama realizad pels aluns. O esquema d cmputadr de cicl únic deverá chamar-se cmp1cicl! Este esquema deverá ter seguinte sinal de entrada: CLK Para testar e verificar cntrl de salt s aluns deverã usar ficheir de teste teste_cmp.tbw A avaliaçã d prject será realizada parcelarmente e de acrd cm s seguintes pnts: Relatóri cm Prject (10 Val.) Funcinament d Descdificadr de Instruções (2.5 Val.) Funcinament da Unidade de Cntrl de Salt (2.5 Val.) Funcinament d cmputadr (2.5 Val.)
Prgrama em assembly (2.5Val.) " ## $ [1] M. Mrris Man, Charles R. Kime, Lgic and Cmputer Design Fundamentals, Secnd Editin, Prentice-Hall Internatinal, Inc. (Capítul 7) [2] N. Hrta, J.P. Carvalh, Micrprcessadres Unidade de Prcessament, Aulas Teóricas, 2005. [3] H. Net, Manual de Intrduçã a Xilinx, Aulas de Labratóri, 2005. [] J.P. Carvalh, Ntas sbre utilizaçã de Símbls e Buses em Xilinx, Aulas de Labratóri, 2005. Bm Trabalh