Prof V Vargas, IST RAM 26/11/13, Pg 1/14web.ist.utl.pt/~D898/public/sd/pdfs/RAM_all.pdf · Haverá...

14
Prof V Vargas, IST RAM 26/11/13, Pg 1/14

Transcript of Prof V Vargas, IST RAM 26/11/13, Pg 1/14web.ist.utl.pt/~D898/public/sd/pdfs/RAM_all.pdf · Haverá...

Prof V Vargas, IST RAM 26/11/13, Pg 1/14

Prof V Vargas, IST RAM 26/11/13, Pg 2/14

RAMs / 21aº Projecto (Banco de Registos / Register File)

Esta sessão versa RAMs. Descontada a sessão precedente, ela é uma continuação natural da abordagem dos

registos. Como todas as outras sessões, ir-se-á desenrolar a partir de um Projecto concreto, vidé enunciado ao lado.

Recordando que um objectivo referido na sessão de Apresentação é habilitar a compreender o funcionamento

de um computador – e, sendo esta a penúltima sessão deste itinerário –, este Projecto é, de certo modo, inevitável...

Ao lado encontra-se “uma possível” interligação – em que as aspas denotam que outras soluções são possíveis.

Ela é vocacionada para a denominada arquitectura MIPS (Microprocessor without Interlocked Pipeline Stages)

● O coração do logigrama é um banco de 32 registos (Register File);

• Cada um deles memoriza palavras de 32-bit; consiste em 4 registos de 8 flip-flop D, com entradas e saídas

activas a High, que reagem ao flanco ascendente dos impulsos na entrada ‘1C2’ – que é comum a todos eles.

● Em ordem a providenciar operações aritméticas (nomeadamente, adição ou subtracção) e lógicas (OR, AND

e NOT) entre um ou dois dos registos, existe ainda uma assim designada Unidade Aritmética e Lógica, ALU;

• Prevendo o caso geral de a operação envolver dois operandos, a ALU recebe dois valores, sob a forma de

palavras de 32-bit, que lhe chegam dos registos através de dois Buses de dados de leitura de 32-bit;

• O resultado da operação é um valor, também sob a forma de uma palavra de 32-bit, que é lançado para um

Buses de dados de escrita de 32-bit, a caminho do registo onde ele ficará memorizado.

● Em ordem a seleccionar a operação a realizar pela ALU, e os registos contendo os operandos e aquele onde

será guardado o resultado, existe ainda uma assim designada Unidade de Controlo.

● Em ordem à escrita nalgum registo do resultado que a ALU lançou para o Bus de dados de escrita,

• As entradas de dados dos flip-flops D dos registos estão ligadas às correspondentes linhas desse Bus;

• Cada registo é dotado de uma entrada enable, ‘G1’, que afecta todos os seus flip-flops – que deve ser

activada para que de facto seja escrito no registo o valor presente naquele Bus;

• Para identificar, entre os 32 registos, aquele onde será inscrito esse valor, existe um Bus de endereços de 5

bits (repare-se: 25=32), WAddr; o seu conteúdo é determinado pela Unidade de Controlo;

• As entradas enable dos 32 registos encontram-se interligadas às saídas de um descodificador desse Bus:

sendo este Bus aplicado às entradas de selecção do descodificador, ficará activa uma única das suas saídas – e em

consequência ficará activa apenas uma das entradas enable, precisamente a do registo identificado por WAddr.

Pressuponha-se então que a ALU produziu um resultado/palavra de 32-bit – e que a verteu no Bus de dados de

escrita; e, também que WAddr contém a identificação do registo onde ela deverá ficar inscrito; todos os registos a

“sentirão” na sua entrada, mas só naquele identificado em WAddr advirá activa a entrada enable – com o que, no

próximo flanco de comutação do clock, essa palavra advirá inscrita nesse registo e só nele: a escrita é síncrona.

● Em ordem à leitura dos dois operandos, sejam ‘A’ e ‘B’,

• Para identificar, entre os 32 registos, aqueles onde se encontram os dois operandos, existem dois Buses de

endereços de 5 bits, RAddr-A e RAddr-B; o seu conteúdo é determinado pela Unidade de Controlo;

• Cada um desses Buses é aplicado às entradas de selecção de dois conjuntos de 32 multiplexers; por

exemplo, às 5 entradas de selecção do multiplexer ‘A0’ é aplicado RAddr-A, e nas suas 32 entradas de dados

aplicam-se o bit menos significativo de todos os 32 registos – com o que a sua saída irá apresentar o bit menos

significativo do registo seleccionado por RAddr-A; e assim sucessivamente para os demais multiplexers…

Pressuponha-se então que RAddr-A e RAddr-B contêm a identificação dos registos com os operandos; afora os

