Cap´ıtulo 2
2.3 Perif ´ericos
Os perif´ericos s˜ao m´odulos com funcionalidades espec´ıficas que s˜ao acrescentadas ao SoC para v´arios fins, e comunicam com o mesmo utilizando um barramento. A comunidade utiliza o barramento Wish-bone (ver a secc¸˜ao 2.1.2), em que os perif´ericos s˜ao conectados ao barramento tal como se pode observar na figura 2.3. Nas subsecc¸˜oes que se seguem descrevem-se os perif´ericos do sistema de-senvolvido.
2.3.1 Boot ROM
A Boot ROM ´e uma pequena mem´oria que tem uma rotina de inicializac¸˜ao do SoC. A Boot ROM pode ser mais ou menos complexa podendo ser por exemplo umaBasic Input Output System (BIOS) de computador ou uma simples rotina que carrega o programa de uma mem´oria secund´aria para a mem´oria principal (RAM).
2.3.2 UART
A UART [23] ´e um m´odulo de comunicac¸˜ao ass´ıncrono, em que o formato dos dados e a velocidade de transmiss˜ao s˜ao configur´aveis. Faz parte de in´umeros circuitos integrados e ´e usada para comunicac¸˜ao com computadores ou dispositivos com porta s´erie. O sub-m´odulo de emiss˜ao recebe bytes de dados e transmite sequencialmente cada bit; o sub-m´odulo de recepc¸˜ao recebe bits sequencialmente e agrupa-os num byte. A comunicac¸˜ao pode ser simples, em que cada m´odulo s´o pode fazer apenas de emissor ou receptor,full duplex, em que ambos os m´odulos podem enviar e receber dados ao mesmo tempo, e half duplex, em que os dois m´odulos podem receber e enviar mas intercaladamente.
Por motivos hist´oricos o sinal de dados encontra-se com o valor l´ogico ’1’ quando n˜ao est´a nenhuma comunicac¸˜ao a decorrer, para mostrar que a linha n˜ao foi danificada. Como se pode ver na figura 2.11, para o caso de envio de 8 bits, o emissor envia inicialmente um bit com valor l´ogico ’0’ para informar o receptor que vai receber um conjunto de bits que pode ser configur´avel entre 5 a 9 bits. Tipica-mente s˜ao usados 8 bits, seguidos opcionalTipica-mente de um bit de paridade, que apenas ´e poss´ıvel se na comunicac¸˜ao n˜ao forem enviadas palavras de 9 bits, e por fim o bit de paragem que tem o valor
l´ogico ’1’. Existem v´arios modelos de UART’s sendo que a comunidade optou por utilizar no seu SoC a UART16550. Um parˆametro bastante importante ´e obaud rate, ou seja a taxa de transferˆencia entre o emissor e o receptor, que tˆem de estar de acordo, sen˜ao a transferˆencia n˜ao trabalhar´a correctamente.
Cada m´odulo de UART tem duas linhas: TX (linha de transmiss˜ao) e RX (linha recepc¸˜ao). A ligac¸˜ao entre dois m´odulos ´e cruzada, ou seja liga-se a linha de TX do primeiro ou RX do segundo, e o TX do segundo ao RX do primeiro.
TX
significado espera inicio dados0 dados1 dados2 dados3 dados4 dados5 dados6 dados7 paridade paragem espera
Figura 2.11:Diagrama temporal da UART
2.3.3 GPIO
O m´odulo deGeneral Purpose Input/Output (GPIO) [24], como o nome indica, ´e um banco de sinais de entrada e sa´ıda de uso gen´erico, uma vez que estes pinos n˜ao tˆem uma func¸˜ao espec´ıfica. S˜ao apenas linhas dispon´ıveis e controladas pelo utilizador em tempo de execuc¸˜ao. Na construc¸˜ao de um SoC pode ser ´util ter dispon´ıvel linhas de controlo digital. Os sinais de GPIO podem estar activos ou desactivados, podendo ser programados como entrada ou sa´ıda. Os sinais que est˜ao configurados como entrada permitem apenas leituras, sendo por vezes utilizados para criar interrupc¸˜oes no processador, enquanto que os sinais de sa´ıda permitem leituras (para n˜ao ser necess´ario lembrar o seu estado) e escritas.
Os sinais GPIO tˆem v´arias aplicac¸˜oes t´ıpicas no SoC como por exemplo disponibilizar pinos para portas multifunc¸˜ao, gest˜ao de energia, controlo de codecs de ´audio e placas de v´ıdeo, aplicac¸˜oes em sistemas embebidos para comunicac¸˜ao com sensores, LCD’s, sinalizac¸˜ao de estados com LED’s, etc.
Um exemplo pr´atico de utilizac¸˜ao de pinos GPIO ´e a forma como alguns computadores port´ateis da ACER que usam o GPIO0 para ligar o amplificar das colunas internas, em que o chip Realtek ALC260 tem dispon´ıvel 8 pinos de GPIO que n˜ao s˜ao utilizados por omiss˜ao.
2.3.4 Interface FIFO
Foi desenvolvida uma interface FIFO destinada a interligar assincronamente um m´odulo ao SoC com comunicac¸˜ao paralela de 32 bits por palavra, pretendendo-se que, com esta interface, a comunicac¸˜ao seja r´apida entre os dois m´odulos. Para uma comunicac¸˜ao paralela e ass´ıncrona ´e utilizada uma mem´oria do tipo FIFO para cada sentido, ou seja uma FIFO para o SoC escrever e o m´odulo ler e outra em sentido oposto. Estas FIFO’s ligam-se `a interface Wishbone (ver a secc¸˜ao 2.1.2), e permitem uma velocidade de comunicac¸˜ao elevada. Para al´em disso ´e poss´ıvel ligar a FIFO de recepc¸˜ao ao sistema de interrupc¸˜oes, permitindo assim que uma sub-rotina de interrupc¸˜ao possibilite que a resposta do processador seja ainda mais r´apida e que se possa poupar energia.
2.3.5 I2C
O I2C [25, 26] ´e um barramento desenvolvido pela Philips Semicondutors, agora conhecida como NXP Semicondutors. O I2C ´e um barramento s´erie, s´ıncrono, multi-mestre e multi-escravo, desenvolvido para conectar perif´ericos de baixa velocidade a computadores, sistemas embebidos e a telefones celulares.
Este barramento utiliza apenas duas linhas de comunicac¸˜ao:Serial Data(SDA) para o envio de dados eSerial Clock(SCL) como sinal de rel´ogio controlado pelo o mestre, sendo estas duas linhas de dreno aberto. O I2C define um tipo simples de comunicac¸˜ao entre mestre e escravo, lendo dados do escravo ou escrevendo dados para o escravo. A comunicac¸˜ao comec¸a sempre por um sinal de comec¸o (START) e acaba num sinal de paragem (STOP). Todos os escravos tˆem um enderec¸o de identificac¸˜ao, que ´e utilizado para diferenciar com qual dos escravos o mestre quer comunicar.
Desde Outubro de 2006 que este barramento n˜ao necessita de licenciamento para ser utilizado, tendo cada vez mais utilizac¸˜oes pr´aticas como acessos a pequenas mem´orias de sistemas embebi-dos, comunicac¸˜ao com conversores de digital para anal´ogico e anal´ogico para digital, ou controlo de pequenos monitores como os dos telem´oveis.
2.3.6 SPI
O SPI [27] ´e um barramento s´erie, s´ıncrono, que permite apenas um ´unico mestre e opera em full-duplex, ou seja, permite receber e enviar dados ao mesmo tempo. O barramento utiliza pelo menos 4 sinais se s´o houver um escravo. Se houver mais necessita de mais um sinal para cada escravo que se encontre ligado ao barramento.
Utiliza uma linha de rel´ogio (Serial Clock (SCLK)), tem duas linhas para dados, uma que envia do mestre para o escravo (Master Out Slave In(MOSI)) e outra que envia dados do escravo para o mestre (Master In Slave Out (MISO)). Estas trˆes linhas s˜ao comuns entre os escravos. Por ´ultimo, as linhas que seleccionam qual escravo se pretende comunicar (Slave Select (SS)) s˜ao uma por escravo. Esta linha ´eactive low significa que o escravo s´o se encontra seleccionado quando esta linha se encontra com valor l´ogico ’0’. Este barramento ´e utilizado para pequenas distˆancias, onde ´e preciso uma elevada taxa de transferˆencia de dados, como por exemplo em sistemas embebidos, sensores, LCDs e cart˜oes SD [28].