Prévia do material em texto
ELETRÔNICA DIGITAL AULA 6 Prof. Amilton Carlos Rattmann 2 CONVERSA INICIAL Nesta aula, estudaremos as memórias, que são empregadas em praticamente todos os sistemas digitais que utilizam algum tipo de armazenamento (Pedroni, 2010). Uma grande vantagem dos sistemas digitais, por outro lado, está exatamente na capacidade de armazenar grande quantidade de dados, que permite que sejam dinâmicos e adaptáveis (Tocci, 2011). As memórias são classificadas quanto à forma de retenção da informação, como voláteis, que perdem as informações lógicas armazenadas quanto são desenergizadas, e não voláteis, que, por outro lado, não perdem as informações ao serem desenergizadas. Estudaremos também os dispositivos lógicos programáveis, que são dispositivos lógicos complexos, que contam com muitas unidades lógicas elementares, compostas por portas lógicas e flip-flops (FF), podendo ser organizados em nível de hardware, para fornecer uma determinada função lógica. TEMA 1 – MEMÓRIAS Vimos que as memórias elementares armazenam um bit e são formadas por flip- flops. As unidades de memórias elementares são denominadas células de memória. Memórias de massa são circuitos integrados com uma grande quantidade de células de memórias, organizadas em uma arquitetura de acesso definida em linhas e colunas. Na terminologia mais apropriada, as células de memória estão organizadas em palavras binárias, conhecidas como palavras de memória (Tocci, 2011, p. 685). As palavras de memória podem conter quatro bits, oito bits, 16 bits, conforme o formato desejado ou necessário, sendo apresentadas em encapsulamentos como 8x1024 ou 16x8192, por exemplo. A capacidade da memória é dada pela quantidade células de memória, ou bits de memória. A memória organizada em 8x1024 tem uma capacidade de 8.192 bits ou 8 Kib e a memória organizada em 16x8192 tem uma capacidade de 131.072 bits ou 128 Kib (1 Ki = 1024 bits). Neste tema, abordaremos a formação da estrutura e os sinais necessários para estabelecer um controle lógico para realizar a leitura e a escrita nas palavras de memória. Este estudo aborda a formação de memórias RAM (Random Access Memory – Memoria de acesso randômico ou direto) estáticas, voláteis, que pode ser estendido para memórias ROM (Read Only Memory – Memória apenas de leitura), não voláteis, considerando que alguns tipos de memórias possuem mecanismos de escrita para retenção e apagamento de dados pelo barramento e outras ROM, não. Cabe ressaltar 3 que as memórias ROM utilizam células de memórias diferentes das memórias RAM para retenção não volátil de dados. Os FF D são memórias elementares. Vamos construir uma estrutura elementar de armazenamento a partir de quatro flip-flops tipo D, conforme apresentado na Figura 1, permitindo entender passo a passo a necessidade e a organização dos sinais de habilitação, escrita e leitura de dados. Figura 1 – Organização de unidades elementares de memória com FF tipo D No diagrama da Figura 1, os quatro FF D são capazes de armazenar um dado com quatro bits de largura. Para tal operação, os sinais de relógio (CLK) são organizados em um único sinal comum, permitindo que os sinais (valores binários) disponíveis nas entradas E3, E2, E1 e E0 sejam armazenados (ou carregados) nos FF D, quando ocorrer a transição de borda ascendente no sinal de relógio. Com base na carga do dado, os valores armazenados nos FF D ficam disponíveis nas saídas S3, S2, S1 e S0. Na Figura 2, notamos duas estruturas elementares de armazenamento que apresentam sinais de relógio, entradas e saídas independentes. 4 Figura 2 – Duas estruturas elementares de armazenamento de quatro bits Não é prático, entretanto, utilizar entradas separadas, pois duplicaria a quantidade de linhas para as operações de armazenamento. Uma opção, uma vez que os sinais de relógios são independentes entre as estruturas de armazenamento, é unir os sinais de entrada das estruturas elementares sem que isso afete a operação, pois mesmo que sinais de entrada estejam presentes nos oito FF D, apenas aqueles acionados por uma das linhas de relógio serão capazes de armazenar os valores binários. As saídas permanecem separadas porque ocorreriam conflitos entre as saídas armazenadas nos FF D contendo valores binários distintos, em virtude dos valores armazenados no FF D estarem permanentemente disponíveis nas saídas. Na Figura 3, buffers de três estados (3state buffers) são acrescentados às saídas dos FF D para permitir que as linhas de saídas sejam interligadas, formando uma saída comum de dados. Como pode ser observado, além do sinal de relógio que registra os valores de entradas nos FF D, um sinal de habilitação (ENA) agora atua para disponibilizar o valor armazenado na saída de uma estrutura elementar. Os sinais de relógio – que também podem ser denominados sinais de escrita – e os sinais de habilitação de saída, são classificados com sinais de controle para a operação da memória. Os sinais de escrita permitem gravar um dado apresentado à entrada da estrutura na posição 0 ou na posição 1, dependendo do sinal acionado. Os sinais de habilitação podem disponibilizar o conteúdo de uma estrutura de quatro bits ou outras, dependendo do sinal de habilitação acionado. 5 Figura 3 – Duas estruturas elementares com entradas comuns e saídas comuns, com acionamento de carga e habilitação independentes Evoluindo no estudo, a Figura 4 apresenta as entradas e saídas da estrutura de memória formando uma via bidirecional de dados, controlados pelos buffers tri-state. Os sinais de habilitação atuam na lógica de controle para acionamento dos sinais ENA ou CLK para a posição 0 ou 1, conforme o endereço fornecido. O sinal CE’ inibe ou ativa o funcionamento da lógica de controle. Na Figura 5 (a), é apresentado um possível circuito de controle, cuja informação de endereço seleciona uma única posição no demux para fornecer um sinal de escrita ou leitura determinado pelo decodificador, que liberará um CLKn ou um ENAn para acionamento dos elementos de memória, desde que o sinal de habilitação da pastilha esteja ativo. 6 Figura 4 – Duas estruturas elementares formando um bloco de memória de duas palavras de 4 bits e sinais de controle Figura 5 – Organização dos sinais de controle: habilitações do circuito (a); tabela verdade do controle (b); exemplo de direcionamentos de sinal (c); diagrama do controle para uma matriz 4x4 (d) A tabela verdade do decodificador de controle é apresentada na Erro! Fonte de referência não encontrada. (b), na qual o sinal CE’ (chip enable) em nível lógico alto inibe qualquer operação na memória. O sinal WE’ (write enable) e o sinal OE’ (output enable), ativos com nível lógico baixo, são combinados para produzir sinais CLK e ENA, conforme descrito na tabela da figura (b). A operação do demux é apresentado na Figura 5 (c) para exemplificar a relação entre endereço 10b e saída do sinal CLK2, como aconteceria para o sinal ENA2. Na Erro! Fonte de referência não encontrada. 7 (d) é apresentado um diagrama simplificado para demonstrar o acionamento de uma estrutura de memória de quatro palavras de quatro bits empregando os mesmos princípios descritos no parágrafo. Um circuito funcional de operação de memória correspondente ao diagrama da Erro! Fonte de referência não encontrada. (d) é apresentado na Figura 6, criada utilizando o ambiente de simulação. O decodificador de controle, bastante simples neste exemplo, é formado por duas portas AND. O sinal CE’ atua inibindo os circuitos de demultiplexação (DMX - demux), que produz sinais de nível lógico baixo em tocas as saídas quando inibido. Quando ativo, o demux direciona o sinal de entrada para a saída definida pelos sinais de endereçamentosp. 3. 54 A arquitetura do tipo row-based apresenta linhas em uma direção, que permite interconexões ao longo de filas de blocos lógicos. As conexões em outra direção sacrificam os próprios blocos lógicos no estabelecimento destas conexões. Esta arquitetura também é utilizada em ASICs. A arquitetura PLD hierárquico emprega uma matriz de conexões programável, denominada PIA (Programmable Interconnect Array) e blocos lógicos, como os LABs, que podem ser organizados em macrocélulas. Esta arquitetura é utilizada em CPLD e FPGA da Intel/Altera (Marques, 2002, p. 4). 5.8 Implementações com CPLD e FPGA Os FPGA permitem implementações de circuitos lógicos complexos como microprocessadores, caso do Nios® II da Altera (Altera, S.d.) ou o MicroBlazer™ da Xilinx (XILINX, S.d.), que são processadores definidos em código de hardware para serem configurados em FPGAs, assim como circuitos integrados em uma única pastilha - SoC (System on a Chip). Os microprocessadores e outros blocos lógicos complexos são fornecidos como os denominados códigos, ou blocos lógicos, de propriedade Intelectual, conhecido no idioma inglês como IP Core (intellectual property Core). Os IP Cores são fornecidos principalmente em linguagem de especificação de hardware como VHDL e Verilog. Estas linguagens, embora pareçam com linguagens de programação, guardam diferenças significativas no emprego do código e na sua estrutura. Os fabricantes de FPGA fornecem ambientes de desenvolvimento (EDA) para os PLD, que permitem normalmente trabalhar na construção gráfica de blocos interligados, diagrama de estados ou com linguagens de especificação de hardware. O início da construção do código costuma habilitar um projeto no EDA, no qual se especifica o tipo de linguagem e tipo de dispositivo lógico que será utilizado. A especificação do dispositivo é precisa, exigindo a família do componente, a quantidade de terminais, a arquitetura e a grade de velocidade. Após a construção do código, o processo de compilação fornece uma estimativa da propagação dos sinais no PLD e o total da estrutura interna consumida no projeto. Após à compilação do código ou bloco, os EDAs permitem o teste do código em simuladores ou a transferência do código para a configuração do dispositivo lógico programável. Antes do processo de transferência, entretanto, os terminais adequados 55 do dispositivo devem ser associados aos sinais internos que foram definidos na construção do código, exigindo nova compilação para incluir essas alterações. FINALIZANDO Vimos nesta aula a implementação elementar de unidades de memória com o emprego de flip-flops tipo D e os arranjos de FF para a formação de palavras de memória e blocos de palavras. Aprendemos sobre os sinais de controle, os barramentos de endereços e de dados, abordamos a interconexão de CPU com memórias, os conceitos de leitura e escrita em memória e os comportamentos dos sinais de controle para estas ações. Abordamos as técnicas construtivas e operacionais das memórias voláteis e não voláteis, as diferenças construtivas dos componentes eletrônicos empregados em cada memória e algumas das várias técnicas para armazenamento de um bit. Abordamos as formas técnicas para expansão das capacidades de memórias, organizando dispositivos em estruturas maiores de armazenamento e os ajustes necessários nos sinais de controle, para uma operação coerente. Por último, vimos os dispositivos lógicos programáveis, sua evolução e as diferenças entre CPLD e FPGA. 56 REFERÊNCIAS ALTERA Corporation. Cyclone IV Device Handbook – v. 1. Altera, 2016. Disponível em: . Acesso em: 21 jan. 2022. _____. Nios® II Processors. Altera, S.d. Disponível em: . Acesso em: 21 jan. 2022. CYPRESS Semiconductor Corporation. 1-Mbit (128K × 8) F-RAM Memory. Cypress Semiconductor Corporation, 2018. Disponível em: . Acesso em: 21 jan. 2022. _____. Ferroelectric RAM (F-RAM) Non-volatile Memory. Cypress Semiconductor Corporation, 2021. Disponivel em: . Acesso em: 21 jan. 2021. FREESCALE Semiconductor. MR2A16A – 256K x 16-Bit 3.3-V Asynchronous Magnetoresistive RAM. Frescale Semiconductor, 2007. Disponível em: . Acesso em: 21 nov. 2021. LATTICE Semiconductor Corporation. GAL16V8 – High Performance E2CMOS PLD Generic Array Logic™. Lattice, 2004. Disponível em: . Acesso em 21 jan. 2022. _____. GAL22V10 – High Performance E2CMOS PLD Generic Array Logic™. Lattice, 1996. Disponível em: . Acesso em: 21 jan. 2022. MARQUES, P. C. F. Algoritmo de roteamento Maze para dispositivos programáveis FPGA. Mestrado (Ciência da Computação) – Pontifícia Universidade Católica do Rio Grande do Sul. Porto Alegre, 2002. Disponível em: . Acesso em: 21 jan. 2022. MAXFIELD, C. Who made the first PLD? EETimes. 2011. Disponível em: www.eetimes.com/who-made-the-first-pld/. Acesso em: 14 de out. 2021. MILLMAN, J. Eletrônica V-II. São Paulo: McGraw Hill do Brasil, 1981. 57 MOUSER Eletronics. FM28V100-TG. Mouser Eletronics, S.d.a. Disponível em: . Acesso em: 21 jan. 2022. _____. 936-MR2A16ACMA35 MRAM. Mouser Eletronics, S.d.b. Disponível em: https://br.mouser.com/c/?q=936-MR2A16ACMA35. Acesso em: 19 nov. 2021. PEDRONI, V. A. Eletrônica digital moderna e VHDL. Rio de Janeiro: Elsevier, 2010. SHMJ – Semiconductor History Museum of Japan. Late 1980s – Applying three- dimensional cell structures to DRAM – Process Technology, SHMJ, 2019. Disponível em: . Acesso em: 21 jan. 2022. STMICROELETRONICS. M27C64A – 64K (8K x 8) UV EPROM and OTP ROM. STMicroeletronics, 1995. Disponível em: . Acesso em: 21 jan. 2022. TEXAS INSTRUMENTS INCORPORATED. Standard High-Speed Programmable Array Logic Circuits datasheet (PAM16L8). Texas Instruments, 1992. Disponível em: . Acesso em: 21 jan. 2022. _____. 16-Mb Radiation-Hardened SRAM. Texas Instruments, 2011. Disponível em: . Acesso em: 21 jan. 2022. TOCCI, R. J. Sistemas digitais – Princípios e aplicações. 11. ed. São Paulo: Pearson Prentice Hall, 2011. TRIMBERGER, S. M. Three Ages of FPGAs: A Retrospective on the First Thirty Years of FPGA Technology. IEEE Xplore, v. 103, n. 3, mar. 2015. XILINX Inc. 7-Series CLB Architecture. Xilink, 2012. Disponível em: . Acesso em: 21 jan. 2022. _____. Spartan-3A FPGA Family: introduction and ordering information. Xilink, 2018. Disponível em: . Acesso em: 21 jan. 2022. 58 _____. MicroBlaze™ Soft Processor Core. Xilink, S.d. Disponível em: . Acesso em: 21 jan. 2022.E1 e E0. Figura 6 – Uma estrutura de memória de quatro palavras de quatro bits (4x4) com sinais de controle para permitir endereçamento, leitura e escrita de dados A Figura 7 apresenta um diagrama descrevendo uma conexão típica entre CPU e dispositivos de memória, empregando os barramentos de endereços, dados e de controle. Nestas conexões, vários dispositivos de memória podem ser conectados ao longo do espaço de endereçamento da CPU, que é a quantidade máxima de posições de memória que podem ser gerados por ela. Caso uma CPU tenha 20 linhas de endereços, poderá gerar 1.048.576 (1MiB) posições diferentes de memória. O espaço de endereçamento pode ser divido entre tipos de memórias como na tabela apresentada na Figura 7. 8 Figura 7 – Conexão típica entre CPU e memória Fonte: Tocci, 2011, p. 690. A operação de leitura da CPU pode ser simplificadamente descrita como: 1. a CPU apresenta um endereço binário no barramento de endereços correspondente à posição de memória; 2. a CPU habilita a pastilha; 3. a CPU ativa os sinais de controle de leitura e habilitação da saída; 4. após um período para a execução da operação, a memória disponibiliza o dado daquela posição no barramento de dados; 5. a CPU lê o valor do barramento e o armazene em um registrador interno; e 6. a CPU desativa os sinais de controle. A operação de escrita da CPU pode ser descrita como: 1. a CPU apresenta um endereço binário no barramento de endereços; 2. a CPU habilita a pastilha; 3. a CPU apresenta os dados no barramento de dados; 4. a CPU ativa os sinais de controle de leitura; 5. a memória registra o dado do barramento na posição de memória endereçada; e 6. a CPU desativa os sinais de controle. O diagrama de tempo do ciclo de escrita de uma memória RAM é apresentado na Figura 8. No instante t0 um novo endereço é definido no barramento pela CPU. Um pouco depois, após a estabilização dos sinais de endereço, os sinais de habilitação de pastilha e de saída são ativados pela CPU. O intervalo tCO (charge output) é tempo necessário, após a habilitação, para que o dispositivo de memória disponibilize os 9 dados no barramento, que ocorre no instante t1. Os sinais 𝑂𝐸̅̅ ̅̅ e 𝐶𝑆̅̅̅̅ podem ficar ativos em tempos diferentes em dispositivos reais, considerados iguais neste texto, por simplicidade. No instante t2, os sinais de habilitação são desativados pela CPU. O período tOD (output data) é aquele no qual os dados ficam disponíveis no barramento até que o barramento volte ao estado de alta impedância, que acontece no instante t3. O ciclo encerra no instante t4, quando a CPU pode definir um novo endereço. A CPU tem o intervalo entre t1 e t3 para armazenar o valor do barramento nos registradores internos. O intervalo tRC (read cycle) é o tempo que define o ciclo de leitura da memória. O intervalo tACC (access) é tempo de acesso à memória. Figura 8 – Ciclo de leitura em memória Fonte: Tocci, 2011, p. 711. O diagrama de tempo do ciclo de leitura de uma memória RAM é apresentado na Figura 9. No instante t0, um endereço é definido no barramento. Após aguardar um período tAS (address setup) para que o decodificador da RAM ative a palavras de memória. Após este período, os sinais de habilitação de escrita e pastilha são ativados pela CPU, que permanecem ativos por um período tW (write time). No instante t1, durante tW, os dados são disponibilizados pela CPU, até o instante t2, no qual a CPU desativa os sinais de habilitação. O intervalo entre t1 e t2 é necessário para a estabilização do endereço, período definido como tDS (data setup). No instante t3, o barramento de dados entra em alta impedância. Entre t2 e t3, ocorre o período tDH (data hold), no qual os dados devem permanecer estáveis para o correto processo de escrita. 10 Entre t2 e t4, intervalo definido como tAH (address hold), os valores do barramento de endereços deve permanecer estáveis até o instante t4, para garantia da operação de escrita. O período tWC é o tempo do ciclo de escrita na memória. Os componentes de memória comerciais apresentam as funções de controle com pequenas variações no nome e no funcionamento do sinal. As folhas de dados de memórias (datasheets) trazem informações detalhadas a respeito dos sinais de controle, ciclos de operação e diagramas de tempo para escrita e a leitura de dados. Figura 9 – Ciclo de escrita em memória Fonte: Tocci, 2011, p. 711. As memórias não voláteis FRAM (ferroeletric RAM) FM28V100 da Cypress, apresentam capacidade de 128Ki palavras de 8 bits e sinais de controle para habilitação de pastilha com os sinais CE1 e 𝐶𝐸2 ̅̅ ̅̅ ̅ (chip enable), para de habilitação de saída 𝑂𝐸̅̅ ̅̅ (output enable) e para de habilitação de escrita 𝑊𝐸̅̅ ̅̅ ̅ (write enable) (Cypress, 2018, p.3). As memórias voláteis SRAM SMV512K32-SP da Texas apresentam capacidade de 512Ki palavras de 32 bits, organizadas em uma matriz de 210 linhas por 29 colunas de 32 bits. Emprega decodificadores de endereço para simular o formato da lista e utiliza sinais de controle para habilitação da pastilha E1Z e E2 (chip enable 1 e 2), habilitação de escrita WZ (write enable) e habilitação de saída para entrada/saída bidirecional GZ (output enable for bidirectional input/output) (Texas, 2011, p. 1). 11 As instruções de CPU são mais completas para operação em memórias. Pela praticidade deste acesso e pelo maior conjunto de instruções disponíveis, outros dispositivos como buffers de entrada e saída, registradores e controladores externos podem utilizar os mesmos sinais para operações de entrada e saída como se fossem posições de memórias, utilizando as posições de endereçamento disponíveis, que não estejam sendo usados por circuitos de memória. Esta técnica é conhecida como mapeamento de I/O em memória e é utilizada, por exemplo, em microcontroladores que utilizam o mapeamento de registradores de controle de hardware em posições de memória (vide Figura 7). TEMA 2 – MEMÓRIAS NÃO VOLÁTEIS As memórias não voláteis mantêm as informações registradas nas suas células de memórias, normalmente um bit por célula, mesmo sem alimentação. São normalmente empregadas para programas ou códigos de partida (boot) de sistemas digitais, ou para armazenar informações fixas como tabelas de conversão ou constantes. Neste tema, estudaremos alguns tipos de memórias não voláteis, princípios de funcionamento e características. 2.1 Memórias ROM As memórias ROM (Read Only Memory) são memórias não voláteis que permitem apenas a leitura de dados gravados por algum processo, algumas vezes, de forma definitiva. Desta maneira, apresentam apenas sinais de controle para permitir a leitura, como 𝑂𝐸̅̅ ̅̅ (output enable), para disponibilizar o valor acessado no barramento de dados, e 𝐶𝑆̅̅̅̅ (chip select), para habilitar a pastilha. As posições de memória que guardam as palavras de memória são selecionadas pelos valores apresentados no barramento de endereços. No exemplo da Figura 10, a tabela apresenta os valores possíveis para um barramento com quatro linhas de endereço, que seleciona 16 posições de memória ou que endereça 16 palavras de memória de oito bits. A tabela ainda exemplifica dados armazenados em cada posição nos formatos binário e hexadecimal, sendo este último aquele que é o mais amplamente utilizado para representar o conteúdo de memórias. A arquitetura de uma ROM é relativamente simples. O diagrama de blocos de uma ROM 16 x 8 é mostrada na Figura 11, apresentando os principais blocos funcionais. Os registradores armazenam as palavras de memória de 8 bits e são 12 formados por células de memória não volátil. Os decodificadores traduzem o valor binário do barramento de endereços para uma linha e coluna ativas, que habilitam um único registrador na estrutura matricial, disponibilizando o dado armazenado no barramento dedados interno. O buffer de três estados disponibiliza os valores binários do registrador selecionado do barramento interno no barramento externo (externo ao dispositivo) de dados. O sinal de habilitação 𝐶𝑆̅̅̅̅ ativa todos os blocos funcionais para a decodificação de endereço e habilitação do registrador. A ativação do sinal 𝑂𝐸̅̅ ̅̅ habilita o buffer de três estados, desde que 𝐶𝑆̅̅̅̅ esteja também ativo. Figura 10 – Memória apenas de leitura (ROM) típica 13 Figura 11 – Arquitetura de uma ROM 16 x 8 Fonte: Tocci, 2011, p. 693. Baseando-se no diagrama da Figura 12, o tempo de acesso (tACC) é um intervalo entre os instantes t1 e t3, que inicia na ativação do sinal 𝐶𝑆̅̅̅̅ e termina no instante no qual os dados são disponibilizados no barramento de dados. Esse período é o necessário para que os circuitos de decodificação operem, sensibilizem os circuitos do registrador e os circuitos dos buffers de saída. 14 Figura 12 – Temporização da ROM Fonte: Tocci, 2011, p. 695. Segundo Tocci (2011), as ROM com tecnologia bipolar apresentam tempo de acesso (tACC) 30 a 90 ns, as com tecnologia NMOS apresentam tempo de acesso de 35 a 500 ns e com tecnologia CMOS, tempo de acesso de 20 a 60 ns. Isso levou à produção de ROM, mais recentes, essencialmente em tecnologia CMOS. 2.2 ROM programadas por máscara As ROM programadas por máscara (MROM) são ROM configuradas durante o processo de fabricação do circuito integrado. A ROM é formada por uma matriz de transistores MOSFET canal N, configurados em dreno comum, com a função de responder aos estímulos dos sinais de seleção (Tocci, 2011, p. 696), cuja estrutura é mostrada na Figura 13. No ponto de interconexão dos terminais fonte dos transistores às vias de coluna há uma região que sofre uma deposição seletiva de material, dependendo da programação definida na máscara. Nesta figura, os transistores Q1 e Q3 então desconectados das vias de coluna, pois a máscara impediu a deposição de material. Já os transistores Q0 e Q2 estão ligados às vias de coluna. 15 Figura 13 – Estrutura MOS para um Mosfet para células de memória Fonte: Tocci, 2011, p. 696. As vias de saída do decodificador excitam as portas dos transistores com uma tensão positiva (nível lógico alto) dispostos em uma mesma linha da matriz, que formam um registro de quatro bits. Os transistores conectados às vias de coluna conduzem, produzindo um valor de tensão próximo ao VDD, nestas colunas. Os transistores não conectados às vias de coluna não conduzem, o que mantém as vias de coluna em GND, valor definido pelos resistores de pull-down. Conforme descrito, as vias de coluna apresentam os valores binários programados em cada posição de memória, que são selecionados pelos sinais do decodificador, conforme o estado de condução dos transistores da linha. 2.3 ROM programável A produção de ROM programadas por máscara são caras e só apresentam um custo adequado quando são produzidas em grandes quantidades, para reduzir o valor por unidade (Tocci, 2011, p. 698). A solução para permitir ROM em quantidades e custos menores foram atingidas na disponibilização de ROM programáveis por fusível (PROM), na qual a programação ocorre em campo, pelo usuário. Ao contrário do 16 processo por máscara, que cria uma conexão definitiva entre o terminal de dreno e via de coluna para alguns transistores, a construção de ROM programáveis por fusível adiciona uma ligação fina em todos os transistores. Os circuitos da gravação da ROM, durante a programação, ativam uma corrente com intensidade suficiente elevada para romper os fusíveis e definir células de memória com níveis lógicos baixos, conforme apresentado na Figura 14. Figura 14 – PROM com fusíveis Fonte: Tocci, 2011, p. 698. Essas ROM são conhecidas como OTP (one time programmable), reforçando que este processo de gravação pode ser realizado uma única vez. 2.4 ROM programável e apagável As EPROM (erasable programmable ROM) podem ser programas e apagadas quantas vezes for necessário. O processo de programação das células de memória na EPROM é diferente dos processos utilizados nas ROM e PROM, já vistas. As EPROM apresentam também uma matriz de transistores, mas existe uma diferença na conexão do terminal de porta. Há um eletrodo muito próximo ao cristal de porta do transistor, mas não um contato físico, conhecidos como transistores de porta flutuante FAMOS (floating-gate avalanche-injection MOS), empregados em praticamente todas as PROM comerciais (Pedroni, 2010, p. 339), e é apresentado na Figura 15 (a). Essa configuração mantem o terminal flutuante e, consequentemente, o transistor cortado, que leva a célula de memória a representar um valor de nível lógico alto. Para produzir um nível lógico baixo na célula, um pulso de alta tensão (12V) é aplicado à porta de controle enquanto circula uma corrente de dreno pelo canal. Alguns elétrons com energia cinética suficiente, desviados pela estrutura cristalina do substrato, conseguem atravessar a camada fina do isolante (SiO2), atingindo o 17 polisilício da porta flutuante, atraídos pelo forte campo elétrico presente na porta de controle. Esses elétrons são denominados quentes e este efeito, CHEI (channel hot- electron injection). Como esta carga não tem caminho para descarga, permanece indefinidamente na porta flutuante, elevando a tensão limiar (VT) condução para cerca de 6V, acima das tensões normalmente empregadas em circuitos digitais, trocando e mantendo o estado de condução do transistor FAMOS, produzindo um nível lógico baixo na célula de memória (Pedroni, 2010, p. 399). A estrutura de memória EPROM é apresentada na Figura 15 (b), mostrando a matriz de transistores Famos, com linhas de palavras (LN) e as linhas de bit (CN). Figura 15 – Transistor Famos (floating-gate avalanche-injection MOS) (a); estrutura da EPROM (b) Para limpar os dados da memória, uma luz UV intensa aplicada por vários minutos sobre o cristal, através de uma janela transparente disponível no encapsulamento do dispositivo, fornece energia suficiente para que dióxido de silício gere pares de elétrons-lacunas, que tornam o dióxido menos isolante permitindo a descarga da porta flutuante. Os apagadores de EPROM eram dispositivos usados para apagar as memórias, também denominadas UVPROM. Entretanto, as EPROM eram retiradas do circuito, conforme exemplo apresentado na Figura 16 (a), e levadas ao apagador de EPROM, mostrado na Figura 16 (b), para depois de alguns minutos, serem regravadas. Este processo não era muito prático para a atualização de versões de código. O uso de vários dispositivos de memória contornava o problema, realizando a programação da nova versão de código em EPROM limpas, sendo substituídas em seguida no circuito, enquanto as memórias com as versões antigas eram apagadas. 18 As EPROM possuem tempo de acesso de cerca de 45 ns, tempo de programação de 5 µs por palavra e apresentam durabilidade de certa de 100 ciclos. A EPROM M27C64A, da STMicroeletrocnics, por exemplo, é uma memória EPROM de 64Kibits (8Ki x 8), que apresenta tempo de leitura de 150 ns, tensão de programação de 12,5 V, o tempo de apagamento UV de 15 a 20 minutos, conforme especificações do fabricante, e apresenta sinais de controle comuns são habilitação de saída �̅� (output enable), habilitação de pastilha �̅� (chip enable), programação �̅� (programação) e tensão de programação VPP. Figura 16 – EPROM instalada em circuito (a); apagador de EPROM (b) a) b) Fonte: Thomas Machhart/Shutterstock; Susan Edmondson/Shutterstock. 2.5 ROM programável e apagável eletricamente As dificuldades apontadas para o uso da UVPROM foram resolvidas com a utilização de transistores Flotox (floating-gate tunneling oxide)nas células de memória. Neste transistor, uma parte do polisilício da porta flutuante é estendida e passa sobre a região de dopagem do dreno do transistor, isolados pelo dióxido de silício por uma fina camada de 10 µm, é apresentado na Figura 17 (a). Uma polarização adequada, com o dreno ligado ao GND e a porta de controle ao VPP (tensão de polarização), permite que elétrons da região do dreno ultrapassem a fina camada do isolante atingindo a porta flutuante, por um mecanismo de tunelamento (tunelamento Fowler- Nordheim), mantendo a carga permanentemente na porta flutuante, trocando o estado de condução do transistor. Uma polarização contrária, descarrega a porta flutuante pelo mesmo mecanismo (Pedroni, 2010, p. 401). Dispositivo de memória EEPROM (electrically erasable programmable ROM) são implementados com transistores FLOTOX, apresentado na Figura 17 (b), que permitem a programação e o apagamento das células de memória por um processo elétrico. 19 A programação do transistor pelo mecanismo de tunelamento apresenta dificuldade no estabelecimento do valor limiar, ou na quantidade de cargas na porta flutuante. Outro problema, é que o processo de programação e de apagamento do Flotox é simétrico, utilizando o mesmo mecanismo e mesmas tensões de polarização, que apresentava interferência da manipulação de uma célula em outras. Isso obrigou a inclusão de outro transistor para controle de programação, observado no diagrama na Figura 17 (b), pelos transistores ligados nas linhas de palavras L0 e L1, que resolveu os dois problemas já descritos, mas definiu que cada célula de memória emprega dois transistores (Pedroni, 2010, p. 401). Figura 17 – Transistor FLOTOX (floating-gate tunneling oxide) (a); estrutura interna de uma EEPROM (b) Os dispositivos de memória EEPROM contam com linhas de controle para habilitação de pastilha (𝐶𝑆̅̅̅̅ ), habilitação de saída (𝑂𝐸̅̅ ̅̅ ) e habilitação de escrita (𝑊𝑅̅̅ ̅̅ ̅) e tempo de escrita na EPROM é 200 ns (Tocci, 2011, p. 701). 2.6 Memórias flash Os transistores ETOX (EEPROM tunnel oxide) reúnem as características de programação com injeção por avalanche, utilizado nos transistores Famos, e apagamento por tunelamento, utilizado nos transistores Flotox, permitindo a construção de células de memória com apenas um transistor, que aumenta a densidade da memória e reduz seu custo por bit. As técnicas diferentes para programação e apagamento permitiram o melhor o controle sobre a carga na porta flutuante, permitindo 20 que a programação e o apagamento fossem realizados pela polarização do transistor. Mostrado na Figura 18 (a), o transistor ETOX (técnica de 130 nm) conta com a porta flutuante muito próxima do substrato, cobrindo toda a região do canal. Isto aumenta a área para tunelamento, reduzindo o tempo necessário para o apagamento da célula de memória (Pedroni, 2010, p. 402). Para evitar ao acréscimo do transistor de controle, como no caso das EEPROM, os pesquisadores optaram pelo apagamento total da memória antes de programação de dados, ou pelo apagamento aplicado à setores da estrutura, 512 bytes, por exemplo, cuja estrutura é mostrada na Figura 18 (b), apresentando as linhas de palavras (LN), as linhas de bits (BN) e as linha de ativação setorial (Sn) para seleção de setores. Esta condição de apagamento rápido da memória, levou à denominação de memória flash. Figura 18 – Transistor MOS ETOX (EEPROM tunnel oxide) de 130 nm, indicando a carga por injeção por avalanche e descarga por tunelamento (a); estrutura interna da memória flash (b) As células memórias flash são compactas, mas exigem uma operação complexa para garantir os valores de carga, que produzam valores de tensão limiar de condução adequados no transistor. Por esse motivo é comum que controladores, com esse propósito, sejam incorporados nas memórias flash autônomas, sem comprometer significativamente a área do cristal semicondutor. Outros tipos de transistores MOS são utilizados em memórias flash como alternativas ao controlador como o transistor de gatilho partido e transistor SONOS (silicon-oxide-nitrite-oxide-silicon) (Pedroni, 2010, p. 403-404). 21 Figura 19 – Relações de compromisso entre custo e complexidade das memórias não voláteis Fonte: Tocci, 2011, p. 702. O custo da memória flash é significativamente menor que das memórias EEPROM e apresentam menor complexidade (Tocci, 2011, p. 702), como apresentado no gráfico da Figura 19. 2.7 Memórias flash NOR e NAND As memórias flash NOR foram desenvolvidas como alternativa às memórias EEPROM, trazendo vantagens na densidade, desempenho e custo. Conforme apresentada na arquitetura na Figura 20 (a), os transistores estão posicionados em paralelo, compartilhando as linhas de bits (BLN) e o GND. As linhas de palavra (WLN) acessam individualmente cada transistor (célula de memória) pela porta de controle que podem puxar ou não, quando acionados, as linhas de bits para nível GND, conforme valor armazenado na porta flutuante do transistor ETOX. 22 Figura 20 – Estrutura flash NOR (a); estrutura flash NAND (b) Fonte: Tocci, 2011, p. 705. Portanto, como cada célula de memória sendo acionada de forma independente na estrutura, caso todas as linhas de memória estejam em nível lógico alto, fazem com que a linha de bits assuma nível lógico baixo e seja descrita de forma equivalente na expressão WL5 OR WL4 OR WL3 OR WL2 OR WL1 OR WL0 = 0. Esse é o comportamento de uma porta NOR que denomina esse tipo de memória como flash NOR. Na busca pela maior densidade e guiada pelas características de outros dispositivos de armazenamento de massa que operam por setores, dispensando o acesso aleatório byte a byte, transistores ETOX foram posicionados série entre a linha de bits e o GND, conforme apresentado na Figura 20 (b). Caso a linha a WL7 seja acionada e sejam aplicados níveis de tensão suficientemente elevadas nas demais entradas da estrutura (WL6 – WL0), para que a resistências de dreno sejam mínimas independentemente do valor da porta flutuante, o nível da linha de bit será determinado pela célula de memória ligada a WL7 (Tocci, 2011, p. 704). Este arranjo serial permite grande redução na área do cristal semicondutor, em cerca de 40% (Pedroni, 2010, p. 405). Portanto, para o acesso à uma célula de memória, os demais transistores da estrutura devem receber um nível alto, para se obter um zero lógico na saída, conforme descreve a expressão booleana WL6 AND WL5 AND WL4 AND WL3 AND WL2 AND WL1 AND WL0 = 0. Esse comportamento de função NAND dá nome à memória flash. 23 As memórias flash NAND apresentam tempo mais rápido de apagamento e programação, mas um tempo de leitura maior, devido à leitura ser realizada em blocos via controlador interno, responsável pelas operações da matriz de memórias, e apresentam uma pegada menor de silício, permitindo maior densidade de células de memória. A memórias flash NOR apresentam tempo de leitura menor e acesso aleatório byte a byte. Pelos comportamentos apresentados, as memórias flash NOR são utilizadas por CPU, em telefones celulares e outros sistemas embarcados, e a memória flash NAND para armazenamento de massa para arquivos de música e fotos, em filmadoras, câmeras digitais e flash drivers (Tocci, 2011, p. 705). As memórias flash NOR e NAND estão mais para uso complementar do que para uso concorrente (Pedroni, 2010, p. 405). 2.8 Memórias não voláteis mais recentes As memórias FRAM (Ferroeletric RAM) são memórias não voláteis, construídas com tecnologia ferroelétrica, que contém uma fina película ferroelétrica de titanato de zirconato de chumbo, comumente referido como PZT. Os átomos no PZT mudam de polaridade em um campo elétrico, produzindo assim uma chave binária com eficiência energética, que não são afetados por interrupções de energia.Apresentam tempos de leitura e escrita baixos, maior densidade, menor consumo que memórias EEPROM e apresentam maior imunidade a radiação, sendo tecnologia de concorrência direta às memórias EEPROM e flash NOR (Cypress, 2021). A Cypress FM28V100 é uma memória FRAM de 1Mib, (Cypress, 2018) comercializado por cerca US$ 18 (Mouser Eletronics, S.d.a). As memórias MRAM (magneto-resistive RAM) apresentam um resistor semicondutor de resistência variável por campo magnético, denominado MTJ (magnetic tunnel junction), como célula de memória, ligado ao dreno de um transistor nMOS. O MTJ é formado por um empilhamento de duas camadas ferromagnética (Fe- Co-Ni) separadas por uma finíssima camada de tunelamento (Al2O3 ou MgO), com certa de 2nm (Pedroni, 2011, p. 408). Linhas de controle são posicionadas muito próximas às placas, para permitir que um fluxo de corrente nessas linhas altere a polarização dos spins do material ferromagnético. Em uma das placas a polarização dos spins é fixa e na outra, a polarização é variável, magnetizada por uma corrente que flui nos dois sentidos. Se as camadas estiverem polarizadas na mesma direção, a resistência é mínima, pois os elétrons podem atravessar a barreira de tunelamento. Em polarização contrária, não ocorre o tunelamento e a resistência se torna muito elevada. Ao se 24 associarem níveis lógicos aos estados de condução do MTJ, forma-se uma célula de memória. A memória MR2A16A, da Freescale, é uma memória de MRAM de 4Mib, organizada em 256Ki palavras de 16 bits, que apresenta tempos iguais de escrita e leitura de 35 ns (Freescale, 2007), comercializada por cerca de US$ 29 (Mouser eletronics, S.d.b). TEMA 3 – MEMÓRIAS VOLÁTEIS As memórias voláteis perdem as informações registradas nas suas células de memórias, normalmente um bit por célula, quando ficam sem alimentação. São normalmente empregadas para programas executados em memória e dados produzidos e consumidos pelos programas em sistemas digitais, ou para armazenar informações de leitura, estados dinâmicos de processos, variáveis obtidas de processos externos e definição inicial de registradores de uso especial, como utilizados microcontroladores. Neste tema, estudaremos alguns tipos de memórias voláteis, princípios de funcionamento e características. 3.1 Memórias RAM estáticas As memórias RAM estáticas (Static RAM – SRAM) utilizam um FF como célula de memória. É uma memória volátil, pois a manutenção dos valores armazenados se mantém enquanto a alimentação do CI permanecer ligada. São denominadas estáticas por manterem os dados escritos nas células de memória estáveis, indefinidamente, enquanto a alimentação permanecer ativa. As SRAM são assíncronas, pois permitem leitura e gravação a qualquer momento. As RAM estáticas estão disponíveis em tecnologia bipolar, MOS e BiCMOS, embora a maioria das aplicações utilize memórias CMOS (Tocci, 2011, p. 710). As células destas tecnologias de memória são apresentadas na Figura 21. A tecnologia bipolar é rápida, mas ocupa maior área de silício, em função do tamanho dos transistores e dos resistores e demanda mais energia. A técnica nMOS utiliza MOSFETs, menores que transistores bipolares, e demandam menos energia para sua operação. Entretanto, as células de memória bipolar e nMOS mantêm uma corrente interna para a manutenção do estado armazenado, algo que não acontece na técnica CMOS, fazendo desta última técnica mais rápida e de menor consumo, mas envolvendo uma pegada de silício um pouco maior (Tocci, 2011, p. 710). 25 Figura 21 – Células de memória RAM Fonte: Tocci, 2011, p. 710. Pedroni (2010) apresenta uma implementação comum denominada 6T, empregando dois inversores CMOS ligados em anel e dois transistores nMOS para acesso, na implementação de células de memória CMOS, apresentado na Figura 22 (a). Uma matriz de células de memória com três linhas e três colunas é ilustrada na Figura 22 (b). A memória MCM6264C é uma SRAM CMOS comercial da Motorola, de 8 Ki palavras de 8 bits. O barramento de endereços tem 13 bits, 213 = 8.192 palavras, oito bits no barramento de dados bidirecional, tempos de acesso para leitura e escrita de 12 ns e consumo de 100 mW. No CI há dois sinais de habilitação de pastilha, um para nível lógico alto (CS2) e outro para nível lógico baixo (𝐶𝑆1 ̅̅ ̅̅ ̅), um sinal de escrita (𝑊𝐸̅̅ ̅̅ ̅) e um sinal de habilitação de saída (𝑂𝐸̅̅ ̅̅ ) ativos em nível baixo. 26 Figura 22 – Célula de memória SRAM 6T (a); Arranjo de 9 células 6T (3x3) (b) Fonte: Pedroni, 2010, p. 382. Sem os sinais de seleção de pastilha ou habilitação de saída fazem os circuitos de entrada e saída (I/O) permanecerem em alta impedância, que também leva a uma condição de baixo consumo, conforme diagrama e tabela-verdade apresentados na Figura 23. Figura 23 – Símbolo e tabela de sinais da SRAM MCM6264C Fonte: Tocci, 2011, p. 713. 3.2 Memórias RAM dinâmicas As RAM dinâmicas são memórias voláteis com tecnologia CMOS, caracterizadas por apresentarem alta capacidade de armazenamento (alta densidade), velocidades moderadas de acesso e baixo consumo (Tocci, 2011, p. 714). As DRAM (dynamic RAM) são síncronas, muito baratas, pequenas e precisam ser atualizas ciclicamente, para conservarem a informações registradas (Pedroni, 2010, p. 387), exigindo um comportamento específico dos sinais de controle. 27 A célula de memória da DRAM é formada por um transistor NMOS e um pequeno capacitor, conforme estrutura cristalina apresentada na Figura 24 (a), na qual se observa que o transistor e capacitor são integrados em uma mesma estrutura. O diagrama elétrico da célula de memória, é apresentada na Figura 24 (b), sendo denominada estrutura 1T-1C. A porta de controle está ligada na linha de palavra, o dreno na linha de bit (coluna) e o terminal de fonte ao capacitor integrado, e este último ao GND. Figura 24 – Estrutura cristalina da célula de memória DRAM 1T-1C (a); o diagrama elétrico da célula de memória (b); arranjo de 12 células de memória 1T-1C (c) Na Figura 24 (c) é apresentado um arranjo de 12 células de memória, organizadas em três linhas e quatro colunas. As linhas (Ln) são as linhas de palavras (world lines – WL) e as colunas (Cn) são as linhas de bit (bit lines – BL), disponibilizando, dessa forma, três palavras de quatro bits. A construção dos capacitores é altamente especializada (Pedroni, 2010, p.387). As células 1T-1C podem empregar várias estruturas construtivas de capacitores, como construção vertical (Trench capacitor), apresentado anteriormente na Erro! Fonte de referência não encontrada. (a), construção em múltiplas camadas (Stack capacitor) entre outras, cujas técnicas são apresentadas, simplificadamente, na Figura 25. Essa figura, ainda, relaciona as técnicas construtivas com as capacidades de armazenamento dos CIs de memória DRAM. O capacitor da célula de memória pode conter aproximadamente VDD, quando armazena um valor lógico alto (“1”) ou GND, quando armazena um nível lógico baixo 28 (“0”). No processo de escrita (observe a Figura 24c), os valores disponíveis nas linhas de bits (Bn) são carregados nos capacitores das células de memória 1T-1C, após a linha de palavra (Ln) receber pulsos de nível lógico alto. Na leitura do bit armazenado na célula 1T-1C (observe novamente a Figura c), a linha de bit (Cn) é carregada com meia tensão de VDD e é deixada isolada. O capacitor CBL, no diagrama, representa a capacitância parasita da linha de bit que retém este valor de ½ VDD na linha de bit. Ao acionar a linha de palavra (Ln), o transistor conduz, combinando a carga existente no capacitor da célula de memória com a carga da capacitância parasita. Como a capacitância da célula de memória é muito menor que CBL, a combinação das cargas produz uma pequena variação de tensão na linha de bitpara mais, quando o valor da célula de memória for “1”, ou para menos, quando o valor armazenado for “0”. Como a margem de ruído é muito pequena, são necessários sensores amplificadores de tensão para detectar essa variação de tensão na linha de bit e produzir uma tensão de nível lógico correspondente (Pedroni, 2010, p. 387). Observe, contudo, que o processo de leitura é destrutivo, ou seja, o valor armazenado na célula de memória é alterado no processo, necessitando de restauração. A restauração acontece pela recarga da célula de memória pela saída do amplificador sensor, que pode atender a toda uma linha de bits de células de memória (Tocci, 2011, p. 716). Figura 25 – Estruturas de células de memórias 1T-1C Fonte: SHMJ, 2019. 29 A Figura 26 (a) apresenta um diagrama simbólico do processo de escrita e leitura da informação armazenada na célula de memória, representando por chaves os transistores Mosfet empregados na célula 1T-1C. As chaves SW1 e SW2 são fechadas para salvar um valor da linha de bit no capacitor que é, efetivamente, o elemento de memória. A chave SW3 é fechada para a leitura do valor de tensão do capacitor com o emprego do amplificador sensor e as chaves SW4 e SW2 restauram a carga no capacitor, utilizando o valor gerado pelo amplificador sensor. Na Figura 26 (b) é apresentado um arranjo de células de memória, na qual 16Ki bits (16384 bits) então organizados em uma matriz de 128 x 128. Os decodificadores de linhas e colunas geram as linhas de bits (Cn) e palavras (Ln) que acionam as células de memória 1T-1C, individualmente. Figura 26 – Esquema simbólico da célula de memória DRAM (a); arranjo de uma memória DRAM em 16Ki x 1 (b) Fonte: Tocci, 2011, p. 715-716. O esquema de endereçamento mostrado na Figura 26 (b) apresenta de forma mais didática o acesso às células de memória, mas não é prático. Devido à densidade das memórias DRAM, o barramento de endereços é multiplexado para reduzir a quantidade de terminais de endereçamento do CI. A multiplexação permite compartilhar os terminais de endereçamento, exigindo um controle de temporização mais complexo, conforme diagrama apresentado na Figura 27 (a). Os sinais 𝑅𝐴𝑆̅̅ ̅̅ ̅̅ (row address strobe) e 𝐶𝐴𝑆̅̅ ̅̅ ̅ (column address strobe) são empregados para controlar a multiplexação de 30 endereços, conforme apresentada na Figura 27 (b), em duas etapas. O sinal 𝑅𝐴𝑆̅̅ ̅̅ ̅̅ sinaliza para o CI registrar o endereço disponível no barramento como endereço de linha, após um tempo de estabilização do endereço tRS (row setup) e, assim que baixar o sinal 𝐶𝐴𝑆̅̅ ̅̅ ̅, após um tempo tCS (column setup), sinaliza para registrar o valor disponível no barramento como endereço de coluna. Memórias de maior densidade recentes, utilizam um esquema de endereçamento tridimensional que dividem o espaço de endereçamento da memória, em bancos de memória, acessados individualmente. As memórias DRAM apresentam uma necessidade operacional que é inexistente nas SRAM, denominado ciclo de atualização (refresh). As células de memória, além da alteração sofrida no processo de leitura, também reduzem sua carga com o passar do tempo. Todas as informações gravadas nas memórias DRAM precisam de atualização, que, dependendo da tecnologia do CI de memória, podem variar de períodos entre 2 e 8 ms (Tocci, 2011, p. 720). Esta atualização interfere no ciclo de leitura e escrita dos dispositivos externos que precisam estabelecer um sincronismo com as memórias. Figura 27 – Diagrama simplificado de um CI de DRAM (a); temporização CAS/RAS (b) Fonte: Tocci, 2011, p. 717. Os circuitos de controle dos CI de memória são construídos para que a atualização das células de memória ocorra durantes os ciclos de leitura. Todas as células da linha ativa são atualizadas, evitando uma custosa atualização individual de células. Entretanto, no intervalo de atualização, muito provavelmente, as linhas não serão todas ativadas por ciclos de leitura, sendo necessário um mecanismo de atualização adicional para linhas não acessadas neste intervalo. Um contador, no bloco 31 de temporização e controle, fornece os endereços de cada linha que necessita de atualização. Há dois métodos utilizados neste processo, sendo o modo rajada (burst), que paralisa a operação do dispositivo de memória durante o ciclo de atualização, e o modo distribuído, que intercala atualizações entre ciclos de leituras na DRAM (Tocci, 2011, p. 721). Para aliviar a CPU nestes controles, os fabricantes investiram em controladores de DRAM que realizavam uma interface entre a CPU e os CI de memória, tratando da multiplexação de endereços e da geração de endereços para atualização (refresh). Outros fabricantes produziram conjuntos de circuito VLSI (very large-scale integration) de controle, denominados de chipset, para abrigar todos os controles para bancos grandes de memórias (Tocci, 2011, p.721). As DRAM mais recentes trazem nos circuitos de controle os recursos para atualização. Um destes recursos é o 𝐶𝐴𝑆̅̅ ̅̅ ̅ antes de 𝑅𝐴𝑆̅̅ ̅̅ ̅̅ (𝐶𝐴𝑆̅̅ ̅̅ ̅ before 𝑅𝐴𝑆̅̅ ̅̅ ̅̅ ), que inverte a ordem normal de acionamento destes sinais para instruir a DRAM a realizar o ciclo de atualização. Nesta operação, o sinal 𝐶𝐴𝑆̅̅ ̅̅ ̅ permanece baixo, enquanto 𝑅𝐴𝑆̅̅ ̅̅ ̅̅ é pulsado em nível lógico baixo, provocando o incremento do contador de atualização e a atualização das linhas de células de memória da DRAM. As memórias utilizadas em computadores são memórias DRAM síncronas SDRAM (Synchronous DRAM). A SDRAM é evolução da DRAM, que incorpora os circuitos de controle no mesmo CI, evitando a comunicação com controladores externos. A consequência desta mudança é o aumento de velocidade de operação. Utilizam uma derivação do relógio do sistema (CLK), portanto síncronas, e sinais de habilitação de relógio (CKE), seleção da pastilha (𝐶𝑆̅̅̅̅ ), habilitação de escrita (𝑊𝐸̅̅ ̅̅ ̅), sinais 𝑅𝐴𝑆̅̅ ̅̅ ̅̅ e 𝐶𝐴𝑆̅̅ ̅̅ ̅, com as mesmas funções da DRAM anterior, e o sinal DQM para mascaramento dos sinais de dados na entrada e saída (Pedroni, 2010, p. 390). Opera com endereçamento tridimensional contendo endereço de linha, coluna e bloco. O desligamento do relógio (CKE) coloca a partilha em repouso e ativa a autoatualização, pelos métodos auto-refresh, que opera como o CAS before RAS, e self-refresh, que atua quando o relógio externo está desativado, gerando os sinais internos de relógio e os endereços de atualização. Por último, o processo de leitura gera uma saída sequencial de dados, em rajadas rápidas de palavras de diversas posições de memória, A primeira palavra sofre uma latência pelo processo de endereçamento, mas as demais são transferidas na taxa do relógio. As memórias DDR utilizam memórias SDRAM com um padrão de comunicação definido entre módulos de memória e barramentos dos computadores. As taxas são 32 maiores porque a transferência de dados ocorre nas duas bordas do sinal de relógio (dual data rate - DDR), alcançando o dobro da taxa das memórias SDRAM (Tocci, 2011, p. 723). As memórias DDR2 utilizam técnicas de buffer para dobrar as taxas de I/O das DDR. E as DDR3 apresentam taxas de I/O duas vezes maiores que as taxas da DDR2. As memórias DDR operam com tensão de alimentação de 2,5 V, as DDR2 com 1,8 V e as DDR3 com 1,5 V, apresentando taxas de transferência máximas de 3,2 GBps, 6,4 GBps e 12,8 GBps, respectivamente, considerando a largura do barramento de dados de 64 bits, mas operando com os mesmos valores de relógio, entre 100MHz e 200MHz (Pedroni, 2010, p. 392). Exemplos de determinação da taxa de transferência das DDR SDRAM: 100 [MHz] x 2 (DDR) x 1 (taxa de I/O DDR) x 8 [bytes – 64 bits] = 1600 MBps 200 [MHz] x 2 (DDR) x 1 (taxa de I/O DDR) x 8 [bytes – 64 bits] = 3,2 GBps 200 [MHz] x 2 (DDR) x 4 (taxa de I/O DDR3) x 8 [bytes - 64 bits] = 12,8 GBps TEMA 4 – CIRCUITOSCOM BARRAMENTO E ARRANJOS DE MEMÓRIA Neste tema veremos circuitos mais complexos que empregam troca de dados entre circuitos lógicos, entre memorias RAM, ROM e outros registradores, utilizando os barramentos de endereço, dados e controle. Utilizaremos um dispositivo de memória hipotético de 128b, organizado em 16 palavras de 8 bits, conforme apresentado na Figura 28 (b). Para endereçar 16 posições de memória, o dispositivo conta com quatro linhas de endereços (A3, A2, A1, A0) e oito linhas de dados (D7 ... D0), além dos sinais de controle WE’, OE e CS. A tabela verdade do decodificador de endereços interno do dispositivo de memória descreve que recebe quatro valores do barramento de endereços e gera um sinal ativo de 16 saídas, que justamente habilita as células de memória localizada na posição endereçada. Para ampliar a capacidade da memória do sistema podem ser utilizados dois dispositivos iguais, com um certo ajuste no hardware. Uma quinta linha de endereço (A4) é utilizada, para produzir uma distinção entre dispositivo M0 e M1. Dessa forma, todos os sinais são postos comuns com exceção do sinal de habilitação de saída (OE) que combinado com o A4, habilitam ora o M0 ora o M1, conforme o endereço acessado. O efeito prático desse arranjo é como se as memórias separadas formassem uma única 33 memória de 32 x 8 bits, na qual o MSB distingue entre a primeira metade (A4=0) e a segunda metade (A4=1). Figura 28 – Tabela verdade de um decodificador 16:4 (a); Arranjo de memória para aumentar a quantidade de posições (b) No próximo exemplo, apresentado na Figura 29, o problema é diferente. Busca- se aumentar a largura do barramento de dados para 16 bits, utilizando dois dispositivos de memória com oito bits no barramento de dados. Nesta solução todos os sinais são comuns, com exceção do barramento de dados de cada dispositivo que são mantidos separados. O dispositivo M1 forma a parte mais alta do barramento (D15 ... D8) e o dispositivo M0 a parte mais baixa do barramento (D7 ... D0). 34 Figura 29 – Arranjo de memória para aumentar a largura do barramento No último exemplo, apresentado na Figura 30, o problema é aumentar a quantidade de posições de memória e a largura do barramento. Nesse caso, aplicam- se as duas soluções anteriores para resolver este problema. As memórias M11 e M01 ficam empilhadas com o uso da linha de endereço extra A4, assim como as memórias M10 e M00. Como os conjunto de memórias empilhadas possuem os mesmos sinais, basta uni-los com exceção das terminações de dados que se mantém separadas. Dessa forma M11 e M01 ficam responsáveis pela pete mais alta do barramento de dados (D15 ... D8) e M10 e M00, ficam responsáveis pela parte mais baixo do barramento de dados (D7 ... D0). O comportamento é de um dispositivo de memória de 32 x 16 bits, com 512b, total da soma da capacidade de quatro dispositivos individuais. A memória SRAM (Static RAM) SMV512K32-SP, da Texas Instruments, é uma memória de estática 16 Mib (megabits), assíncrona, com barramento paralelo de acesso, contando com projeto reforçando a proteção contra radiação e circuito interno autônomo para detecção e correção de erros EDAC (Error Detection and Correction) (TEXAS (2), 2011, p.1). A organização do SMV512K32-SP apresenta 512Ki palavras de 32 bits. De outra forma, existem 524.288 posições de memória (endereços) que guardam dados com 32 bits de largura. Poderíamos desejar um espaço de armazenamento de 1024Ki ou armazenar dados com 64 bits de largura. Ou ambos, 1024Ki posições de 64 bits. 35 Figura 30 – Arranjo de memória para aumentar a quantidade de posições e a largura do barramento A Figura 31 (a) apresenta o diagrama em blocos interno do SMV512K32-SP no qual se pode notar a matriz de células de memória, os decodificadores de endereço para ativação de linhas e colunas para seleção de uma palavra de memória específica, o circuito lógico para operação das habilitações, os circuitos para operação de escrita e leitura e o bloco para correção de erros (EDAC). Os sinais de habilitação são compostos pela habilitação de pastilha E2, para habilitação em nível lógico alto, e E1Z, para habilitação em nível lógico baixo, habilitação de saída GZ, ativo com nível lógico baixo, e habilitação de escrita WZ, também ativo em nível lógico baixo. 36 Figura 31 – Ampliação de memória aplicado à SRAM comercial: circuito interno do SMV512K32-SP (a) (fonte: baseado em TEXAS (2), 2011); ampliação espaço de endereçamento (b) A Figura 31 (b) apresenta uma forma de ampliação do espaço de endereçamento utilizando dois dispositivos de memória SMV512K32-SP, empregando uma nova linha de endereçamento (A19), aplicada a um decodificador 1:2 que fará a seleção entre o dispositivo M0 e M1, através do sinal de habilitação E2. Todos os demais sinais dos barramentos de dados e endereços. As operações dos dispositivos em modos mestre e escravo e da correção de erros não são abordados nesse exemplo. TEMA 5 – DISPOSITIVOS LÓGICOS PROGRAMÁVEIS Estudamos muitos circuitos lógicos distintos que, combinados, poderiam resolver muitos problemas, apresentando soluções abrangentes ou específicas, formando muitas vezes circuitos complexos como sistemas de controle ou processadores para aplicações específicas. Os microprocessadores (µP), microcontroladores (µC) e processadores de sinais (DSP), sinteticamente referidos CPUs, são dispositivos lógicos e atendem às necessidades de implementação de sistemas complexos. As CPUs possuem grande flexibilidade na construção do código e, embora possuam arquitetura genérica fixa, podem resolver inúmeros e diferentes problemas, muito adequadamente. Entretanto, soluções com CPUs podem experimentar desempenho insuficiente, limitando sua aplicação em sistemas que exijam respostas mais rápidas ou que tenham um maior compromisso entre consumo e desempenho. Os projetos que buscam 37 desenvolver sistemas de resposta mais rápida e específica empregam hardware combinado, com contadores, codificadores, decodificadores, memórias, somadores, multiplicadores e registradores, que apresentam respostas rápidas, mas que raramente são construídos de forma discreta, empregando circuitos integrados (CI) com portas lógicas ou MSI. Para essas soluções, os sistemas digitais são implementados em dispositivos lógicos programáveis, que permitem a construção de uma arquitetura dedicada, integrada e robusta, projetada para resolver muitos problemas, apresentando soluções de forma específica e eficiente em hardware (Tocci, 2011, p. 752). Uma classificação que organiza a relação entre as classes de componentes digitais já apresentadas pode ser vista na Figura 32, na qual se separam os dispositivos digitais em circuitos lógicos discretos, CPUs e circuitos integrados de aplicação específica ASICs (application-specific integrated circuits), que englobam os dispositivos lógicos programáveis, PLD (programmable logic devices). Figura 32 – Classificação dos dispositivos digitais Os ASIC possuem uma grande flexibilidade para a elaboração do projeto e podem ser totalmente dedicados e totalmente personalizados (full-custom) para uma aplicação específica. Essa flexibilidade que cobra um elevado custo de NRE (Non- recurring engineering), que abrange pesquisa, projeto, desenvolvimento e testes para produzir um novo dispositivo, apresentando riscos quanto ao retorno do projeto devido ao montante do investimento inicial, mas que, a partir da aplicação da máscara criada para os processos de fabricação, apresentam um custo por unidade mais baixo que outros métodos (Trimberger, 2015; Tocci, 2011, p. 752). Veremos que parte do sucesso das PLD vêm do menor NRE e do menor risco de projetos. Os primeiros PLDs foram desenvolvidos para apresentar umaarquitetura interna simples e útil, baseada em circuitos SOP (soma de produtos), que facilitou sua imediata aplicação em circuitos combinacionais, contribuindo na redução do espaço ocupado por componentes lógicos convencionais e na simplificação do projeto. Ao longo do tempo, os PLD ganharam flexibilidade e maior complexidade, sendo enquadrados em 38 classes mais específicas de PLDs, como CPLDs (complex programmable logic devices) e FPGAs (field programmable gate arrays), passando, todavia, ao se referir aos PLDs antecessores como SPLD (simple programmable logic devices), apresentadas na classificação da Figura 33. Figura 33 – Classificação de PLD, contendo o ano aproximado de lançamento das primeiras unidades Fonte: Pedroni, 2010; Trimberger, 2015; Maxfield, 2011. 5.1 PROM Os PLD PROMs (Programmable Read-Only Memories) que entraram em cena nos anos 1970 e apresentavam um princípio de operação baseada em uma matriz fixa de funções booleanas AND e uma matriz programável de funções booleanas OR (Maxfield, 2011), em uma estrutura SOP. Os bits de memória gravados, estabeleciam as conexões permanentes na matriz OR, como apresentado na Figura 34, pelos rompimentos de fusíveis nas linhas de soma (Tocci, 2011, p. 755). As entradas geravam sinais diretos e invertidos que eram utilizados na definição dos termos de produtos (fixo), que eram combinados em funções OR, que definiam os termos que participavam da soma pela programação (queima) dos fusíveis. 39 Figura 34 – Matrizes AND e OR utilizadas por PLD PROMs Fonte: Tocci, 2011, p. 755. Os PLD PROMs eram adequadamente funcionais na implementação da lógica combinacional, pois atendiam às expressões lógicas com uma grande quantidade de termos de produtos, mas não apresentavam, entretanto, boa capacidade para maiores quantidades de entrada, fato que levou à busca de novas arquiteturas (Maxfield, 2011). As memórias PROM também eram usadas para conversão de códigos fixos, em tabelas de compensação, mapeamento de parâmetros de desempenho, conversão de temperatura e tabelas de buscas, por exemplo, que evitavam a construção de grandes blocos lógicos, pela implementação de uma relação de/para entre valores. 5.2 PLA Os PLA (Programmable logic array) surgiram em torno de 1975, como um passo evolucionário em resposta às limitações das PLD PROMs. Apresentavam matrizes configuráveis pelos usuários tanto nas matrizes AND quanto na OR, conforme apresentado na Figura 35. O benefício imediato que também o diferenciava do PLD PROM era o menor aproveitamento dos recursos do componente, pela possibilidade de programar as duas matrizes, mas que deixava o PLA significativamente mais lento que estes primeiros, 40 devido à propagação dos sinais pelas estruturas de comutação das matrizes (Maxfield, 2011; Pedroni, 2010). Figura 35 – Arquitetura PLA Fonte: Pedroni, 2011, p. 416. 5.3 PAL Os PAL (Programmable array logic) foram introduzidos no mercado no final dos anos 1970. Com arquitetura diferente do PLA e oposto ao PLD PROM, apresentavam matriz AND configurável e matriz OR fixa, conforme arquitetura apresentada na Erro! Fonte de referência não encontrada. (a). As expressões: • f1 = a.h’ + a.b.c.d + a.b’.c + a.b’.c’; • f2 = a + e. foram implementadas na arquitetura genérica, na qual as conexões efetivadas no diagrama são representadas com pontos escuros, conforme pode ser visto na Figura 36 (b). O PAL16L8 é exemplo comercial com 16 linhas de entrada e oito linhas de saída, contando com linhas de realimentação. O diagrama funcional do PAL16L8 pode ser visto na Figura 37, na qual se observam as linhas exclusivamente de entrada, exclusivamente de saída e linhas de I/O (input/output) que podem ser usados tanto para entrada, saída ou realimentação. 41 Figura 36 – Arquitetura PAL (a); programação de duas expressões lógicas (b) Fonte: Pedroni, 2010, p. 415. Figura 37 – Diagrama funcional do PAL16L8 Fonte: Texas Instruments, 1992. O bloco mais à esquerda (buffer/inversor) duplica os sinais de entrada para sinais diretos (16) e invertidos (16), que são submetidos ao próximo bloco que é a matriz de comutação. A matriz de 32 sinais por 64 linhas, é programável e define a interconexão entre as 32 linhas de entrada às 64 linhas de entrada das funções AND. Na Figura 38 pode ser visto o diagrama lógico do PAL16L8, apresentando todas as linhas de entrada, saída e as linhas realimentação, sendo um circuito lógico combinacional. 42 Figura 38 – Diagrama lógico PAL16L8 Fonte: Texas Instruments, 1992. 5.4 PAL e PLA registrados Os PAL e PLA Registrados são PLDs que constam com um FF D nos circuitos de saída. Essa mudança permite a implementação de máquinas de estado finito e outros circuitos sequenciais nos PALs e PLAs. O PAL16R8 é exemplo comercial de 43 PAL registrado, com 16 linhas de entrada e oito linhas de saída, contando com linhas de realimentação, sinal de clock e FF D, que é apresentado na Figura 39. Figura 39 – Diagrama lógico do PAL16R8 registrado Fonte: Texas Instruments, 1992. 44 5.5 GAL O lançamento dos GALs (Generic Array Logic) trouxe várias melhorias com relação aos PLDs, principalmente nos circuitos de saída e no mecanismo de memória baseada em C-MOS eletricamente apagável (E²) (Maxfield, 2011). Lançadas pela Lattice em 1983, os GALs contavam com uma estrutura dinâmica e programável nos circuitos de saída denominada OLMC (output logic macrocell) ou, sinteticamente, macrocélula (macrocell), composta por FF, multiplexadores e portas lógica XOR. A arquitetura do GAL vista na Figura 40 (a), apresenta a arquitetura dinâmica de saída que permite várias configurações, como funcionamento de saída registrada e não registrada, direta e invertida, com realimentação registrada e não registrada e terminais de sinais combinadas para entrada e para saída, conforme apresentada na Figura 40 (b). Figura 40 – Diagrama de blocos GAL 16V8 (a); Diagrama lógico do OLMC (b) Fonte: Lattice, 2004; Pedroni, 2010, p. 418. O GAL 16V8 desenvolvido com tecnologia CMOS, apresentava tempo de propagação máximo de 3,5 ns, com frequência de operação de 250 MHz, recurso de assinatura e proteção do projeto e especificação para retenção de dados por 20 anos, sendo capazes de suportar implementações de controladores de DMA, controlador de máquina de estados finitos, processamento gráfico de alta velocidade e upgrade de velocidade para soluções em lógica padrão (Lattice, 2004). A arquitetura interna do GAL 45 16V8, vista na Figura 41, apresenta os terminais de entrada e de entrada/saída (I/O), a matriz AND, responsável pela configuração de termos de produto e as macros células (OLMC). Figura 41 – Diagrama lógico do GAL 16V8 Fonte: Lattice, 2004. 46 5.6 CPLD e FPGA No ritmo da evolução experimentada pelos GALs, no período do final dos anos 1970 e início dos anos 1980, surgiram PLDs mais sofisticados empregando estruturas de macrocélula que foram referenciados como PLD complexos (CPLD - Complex PLD) para distingui-los dos dispositivos anteriores que, em conjunto, passaram a ser referenciados como PLD simples (SPLD - Simple PLD) (Maxfield, 2011). Tentativas iniciais de criação de uma CPLD resultaram em dispositivos com consumo desproporcional e pouca atratividade, como no MegaPAL da MMI (Monolithic Memories Inc.), um PLD de 84 pinos, composto por quatro PALs interconectados, que apresentavam pouca vantagem com relação a utilização de quatro PALs individuais (Maxfield, 2011). A Altera, empresa fundada em 1983, lançou em 1984 um CPLD que combinava C-MOS e EPROM em um dispositivo com elevado nível de integração, complexidade e baixo consumo, muito adequado para o ambiente de desenvolvimento e prototipação. A estratégia e o salto conceitualque permitiram o bom desempenho do dispositivo e tornaram a Altera conhecida foi a utilização de uma estrutura de comutação interna entre as macrocélulas e terminas de entrada e saída, inferior a 100% de conectividade, requisito que tornava a MegaPAL grande, lenta e de elevado consumo. Essa estratégia exigiu mais do processo de configuração que elevou a complexidade dos sistemas de desenvolvimento (EDA – electronic design automation), mas que manteve o dispositivo com velocidade, consumo e custo escaláveis (Maxfield, 2011). A arquitetura de um CPLD pode apresentar uma estrutura genérica composta por vários PLD, conforme apresentado na Figura 42 (a), utilizado pelo Xilinx XC9500, ou pode utilizar uma arquitetura mais refinada composta LE (Logic Elements), pertencentes a um LAB (Logic Array Block) com possibilidade de interconexões locais entre LEs e para outros LABs via conexões de colunas e linhas, como pode ser visto na Erro! Fonte de referência não encontrada.(b), utilizado pelo Altera MAX II. Segundo Tocci (2011), os fabricantes possuem várias famílias de dispositivos lógicos programáveis, com diferentes arquiteturas e lançam modificações frequentes com especificações um tanto confusas, de forma que uma distinção entre CPLDs e FPGAs pode ser um tanto cinza e não muito evidente. Segundo Trimberger (2015), a natureza evolutiva de cada PLD apresenta as distinções estruturais uma vez que os CPLDs evoluíram a partir de uma arquitetura PAL e memórias e os FPGA, de uma arquitetura completamente nova que empregam blocos lógicos de natureza variável, 47 menores, ligados por barramentos de interconexão. Nos FPGAs, os blocos lógicos podem apresentar funções variadas, como funções especializadas e se interliguem de forma bastante variada. Pedroni (2010) afirma que os FPGA se diferenciam dos CPLDs em arquitetura, tecnologia, características embutidas, tamanho, desempenho e custo. A arquitetura do FPGA não emprega a matriz que fornecia a programação em CPLD. Em vez disso, o bloco concentrado de células de memória que ficava na matriz de comutação foi separado, distribuindo células de memória ao redor da matriz para funcionalidade controle e fiação. Essa mudança perde em eficiência com relação a matriz de memória da estrutura PAL, mas ganha a favor da escalabilidade arquitetônica. A arquitetura do FPGA, consiste em uma matriz de blocos lógicos programáveis e interconexões com chaves programáveis de campo. A capacidade e o desempenho do FPGA não estavam limitados pelo crescimento quadrático e leiaute de fiação da matriz AND típica dos CPLDs (Trimberger, 2015). Figura 42 – Arquitetura baseada na interconexão de PLDs utilizada pelo Xilinx XC9500 (a); arquitetura utilizando LAB e LE utilizada pelo Altera MAX II Fonte: Pedroni, 2010, p. 419. A Figura 43 apresenta a arquitetura do FPGA da Xilinx, da família Spartan-3A, na qual são apresentados os principais blocos funcionais destes dispositivos, como o bloco DCM (Digital Clock Manager), BRAM (Block RAM), CLB (Configurable Logic 48 Block) e IOB (Input/Output Blocks) e, adicionalmente, o bloco N*N que representa um bloco multiplicador que opera dois números de 18 bits, disponível nesta família. As funções dos blocos do FPGA são as que se seguem. • DCM – bloco que fornece uma solução digital autocalibrada, para distribuição, atraso, multiplicação, divisão e deslocamento de fase de sinais de relógio. • BRAM – fornece armazenamento de dados na forma de blocos de porta dupla de 18 kbit. • CLB – contêm tabelas de consulta (LUTs) flexíveis que implementam elementos lógicos e de armazenamento usados como flip-flops ou latches. O bloco CLB executa uma ampla variedade de funções lógicas, bem como armazena dados. • IOB – controla o fluxo de dados entre os pinos de entrada e saída e a lógica interna do dispositivo. IOBs suportam fluxo de dados bidirecional e operação de três estados. Suporta uma variedade de padrões de sinal, incluindo padrões diferenciais de alto desempenho e registros DDR (Double Data-Rate). • N*N – Blocos Multiplicadores – multiplicam dois números de 18 bits de largura. 49 Figura 43 – Arquitetura genérica de FPGA Xilinx Fonte: Xilinx, 2018. Cada bloco de memória é associado a um multiplicador dedicado. Os blocos DCM são posicionados no centro da distribuição dos blocos, com dois blocos posicionados acima e abaixo do dispositivo. Entre os blocos, esta família de FPGAs apresenta uma ampla rede de roteamento para interconexões entre os cinco blocos funcionais. No FPGA, cada CLB é formado por dois slices, um do tipo L (logic) e ou do tipo L e M (logic e memory) e uma matriz de comutação, conforme diagrama apresentado na Figura 44. Os slice M não utilizados no processo de síntese do dispositivo podem ser usados como blocos de memória. 50 Figura 44 – Diagrama interno do CLB Fonte: Xilinx, 2012, p. 5. Os SB (switch box) fecham conexões entre vias horizontais e verticais. Na série 7 da Xilinx, os slices são formados por seis tabelas de busca LUT (lock-up table), que podem assumir a função de memória ou de registrador de deslocamento SRL (shift register lacth), multiplexadores largos, cadeia de transporte de sinais de carry, quatro FF/latches e outros quatro flip-flops adicionais, conforme apresentado na Figura 45. Outro exemplo de arquitetura de um FPGA pode ser visto na Figura 46 que apresenta o Altera Cyclone IV, formado por linhas e colunas para conexões entre LAB (Logic array blocks), interconexões locais que ligam os LE. Cada LAB contém 16 LEs (Logic elements), sinais de controle do LAB, sinais de transporte de LE, registros de cadeias e interconexões locais (Altera, 2016, p. 33). Os LE são as unidades lógicas programáveis, compostas por um registro programável, quatro tabelas de procura (LUT - look-up table), cadeias de conexão para carry e registro, além dos controles para estabelecer conexões locais, linhas, colunas, registros e linhas diretas de interconexão entre LABs, conforme apresentado na Figura 47 (Altera, 2016, p. 29). 51 Figura 45 – Diagrama interno de um slice Fonte: Xlinx, 2012, p. 8. O registrador do LE pode ser programado para operar como FF tipo D, T, JK ou RS, que contém sinais de dados, relógio, habilitação de relógio e entrada de clear. Figura 46 – Arquitetura Altera Cyclone IV Fonte: Altera, 2016, p. 33. 52 Cada LE tem três saídas que podem ser direcionados para roteamento local, de linha ou de coluna. Essas três saídas podem ser controladas independentemente pelo LUT ou pelo registro. Duas saídas do LE podem ser conduzidas às conexões de coluna ou linha, enquanto a outra saída é conduzida para a interconexão local, recurso que permite que a LUT ou o registrador sejam utilizados de forma independente (Altera, 2016, p. 30). Figura 47 – Diagrama interno do LE Fonte: Altera, 2016, p. 30. Na Tabela 1 – estão as características de diversos dispositivos da família de FPGA Cyclone IV, em que se chama a atenção, principalmente, a quantidade de LE e terminais para uso, que permite a implementação de circuitos lógicos complexos. 53 Tabela 1 – Características dos dispositivos da família Cyclone IV Fonte: Altera, 2016, p. 17. 5.7 Arquiteturas típicas para CPLD e FPGA As arquiteturas típicas para dispositivos lógicos programáveis são apresentadas na Figura 48. A matriz simétrica apresenta maior flexibilidade por contar com linhas de conexão verticais e horizontais, apresentando grande granularidade. A arquitetura do tipo sea-of-gates emprega transistores e blocos de baixa complexidade (portas lógicas), com grande densidade de unidades, normalmente empregados em ASICs. Figura 48 – Tipos de arquiteturas de FPGA Fonte: Marques, 2002,