tempos de propagação, os operandos ficarão de imediato disponibilizados à ALU: a leitura é assíncrona.

O logigrama omite, claramente por mor de simplicidade, e entre outros blocos funcionais: o que respeita ao

input (o teclado e o correspondente codificador, e a transferência do valor digitado para um registo) e o que

respeita ao output (a transferência de um registo para um display de 7-segmentos através do correspondente

descodificador); e também não se esmiuçou o interior da ALU e da Unidade de Controlo; bem como se não

exploraram outras alternativas (como seria condensar os três buses de dados num único, e condensar os três buses

de endereços num único): no fundo, desafios que serão triviais para quem tenha acompanhado este itinerário…

O importante agora é recapitular o percurso em torno da memória: tendo começado por latches e flip-flops, a

continuação foi registos e agora o register file… O que se segue? A resposta, a abordar já de seguida, é: RAMs…

Prof V Vargas, IST RAM 26/11/13, Pg 3/14

Prof V Vargas, IST RAM 26/11/13, Pg 4/14

RAMs / A Célula Básica da Memória RAM

Haverá sistemas digitais onde convirá memorizar largos volumes de bits – como sejam os relativos a

documentos de texto, tabelas, peças musicais, figuras e fotografias, filmes, etc…. A esse respeito, a solução “banco

de registos de flip-flops”, se bem que proporcionando rapidez na leitura e na escrita, é por demais dispendiosa –

pelo que já de há muito se tem investido na disponibilização no mercado de circuitos com vastas capacidade de

memória, porém a preços bem menores que aqueles em que a sua concretização em flip-flops se traduziria…

Globalmente, há duas famílias de memórias para grandes volumes de informação binária:

• De um lado, as assim designadas memórias de acesso sequencial (como sejam discos e fita magnética);

• Por outro lado, memórias de acesso directo, concretamente RAMs e ROMs (RAM: Random Access Memory;

ROM: Read Only Memory).

(Eis o que as distingue: nas primeiras, de acesso sequencial, o tempo de acesso, para leitura/escrita, depende da

localização no dispositivo da informação – enquanto nas segundas, de acesso directo, tal não acontece)

No âmbito desta disciplina, serão abordadas apenas as memórias de acesso directo. Isso será feito de um modo

faseado, percorrendo uma após outra as seguintes questões:

– como será a célula básica de memória – para memorizar/consultar informação constando só de 1-bit?

– como combinar várias dessas células, para memorizar/consultar informação constando de N palavras de 1-bit?

– como expandir tal organização, para memorizar/consultar informação constando de N palavras de k-bit?

A célula básica de memória encontra-se esquematizada ao lado; apresenta:

● Três entradas, ditas de Write/Read, Chip-select e Data-In;

• A entrada Write/Read designa a operação a realizar: se estiver activa, tratar-se-á da consulta/leitura do

conteúdo da célula; caso contrário, tratar-se-á do armazenamento/escrita de um “novo” bit na célula;

• Tal operação será executada somente se a entrada Chip-select estiver activa;

• Se se tratar da operação de escrita, ter-se-á que aplicar em Data-In o bit a armazenar na célula.

● Uma saída 3-state, Data-Out.

Bem vistas as coisas, a célula disponibiliza então três Modos de funcionamento:

– quando a entrada Chip-select, que é activa a Low, se encontra inactiva, a célula encontra-se inacessível, tanto

para escrita como para leitura: nem se lhe pode escrever nada, nem se pode conhecer o seu conteúdo;

– caso contrário (isto é: quando a entrada Chip-select se encontra activa), existem dois modos de Operação:

• Modo Write: Write/Read encontra-se Low – com o que a célula tomará o valor em Data-In;

• Modo Read: Write/Read encontra-se High – com o que a célula apresentará o seu conteúdo em Data-Out.

Para que a operação tenha sucesso, não custa descortinar qual deverá ser a sequência dos eventos:

● A propósito da escrita, o qualificador ‘C2’ significa que, para que a célula fique memorizando o bit aplicado

em Data-In, é necessário que estejam activos tanto o modo Write como Chip-select. Na prática, dever-se-á aplicar

em Data-In o valor a inscrever na célula e forçar Low em Chip-select – e enfim activar o modo Write (na prática,

forçando Low na entrada Write/Read); procedendo assim, a célula ficará armazenando o bit aplicado em Data-In.

● A propósito da leitura, o qualificador ‘G1’ significa que, para que se obtenha em Data-Out o conteúdo da

célula, é necessário que estejam activos tanto o modo Read como Chip-select. Na prática, dever-se-á forçar Low

em Chip-select – e activar o modo Read (na prática, forçando High na entrada Write/Read); procedendo assim, a

célula apresentará o seu conteúdo à saída, em Data-Out.

Ressalve-se entretanto que a especificação acima é independente da tecnologia de fabrico: o esquema ao lado é

puramente funcional, de maneira nenhuma significa que uma célula de memória seja mesmo feita de latches D:

Em termos práticos, o fabrico de RAMs é de facto feito ao nível dos transistores, que não de latches. A esse

respeito, coexistem duas famílias de RAMs:

SRAMs (Static RAMs): cada célula envolve 6 transistores;

DRAMs (Dynamic RAMs): cada célula envolve entre 1 a 3 transistores e um condensador, que obriga ao

refrescamento periódico da célula; elas providenciam uma maior densidade/capacidade de armazenamento e um

menor consumo de potência (e por conseguinte uma maior economia), porém uma menor rapidez no acesso.

Mercê das suas vantagens, as DRAMs são aplicadas na memória principal dos computadores, para programas e

dados, já as suas desvantagens leva a preteri-las em favor das SRAMs em bancos de registos e caches.

Prof V Vargas, IST RAM 26/11/13, Pg 5/14

Prof V Vargas, IST RAM 26/11/13, Pg 6/14

RAMs / RAMs 4x1, 4x4, 16x4

Apreendido o funcionamento de uma célula básica de memória, é hora de combinar várias dessas células, para

memorizar/consultar informação mais extensa.

Seja o caso de se pretender não apenas um registo de 1-bit, mas, por exemplo, quatro registos de 1-bit…

Deverá ser pacífico o esquema ao lado, à esquerda:

• Antes de mais, dispõem-se 4 células de memória, sejam {R3, R2, R1, R0}, em que, como é da praxe, elas se

situam verticalmente “umas por baixo das outras”, com os índices crescendo de cima para baixo…

• Aplica-se nas entradas Data-In de todas as células o mesmo bit de informação a escrever nalgum registo;

• Aplica-se nas entradas Write/Read de todas as células o mesmo sinal de selecção da operação a realizar…

• Porquanto as saídas das células são 3-state, procede-se à ligação de todas elas ao mesmo terminal de saída…

• Com isso, e pois que o objectivo é concretizar quatro registos de 1-bit, resta seleccionar/endereçar a célula

específica envolvida na operação: de cada vez que se memoriza/consulta, está-se de facto

memorizando/consultando um único bit em uma única célula!

Isso significa que as entradas Chip-select das células não podem estar “em curto-circuito”: em cada momento,

só uma delas pode estar activa. Isso resolve-se introduzindo um descodificador com duas entradas de endereço,

{A1, A0}, a cuja entrada enable se aplica o sinal Chip-select cuja activação é imprescindível para que a operação se

consuma: enquanto Chip-select estiver inactivo (High), todas as saídas do descodificador estarão inactivas, e em

consequência as células não estarão acessíveis; quando advir activo, uma única saída do descodificador ficará

activa, e portanto uma única célula ficará seleccionada para aí se realizar a operação em causa.

Seja agora o caso de se pretender quatro registos – não apenas de 1-bit, mas, por exemplo, de 4-bit:

Convirá tomar como ponto de partida o logigrama anterior, relativo a quatro registos de 1-bit, e modificá-lo:

• Em lugar de cada célula {R3, R2, R1, R0}, dispõem-se 4 células numeradas {3, 2, 1, 0}, horizontalmente,

“umas ao lado das outras”, com os índices decrescendo da esquerda para a direita…

• As linhas Data-In e Data-out advêm substituídas por dois buses, Data-In e Data-out, com 4 linhas cada. A

entrada Data-In e a saída Data-Out de cada célula são ligadas às correspondentes linhas desses buses…

• Mantém-se, é claro, o descodificador 2:4 em cuja entrada enable se aplica o sinal Chip-select – a diferença

sendo que de cada saída “sai” uma word-line, que é aplicada às pertinentes células de memória.

Seja enfim o caso de se pretender dezasseis registos de 4-bit:

Convirá tomar como ponto de partida o logigrama anterior, e modificá-lo:

• Antes de mais, há, é claro, que dispor 64 células de memória. Poder-se-ia fazer como acima – optar por uma

distribuição vertical para os registos –, mas uma alternativa é a assim nomeada distribuição bidimensional:

– os registos são mapeados numa distribuição de 4-colunas×4-linhas, com o que:

– metade do endereço, {A1, A0}, selecciona a coluna a que pertence o registo;

– a outra metade do endereço, {A3, A2}, selecciona a linha a que pertence o registo.

Na prática, e em vez de usar um descodificador 4:16 (implicando 16 ANDs de 4-entradas), usa-se a assim

denominada descodificação coincidente: recorre-se a um par de descodificadores 2:4 (em cujas entradas enable se

aplica o mesmo sinal Chip-select) – que tem a vantagem de se bastar em apenas 2×4 ANDs de 2-entradas.

Argumentar-se-á que se terá de adicionar, na intersecção de cada linha e coluna, vidé logigrama ao lado, um total

de 16 ANDs de 2-entradas (com entradas e saídas activas a Low) – mas fabricantes há que os dispensam em favor

de células de memória comportando, cada uma, 2 entradas chip-select.

Ao lado, apresenta-se o símbolo IEC de uma RAM assim. O Qualificador Geral é ‘RAM 16×4’. Disponibiliza 4

entradas de endereço, {A3, A2, A2, A0} – permitindo seleccionar entre 16 registos numerados {0, …, 15}. A ‘cave’

do símbolo determina que contém registos de 4 células, com uma mesma especificação: as entradas e saídas são

ambas activas a High – sendo que “A,2D” e ‘1A' afirmam que:

– as células se comportam funcionalmente como latches D;

– em cada momento, advém acessível externamente o registo então endereçado por A{A3, A2, A2, A0};

– o prefixo ‘2’ clarifica que a escrita é viável quando está activa a entrada de controlo ‘1C2’ – o que acontece

quando se encontram activas as entradas chip-select e ‘W’;

– o prefixo ‘1’ clarifica que a leitura é possível quando estão activas as entradas chip-select e ‘R’.

As entradas chip-select e ‘W’ são activas a Low, e a entrada ‘R’ é activa a High.

Prof V Vargas, IST RAM 26/11/13, Pg 7/14

Prof V Vargas, IST RAM 26/11/13, Pg 8/14

RAMs / Expansão de RAMs

Pressuposto que o mercado disponibiliza integrados concretizando 16 registos de 4-bits, a lei do menor esforço

manda que a obtenção de RAMs mais extensas já se não suporte em células básicas de 1-bit, mas em tais módulos.

Como exemplos de tal praxis, esquematizam-se ao lado uma RAM em que o comprimento de cada registo de

informação excede 4-bit, e, depois, uma outra onde também o número de registos vai bem além de 16…

Seja o caso de se pretender uma RAM 16×32, quer dizer: uma RAM com 16 registos de palavras de 32 bits.

● Pois que cada um dos módulos de RAM a usar oferece 16 registos de 4-bits, uma simples operação de

divisão, 32:4, esclarece que serão necessários, no total, 8 desses módulos: em ordem a perfazer uma palavra de 32

bits, cada módulo vem a contribuir com 4 bits de informação, vidé ao lado:

• um à direita para memorizar os 4-bits menos significativos da palavra, {Q3, Q2, Q1, Q0};

• um outro para memorizar os 4-bits da palavra de peso imediatamente superior, {Q7, Q6, Q5, Q4};

• e por aí fora, ficando os 4-bits mais significativos, {Q31, Q30, Q29, Q28}, no módulo à esquerda.

● Visando uma RAM comportando 16 registos, exige-se um bus de endereços de 4 linhas, {A3, A2, A1, A0} –

que alimentam as entradas de endereço de todos os 8 módulos;

Quando então o bus de endereços veicula, por exemplo, o endereço ‘1101’, é seleccionado, ao mesmo tempo e

em cada um dos 8 módulos, o registo numerado ‘13’; a contribuição de cada módulo para a palavra de 32-bits é

precisamente a palavra de 4-bits em que esse registo se volve; então, activando Chip-select,

• se se activar Write, é escrito nesses registos o que estiver sendo aplicado nas entradas {D31, D30, …, D1, D0};

• se se activar Read, é apresentada nas saídas {Q31, Q30, …, Q1, Q0} a informação contida nesses registos.

Seja agora o caso de se pretender uma RAM 128×32: uma RAM com 128 registos de palavras de 32 bits.

Manda a lei do menor esforço usar agora, como módulo de construção, a RAM 16×32 obtida acima:

• Pois que esse módulo oferece 16 registos de 32-bits, uma simples operação de divisão, 128:16, esclarece que

serão necessários, no total, 8 desses módulos: em ordem a perfazer 128 registos, cada módulo vem a contribuir

com 16 registos, vidé ao lado:

• um em cima, para memorizar os registos numerados {0-15};

• um logo abaixo, para memorizar os registos numerados {16-31};

• e por aí fora, ficando os registos numerados {112-127} no módulo mais abaixo.

● Visando uma RAM comportando 128 registos, exige-se um bus de endereços de 7 linhas, {A6, A5, …, A1, A0}

– que, para efeito de seleccionarem um daqueles registos, se subdividem em dois conjuntos:

– {A3, A2, A1, A0}, que alimentam as entradas de endereço de todos os 8 módulos;

– {A6, A5, A4}, que se aplicam a um descodificador 3:8, a cuja entrada enable se aplica a linha Chip-select; só

uma saída advirá activa – cabendo-lhe a ela activar a entrada Chip-select do módulo seleccionado.

Quando então o bus de endereços veicula, por exemplo, o endereço ‘0101101’, é seleccionado o módulo ‘2’ – e,

nele, o registo ‘13’: globalmente, é seleccionado o registo numerado 16×2+13=45.

● Conquanto não figurados no logigrama ao lado, para o não complicar inutilmente, subentendem-se dois buses

de dados, ambos de 32 linhas:

– um bus de dados de escrita, que é aplicado às entradas {D31, D30, …, D1, D0} de todos os 8 módulos;

– um bus de dados de leitura, a que se ligam as saídas 3-state {Q31, Q30, …, Q1, Q0 de todos os 8 módulos.

(Para bom entendedor, e restringindo a atenção ao bit menos significativo: as entradas ‘D0’ ficam interligadas à

mesma linha ‘D0’ do bus de escrita, e as saídas ‘Q0’ ficam interligadas à mesma linha ‘Q0’ do bus de leitura)

(Deixa-se ao leitor estruturar uma RAM com descodificação coincidente (2-linhas×4-colunas) de RAM 16×32)

Ao lado, esquematizaram-se os ciclos de leitura e escrita numa RAM:

• Em ambos os casos, a primeira etapa é precisar no bus de endereços o registo alvo; se se tratar de uma

operação de escrita, aplica-se no bus de escrita a palavra de 32-bits a inscrever em tal registo;

• A etapa seguinte é activar a linha chip-select – e logo, depois, o Modo de operação: Write ou Read. Então,

– se se tratar de uma operação de escrita, e passado um tempo de acesso para escrita, WAct, o registo

endereçado passará a conter o valor apresentado no bus de dados de escrita, Data-In;

– se se tratar de uma operação de leitura, e passado um tempo de acesso para leitura, RAct, será

apresentado no bus de dados de leitura, Data-Out, o conteúdo do registo endereçado.

Prof V Vargas, IST RAM 26/11/13, Pg 9/14

Prof V Vargas, IST RAM 26/11/13, Pg 10/14

RAMs / 21bº Projecto (Uso de RAM para Circuitos Combinatórios)

Recorde-se o objectivo maior a que esta sessão se propôs: proporcionar um meio para memorizar largos

volumes de informação. Neste momento, já não haverá dúvidas em como, usando os módulos de RAM com a

capacidade que o mercado oferece, constituir RAMs de muito maior capacidade: aquele objectivo está realizado.

Entretanto, e tal como após a introdução a contadores e registos se abordou o seu emprego na síntese (não

clássica) de circuitos, é inevitável a questão: e que tal usar RAMs para concretizar sistemas digitais, combinatórios

ou sequenciais? Sabê-lo como, eis o que se vai abordar – e quiçá não seja despropositado fazê-lo em torno de um

circuito que ficou na sombra: de facto, o 18cº Projecto, relativo a um dado electrónico, e pois que o seu alvo era o

desenho de um contador cíclico de ‘1’ a ‘6’, deixou ao leitor o desenho do codificador de 7-LEDs – um circuito

que, recebendo um dígito em binário, assinalasse os LEDs a acender. É hora de o revisitar…

Decidida a identificação {a, b, c, d, e, f, g} dos LEDs, as Tabelas de Verdade das saídas do circuito são triviais,

vidé ao lado – em que, por mor de simplificação, se assinalam só os ‘1’s, que não os ‘0’s e as indiferenças (‘X’).

Resolução com descodificador:

Posto que a contagem decorre entre ‘1’ e ‘6’ – cuja codificação em binário requere 3-bits –, há que dispor de um

descodificador 3:8, a cujas entradas de selecção se ligam as saídas {X2, X1, X0} do contador. As saídas do circuito,

num total de quatro, serão produzidas por outros tantos ORs – em cujas entradas são aplicadas as pertinentes

saídas do descodificador; para dar um exemplo: porquanto a coluna ‘d’ nas Tabelas de Verdade tem ‘1’s nas linhas

{1, 3, 5}, a saída ‘d’ virá a ser o OR das saídas do descodificador que estão numeradas {1, 3, 5}.

Resolução com multiplexer:

Desta feita, dispõem-se quatro multiplexers 8:1, a cujas entradas de selecção se ligam as saídas {X2, X1, X0} do

contador. As quatro saídas do circuito serão as saídas desses multiplexers – bastando para tal que se forcem nas

suas entradas de dados as correspondentes colunas das Tabelas de Verdade; por exemplo, e porquanto a coluna ‘d’

tem ‘1’s nas linhas {1, 3, 5}, somente nas entradas de dados {1, 3, 5} do multiplexer que produz ‘d’ se forçará ‘1’,

as restantes ficam a ‘0’.

Contemplando as duas soluções acima, o seu calcanhar de Aquiles reside na quantidade de integrados e fios

– e bom que seria usar uma solução com menos hardware… Para o efeito, reveja-se a solução com multiplexer: ela

baseia-se, é claro, no funcionamento de um multiplexer 8:1: ele é um dispositivo que apresenta à saída o valor que

se encontra na entrada seleccionada pelas suas entradas de selecção. Ora, este enunciado evoca o funcionamento

de uma RAM 8×1: quando se encontra no modo de leitura, ela é um dispositivo que apresenta à saída o valor que

se encontra na célula seleccionada pelas suas entradas de endereço. Isso sugere substituir cada multiplexer 8:1

por uma RAM 8×1, em que se inscreveram os valores aplicados nas entradas de dados daquele. – ou, melhor ainda,

e em vez de usar quatro RAM 8×1, compacta-las a todas em uma RAM 8×4!

Ao lado, concretiza-se esta sugestão, todavia envolvendo a RAM 16×4 que o mercado oferece:

• Às entradas de endereço {A2, A2, A0}, ligam-se as saídas {X2, X1, X0} do contador, ficando A3=0;

• Activa-se a entrada Chip-select, forçando nela o nível Low;

• Nos registos, inscreve-se os conteúdos das próprias colunas {a, b, c, d} das Tabelas de Verdade; conquanto

isso se não reflicta no logigrama, intui-se como se fará na prática: aplicam-se nas entradas de endereço, um após

outro, os valores {1, …, 6} – ao mesmo tempo que se forçam nas entradas de dados os correspondentes valores nas

colunas das Tabelas (e activa-se momentaneamente o modo de escrita). O subsequente conteúdo da RAM passará

a ser o que ao lado se indica (em que se optou preencher com ‘0’s os registos não utilizados e se omitem os últimos

registos {8, …, 15}); em particular, o bit mais à esquerda dos registos {1, …, 6} passará a conter a coluna ‘a’…

• Activa-se o modo Read, forçando o nível High na entrada qualificada ‘1 EN’.

Suponha-se que, a dado momento, o contador marca ‘5’ – o que acarreta que as entradas de endereço vêm a ser

‘0101’; então, advém seleccionado o registo ‘5’, cujo conteúdo é ‘1101’; estando activado o modo Read, as saídas

{a, b, d} ficam sendo ‘1’ enquanto a saída ‘c’ advém ‘0’ – e isso é o que as Tabelas determinam que deva ser!

É clara a vantagem no uso de RAMs: não há mais fios, e basta um integrado só… A desvantagem é que, a

suceder alguma interrupção na alimentação/Power-off, o conteúdo da RAM volatiliza-se: é preciso voltar a

carregá-la com os valores das colunas {a, b, c, d}… Ou então haverá que optar pelas assim designadas ROMs –

que será um assunto da próxima sessão…

Prof V Vargas, IST RAM 26/11/13, Pg 11/14

Prof V Vargas, IST RAM 26/11/13, Pg 12/14

RAMs / 21cº Projecto (Uso de RAM para Circuitos Sequenciais)

Se as RAMs serão interessantes para circuitos combinatórios, sê-lo-ão também para circuitos sequenciais: estes

precisam, além de flip-flops para guardar o estado actual, de malhas combinatórias para gerar as saídas do circuito

e, eventualmente, os valores que excitam as entradas dos flip-flops… Um Projecto novo poderá ilustrá-lo…

Pretende-se um circuito sequencial síncrono com uma entrada e duas saídas, {Z1, Z0}. O circuito analisa o bit

que acaba de receber: se ele for igual ao anterior, a saída é ‘00’; se o não for, analisa o conjunto de bits que

recebeu até então; a saída (exceptuando a primeira, que é irrelevante) será:

– ‘01’ se acabou de receber um número ímpar de ‘0’s (desde o último ‘1’);

– ‘10’ se acabou de receber um número ímpar de ‘1’s (desde o último ‘0’);

– ‘11’, caso contrário.

Ao lado, encontra-se também o Diagrama de Estados seguindo o modelo de Mealy:

1. Considere-se o momento em que se faz o power-on… Será pacífico iniciar o circuito a um estado ‘S00’;

2. Seja ‘0’ ou ‘1’ o primeiro bit a ser recebido, a saída será irrelevante. Relativamente ao estado que o circuito

deverá adquirir após o próximo clock: se esse primeiro bit for ‘0’, o circuito irá transitar para um estado, ‘S10’, que

significa que já recebeu um número ímpar de ‘0’s; mas se for ‘1’, o circuito irá ingressar em ‘S01’, que significa

que já recebeu um número ímpar de ‘1’s;

3. Considere-se, agora, que o circuito se encontra no estado ‘S01’.

– se receber um ‘0’, a saída será ‘10’, e o circuito transitará para ‘S10’ ;

– se, porém, receber um ‘1’, a saída será ‘00’ – e o circuito transitará para ‘S11’, que significa que já recebeu um

número par de ‘1’s;

4. Deixa-se ao leitor o completar o Diagrama de Estados...

Completado o Diagrama de Estados – que remete para ao menos dois flip-flops, sejam {Q1, Q0}, e decidida a

codificação de estados que se indica, serão pacíficas as Tabelas de Transições e Saídas, {Q1, Q0} e {Z1, Z0}.

Resta agora desenhar um logigrama que concretize tal circuito; para o efeito,

• Usar-se-á, para memorizar o estado actual, um vulgar registo com 4 flip-flops D – dos quais se “aproveitarão”

tão-somente os dois primeiros/de-cima, {Q1, Q0};

• Usar-se-á para concretizar as malhas combinatórias, uma vulgar RAM 16×4 (pois que existe uma entrada

externa, ‘X’, e duas entradas internas, {Q1, Q0}, que em conjunto se volvem em 8 combinações possíveis, e há que

produzir 4 saídas, bastaria uma RAM de 8×4 – se ela estivera disponível no mercado).

• Optando por aplicar ‘X’ à entrada de endereço menos significativa, e {Q1, Q0} às duas que se lhe seguem, o

passo seguinte é ligar {Q1, Q0, X} às entradas de endereço {A2, A1, A0} da RAM, ficando A3=0;

• Essa RAM deverá produzir as saídas {Z1, Z0}, e bem assim os valores que excitam as entradas {D1,D0} do

registo. Ora, dada a qualificação ‘1D’ dos flip-flops do registo, a subsequente Tabela de Excitação do circuito

acaba por ser uma duplicação da Tabela de Estados, {Q1(t+1)=D1(t), Q0(t+1) )=D0(t)}.

Optando por memorizar {Z1, Z0} nas células menos significativas dos registos da RAM, e {D1, D0} nas mais

significativas, há que inscrever nos registos da RAM o conteúdo das Tabelas de Verdade: nomeadamente, inscreve-

se a coluna D1=Q1 na posição mais significativa, e na menos significativa inscreve-se a coluna Z0;

• O passo seguinte é ligar as saídas mais significativas da RAM às duas primeiras entradas do registo, {D1, D0};

• Enfim, activa-se a entrada Chip-select (forçando Low em ‘G1’), e activa-se o modo Read da RAM (forçando o

nível Low na entrada qualificada ‘1 EN’).

Suponha-se que, a dado momento, o registo apresenta ‘11’ nas saídas {Q1, Q0}, e que a entrada externa do

circuito, ‘X’, é ‘0’ – o que acarreta que as entradas de endereço da RAM vêm a ser ‘0110’; então, advém

seleccionado o registo ‘6’, cujo conteúdo é ‘1011’; estando activado o modo Read, as saídas {Z1, Z0} ficam de

imediato sendo ‘11’ enquanto as saídas {D1, D0} advêm ‘10’: no próximo clock, o circuito irá ingressar no estado

‘10’ (em termos práticos: o registo passará a memorizar ‘10’ ) – e isso é o que as Tabelas determinam que deva ser!

(Nota: nada obriga a que a configuração na RAM seja aquela ao lado – mas não custa descortinar-lhe as razões:

– nas entradas de endereço, as entradas externas são as de maior peso, e as internas são as de menor peso;

– conforme ao layout apresentado na forma canónica de Mealy, as saídas {Z1, Z0} do circuito estão por cima e

os valores {D1, D0} que excitam as entradas dos flip-flops estão por baixo)

Prof V Vargas, IST RAM 26/11/13, Pg 13/14

*

Prof V Vargas, IST RAM 26/11/13, Pg 14/14

RAMs / Análise de Circuitos com RAM (ou ROM)

Quando um projectista se engaja no desenho de um circuito, e antes de o materializar de facto, e para evitar

posteriores dissabores, há que “fazer a prova dos nove”: será que o circuito concebido segue mesmo o diagrama de

estados desenhado inicialmente? E este passo de maneira nenhuma se deve omitir!

Admita-se então que um Projectista chegou ao logigrama que se apresenta ao lado. A questão imediata a que

deve responder é: qual o correspondente Diagrama de Estados?

A primeira etapa é compreender o que está aplicado às entradas e saídas da RAM; a esse respeito,

• As linhas que interligam as entradas externas {X1, X0} e internas {Q1, Q0} às entradas de endereço da

RAM significam que em {A3, A2, A1, A0} estão aplicados os valores {Q1, Q0, X1, X0};

• A linha de saída de ‘Z’ significa que os valores que ‘Z’ pode tomar estão memorizados nas células menos

significativas dos registos da RAM; e reparando nas ligações entre as saídas da RAM e as entradas do registo, é

lícito deduzir que nas duas células imediatamente adjacentes se encontram {D1, D0};

A segunda etapa é compreender o modelo seguido no desenho do circuito; a esse respeito, bastará constatar

que a saída ‘Z’ depende apenas dos estados do circuito: quando {Q1, Q0} são ‘00’, o que corresponde às quatro

primeiras linhas, a saída é ‘1’; quando são ‘01’, o que corresponde às quatro linhas seguintes, a saída é ‘0’; e assim

sucessivamente… Seguiu-se, pois, o modelo de Moore…

Estão então reunidas as condições para desenhar o Diagrama de Estados…

• Em primeiro lugar, é mercê reparar que nas entradas de endereço os pares de valores nas colunas {Q1, Q0}

podem assumir todas as 4 combinações possíveis – o que leva a concluir da existência de quatro estados,

codificados por ‘00’, ‘01’, ‘10’ e ‘11’; no Diagrama de Estados, corresponderão graficamente a outros tantos

círculos – que será pacífico nomear respectivamente de ‘S00’, ‘S01’, ‘S10’ e ‘S11’;

• Nas quatro linhas do topo, os valores de {Q1, Q0} são ‘00’, isto é: elas especificam o comportamento do

circuito quando ele se encontra no estado ‘S00’; para todas essas linhas a saída é Z=1, o que leva a incluir no seio

do círculo ‘S00’ a saída ‘1’; a primeira linha especifica que, quando {X1, X0} são ‘00’, o estado seguinte é o próprio

estado ‘S00’ – o que se volve graficamente numa seta de ‘S00’ para ‘S00’, etiquetada por ‘00’; a segunda linha

especifica que, quando {X1, X0} são ‘01’, o estado seguinte será S01’ – o que se volve graficamente numa seta de

‘S00’ para ‘S01’, etiquetada por ‘01’; a terceira linha especifica que, quando {X1, X0} são ‘10’, o estado seguinte

será ‘S10’– o que se volve graficamente numa seta de ‘S00’ para ‘S10’, etiquetada por ‘10’; a quarta linha especifica

que, quando {X1, X0} são ‘11’, o estado seguinte será ‘S11’ – o que se volve graficamente numa seta de ‘S00’ para

‘S11’, etiquetada por ‘11’;

• Nas quatro linhas seguintes, os valores de {Q1, Q0} são ‘01’, isto é: elas especificam o comportamento do

circuito quando ele se encontra no estado ‘S01’; para todas essas linhas a saída é Z=0, o que leva a incluir no seio

do círculo ‘S01’ a saída ‘0’; a quinta linha especifica que, quando {X1, X0} são ‘00’, o estado seguinte é o próprio

estado ‘S01’ – o que se volve graficamente numa seta de ‘S01’ para ‘S01’, etiquetada por ‘00’; a sexta linha

especifica que, quando {X1, X0} são ‘01’, o estado seguinte será S10’ – o que se volve graficamente numa seta de

‘S01’ para ‘S10’, etiquetada por ‘01’; a sétima linha especifica que, quando {X1, X0} são ‘10’, o estado seguinte será

‘S11’– o que se volve graficamente numa seta de ‘S01’ para ‘S11’, etiquetada por ‘10’; a oitava linha especifica que,

quando {X1, X0} são ‘11’, o estado seguinte será ‘S00’ – o que se volve graficamente numa seta de ‘S01’ para ‘S00’,

etiquetada por ‘11’;

• Não será difícil ao leitor completar o Diagrama de Estados do circuito…

Termine-se com um parêntesis: na próxima sessão, serão abordadas as assim designadas ROMs. Permita-se

entretanto que se assevere desde já que o seu funcionamento é deveras similar ao das RAMs: funcionalmente, a

diferença reside no facto de as ROMs serem dispositivos de memória apenas de leitura (“não se lhes pode escrever

nada”), enquanto as RAMs são dispositivos de escrita e leitura: equiparando uma ROM a uma RAM

permanentemente em modo de leitura, poder-se-á inferir que os processos de síntese e análise de circuitos com

ROMs são quasi indistintos dos processos de síntese e análise de circuitos com RAMs.

É isso que legitima intitular este slide/página com “Análise de Circuitos com RAM (ou ROM)”