Anda di halaman 1dari 12

CENTRO FEDERAL DE EDUO TECNOLGICA DE MINAS GERAIS DEPARTAMENTO DE ENSINO DO SEGUNDO GRAU COORDENAO DO CURSO TCNICO DE ELETRNICA

LABORATRIO DE SISTEMAS MICROPROCESSADOS I

O COMPUTADOR DE 1 BIT

Agosto/2006

Prof. Joel Augusto dos Santos Prof. Denny Daniel Collina denny@deii.cefetmg.br

O Computador de 1 bit
Histrico das revises
Verso Agosto 2006 Prof. Denny D. Collina (denny@deii.cefetmg.br) Correes e adequaes no texto; Sintoma: o computador no reinicializa aps a execuo de halt; o Correo no circuito: adio de lgica para reabilitar o CLK quando a entrada RSTin\ for ativada. Verso Janeiro 2006 Prof. Denny D. Collina Sintoma: a instruo RST no apresenta ciclo de execuo. o Correo no circuito: substituio do 74LS161 por 74Ls163; Adio de novos programas propostos. Verso Maio 2005 Prof. Denny D. Collina Nova diagramao do texto; Desenho das figuras; Sintoma: a instruo OUT no apresenta ciclo de execuo. o Correo no circuito: adio de uma porta OR (CI7A) entrada de CLK do registrador de sada; Verso Junho 1992 Prof. Joel Augusto dos Santos Implementao inicial do PD-01.

1.1 Introduo
O estudo da lgica e da eletrnica digital nos permite, atravs de tcnicas adequadas, obter um circuito lgico que corresponda a um raciocnio, a um pensamento. Isto o projeto lgico. Assim sabemos que, se temos uma determinada proposio, podemos exprimi-la sob a forma de variveis lgicas e a partir destas, montarmos uma tabela verdade que retratar todas as combinaes possveis das variveis de entrada, relacionando-as com a sada. Uma vez obtida a tabela verdade, podese ento definir a equao do circuito.

Utilizando tcnicas de simplificao, mtodo algbrico ou grfico, podemos reduzir esta equao a um mnimo de termos possveis a fim de simplificar o circuito final.

Pensamento Lgico

lgebra Booleana

Circuito Lgico

Figura 1: O projeto Lgico.

Desta forma, sempre que tivermos um problema lgico, poderemos lanar mo destes procedimentos e obter um circuito que o resolva. Se um novo problema se apresenta, novamente o processo dever ser repetido para se obter um novo circuito que satisfaa ento, as novas exigncias. 0 ideal seria que pudssemos ter um circuito lgico universal, pronto para resolver qualquer problema lgico. Este circuito teria que se adaptar a cada nova proposta com o objetivo de resolver problemas especficos e diferentes, ou seja, teria que ser PROGRAMVEL. O PROGRAMA ser constitudo, ento, por uma srie de tarefas, ordens, comandos ou INSTRUES, as quais este circuito ter que executar uma a uma, na seqncia estabelecida por ns. Esta seqncia de instrues ou simplesmente programa, obviamente ter que estar disponvel, previamente armazenada em algum tipo de dispositivo capaz de memoriz-las e t-las disponveis para uso do circuito programvel, toda vez que for necessrio executar o programa. Temos que dotar este circuito de um dispositivo de entrada que o permitir receber variveis ou DADOS e transferi-los para o circuito programvel.

O Computador de 1 bit.

De maneira semelhante, temos a necessidade de um circuito de sada que possibilitar acesso aos resultados. Utilizando diagrama de blocos para representar o exposto teremos a Figura 2: A partir desta configurao bsica, desenvolveremos o nosso primeiro modelo de processador digital, sistema programvel capaz de executar seqencialmente operaes lgicas, previamente ordenadas de forma a atender uma tarefa ou proposio lgica. 0 nosso sistema ter a capacidade de manipular 1 bit de informao ou dado.
Circuito Programvel

Entrada

Sada

Memria

Figura 2: Circuito Lgico Universal. Isto significa, por exemplo, que: Uma varivel de 1 bit pode ser colocada na entrada do sistema, depois transferida para o circuito programvel ou processador e depois de processada, esta informao poder ser transferida para o bloco de sada.
Tudo isto naturalmente acontecer, seguindo as instrues contidas no programa armazenado na memria do sistema. Vamos ento definir a funo exata de cada bloco do sistema para gerar os sinais de controle adequados a cada bloco.

1.2 Bloco de Entrada - Input


A funo deste bloco ser a de transferir para o bloco processador, o dado presente na entrada do sistema, toda vez que isto for solicitado pelo programa. Isto conseguido atravs de apenas um sinal de controle que, toda vez que for ativado, far com que o bit presente na entrada, seja transferido para o processador Daremos a este sinal a denominao OpInp.
Input Data

Entrada de Dados
ao processador

OpInp

Figura 3: Bloco de entrada de dados.

1.3 Bloco de Sada - Output


Uma vez processado, o dado dever ser entregue na sada do sistema. 0 bloco de sada dever ento transferir o contedo do processador para a sada, toda vez que receber um sinal de controle que vamos denominar OpOut.
do bloco do processador

Sada de Dados

Output Data

OpOut

Figura 4: Bloco de sada.

1.4 Circuito Programvel - Processador


J o bloco processador, ser responsvel pelo processamento do dado propriamente dito, mas vamos compreender primeiro o que realmente consiste processar um dado de apenas um bit. Vamos analisar todas as possibilidades de aes possveis que poderemos realizar com apenas 1 bit de informao:
Operao Descrio

SET RESET

Independente de qual for o contedo do processador, ao receber um comando de SET podemos afirmar que logo aps comando, o contedo do mesmo ser nvel 1. Se receber um comando de RESET, o contedo do processador passar a ser nvel 0, independente do valor anterior.

Uma operao de complemento ao ser realizada, inverte o estado do processador, seCOMPLEMENTO ja ele qual for. A ltima operao possvel de se realizar com apenas 1 bit, exatamente nenhuma operao, ou seja, NO OPERAO ou simplesmente NOOP. Esta atividade aparentemente intil, ter grande aplicao quando ao executar programas, tivermos a necessidade de gerar constantes de tempo. Depois de sofrer uma operao NOOP, o contedo do processador deve manter-se inalterado. Tabela 1: Operaes realizadas com um bit.
O Computador de 1 bit. 3

NO OPERAO

De posse destas 4 operaes passveis, podemos concluir que o nosso bloco processador dever poder receber 4 tipos de comandos distintos: SET, RESET, CPL e NOOP. Para representar quatro situaes diferentes, sero necessrias duas linhas de controle para o bloco processador, chamaremos estas linhas de OpSet e OpClr. Se compararmos a tabela de operao obtida para o bloco processador com a tabela verdade de um Flip Flop do tipo JK, poderemos observar o seguinte:
Circuito Processador

J
para o bloco de sada

K 0 1 0 1

Funo NOOP RESET SET CPL

do bloco de entrada

0
J K Q _ Q

Qa
0 1
Qa

0 1 1

OpSet OpClr

Figura 5: Bloco do processador.

Figura 6: Flip Flop JK e sua tabela verdade.

Em um FF do tipo JK, quando as entradas de dados esto ambas em zero, ao acontecer uma transio ativa do sinal de clock, a sada permanece no estado anterior Qa , o que equivale funo no operao NOOP. Quando as entradas J e K estiverem em estadas lgicos diferentes entre si, 01 e 10, os contedos destas entradas sero transferidos para as sadas Q e Q respectivamente. Isto equivale s funes de RESET e SET do nosso circuito processador. Por ltimo, quando as entradas J e K forem iguais a 1, ao acontecer uma transio ativa do clock, a sada Q assumir a situao de Q anterior barrado que corresponde funo complemento CPL. Temos ento, j definido, o nosso circuito processador que ser simplesmente um Flip Flop JK, capaz de processar 1 bit de dado. Com o exposto at aqui, o circuito processador j ser capaz de realizar os seguintes comandos ou instrues:
Mnemnico Descrio

SET RESET CPL NOOP INPUT OUTPUT

Leva o contedo do processador ao estado lgico 1. Leva o contedo interno do processador ao estado lgico 0. Inverte o estado lgico do contedo do processador. No altera o contedo interno do processador. Copia o valor da entrada de dados para dentro do processador. Copia o contedo do processador para a sada de dados. Tabela 2: Conjunto de instrues do processador (incompleto).

Para que estas e outras instrues sejam executadas pelo circuito processador, elas devero estar armazenadas no bloco de memria do sistema, organizadas sob a forma de programa. Um programa, como j foi definido, um conjunto de instrues ordenadas adequadamente a fim de executar uma tarefa. Como um circuito de memria digital s capaz de armazenar 1's e 0's, as nossas instrues tero que necessariamente estarem representadas sob a forma de nmeros, cdigos binrios denominado CDIGO OPERACIONAL da instruo ou simplesmente "OPCODE". Estes cdigos ento que sero lidos e executados pelo sistema de uma forma contnua e seqencial. Quanto codificao das instrues vamos deixar para mais tarde. Agora vamos resolver agora a questo de como fazer com que as instrues, uma vez armazenadas na memria, apaream uma a uma na sada de forma contnua e seqencial a fim de orientar o sistema. Uma memria para colocar um de seus dados em sua sada, (operao de leitura), dever receber o endereo da localidade desejada em seu barramento de endereos. Conclui-se ento que deveremos desenvolver um circuito capaz de gerar endereos de forma contnua e seqencial. Um contador binrio realiza faO Computador de 1 bit. 4

cilmente esta tarefa. Gera nmeros binrios seqencialmente em suas sadas Q3, Q2, Q1, e Q0, toda vez que perceber uma transio ativa de clock em sua entrada de mesmo nome. Como este contador ser o responsvel por gerar endereos para possibilitar a execuo de programas, vamos denomin-lo CONTADOR DE PROGRAMA.

Figura 7: Incluindo suporte para as instrues HALT e RESTART. Se criarmos a possibilidade de exercer algum tipo de controle sobre as entradas de clock e clear do contador de programa, poderemos criar mais 2 instrues: HALT e RESTART. HALT Ao executar a instruo HALT, o sinal OpHLT\ deve ser gerado com o propsito de interromper o acesso da freqncia de clock ao contador de programa. Para tanto, ser necessrio lev-lo a nvel lgico 0 (ativo em 0). Com o sinal OpHLT\ em zero, a sada do gate do tipo AND permanecer em zero independentemente do sinal de clock. Isto quer dizer que: sem clock, o contador de programa no ser incrementado para acessar a prxima instruo da memria e sendo assim o sistema processador para. Depois de executar uma instruo deste tipo, o processador cessa o processamento e s ter condio de retornar se for dado um reset no contador de programa. RESTART 0 gate tipo AND na entrada de clear do contador de programa, gera duas vias ou possibilidades de reset no sistema. Uma delas, atravs da entrada de RSTin\. Basta levar esta entrada a nvel 0 para que a entrada clear do contador de programa tambm v a nvel 0, o que fora o contador a levar suas sadas de Q3 a Q0 a nvel 0. Sendo estas sadas o barramento de endereo da memria que contm o programa, equivale dizer que um RESET, fora o processador a recomear a execuo do programa a partir do endereo 0h. A segunda maneira possvel de se reiniciar a execuo do programa tambm a partir do endereo inicial 0h, atravs do sinal de controle OpRST\. Uma instruo criada ento com esta finalidade, assim que for executada, levar o sinal OpRST\ a 0 o que tambm resultar em um 0 na entrada MR (master reset) do contador de programa, levando o mesmo a enderear a posio 0h de memria. Conclui-se que o sistema possui agora, dois modos de ser reinicializado: POR HARDWARE via entrada de RESET, ou POR SOFTWARE via instruo RST.

1.5 Gerao da Palavra de Controle - Control Word


0 que se pode observar at aqui que, toda instruo criada e comentada tem uma funo especfica; nica no sistema. E para que esta funo seja executada, os circuitos adequados devero ser acionados atravs de sinais de controles apropriados.

O Computador de 1 bit.

Desta forma, observa-se que para que uma instruo de INPUT seja realizada, quando o cdigo binrio que a representa for selecionado pelo contador de programa, algum circuito dever receber e interpretar este cdigo gerando em sua sada o sinal de controle IN. De maneira semelhante, ao ser executada uma instruo SET, por exemplo, o cdigo 10 binrio dever ser gerado para as linhas de controle OpSet e OClr do bloco processador. Este comportamento ser vlido para todas as instrues que o sistema for projetado para suportar. O cdigo operacional destas instrues dever ser enviado a um circuito que seja capaz de entender ou DECODIFICAR estes cdigos, gerando ento em sua sada o sinal de controle adequado. Chamaremos ento este novo bloco de DECODIFICADOR DE INSTRUES e a sua sada ser composta por um conjunto de sinais de controle que iremos denominar PALAVRA DE CONTROLE ou CONTROL WORD. A funo do DECODIFICADOR DE INSTRUO ser ento a de receber em suas entradas o cdigo operacional da instruo que vai ser executada, e gerar em sua sada uma CONTROL WORD adequada, que ative as partes corretas do sistema a fim de que a instruo seja executada.

Figura 8: Diagrama simplificado do PC + memria de programa + decodificador de instrues.

1.6 Instrues de Desvio


Sabemos que o contador de programa o responsvel por gerar endereos para a memria do sistema de forma continua e seqencial. 0 problema comea quando sentimos a necessidade de quebrarmos esta seqncia. Por exemplo: queremos que um programa, quando estiver sendo executado, salte para uma posio determinada da memria e continue, a partir deste endereo, a execuo. Esta posio dever poder ser qualquer endereo dentro do espao possvel de endereamento do sistema, no caso de 0h a Fh. Este procedimento de pular para outra posio e a partir desta estabelecer uma nova seqncia, nos leva a criar uma nova modalidade de instruo que a instruo JUMP, que significa exatamente salto, pulo. Uma instruo deste tipo ao ser executada, fora o contador de programa, responsvel por gerar endereos, a mudar o seu contedo para o novo valor desejado, ou seja, dever ser possvel carregar no contador de programa um novo endereo binrio, e a partir da, ao receber os prximos incrementos via entrada de clock, gerar nova seqncia de endereos. Para tanto, vamos acrescentar no contador de programa 4 entradas que permitiro introduzir um nmero binrio qualquer de 4 bits, toda vez que um sinal de preset enable denominado PE , for acionado. Assim, se colocarmos por exemplo o binrio 1010 nas entradas D3, D2, D1, e D0 do contador de programa e o sinal PE for levado a nvel 0, este valor ser carregado dentro do contador, aparecendo nas sadas Q3, Q2, Q1, e Q0 respectivamente.

Tabela 3: Salto do contador de programa.

Este valor binrio colocado nas entradas de D3 a D0 corresponde, ento, ao novo endereo para onde queremos desviar o programa, e o sinal OpJp\ ser mais um sinal de controle gerado pelo decodificador de instrues toda vez que o mesmo perceber o cdigo operacional da instruo de JUMP em sua entrada. O endereo de desvio da execuo do programa dever ser uma informao a ser fornecida pela prpria instruo de JUMP, j que e a mesma que est causando o desvio.
O Computador de 1 bit. 6

Figura 9: Implementando instrues de desvio incondicional. Este fato cria uma nova modalidade de instruo com um novo formato. Toda instruo at agora, composta apenas de um cdigo operacional de 4 bits que alimenta diretamente o decodificador de instrues. Agora, 4 bits sero necessrios para representar o cdigo da instruo, mais 4 bits para representar o endereo de desvio.Sendo assim, esta nova instruo ter o comprimento de 1 byte (8 bits), sendo 4 bits de cdigo e 4 de endereo.
Estes novos 4 bits, sadas O7 a O4 da memria de programa, iro diretamente s entradas de D3 a D0 do contador de programa. Ao ser gerada a palavra de controle correspondente instruo JUMP, o sinal OpJp\ ser gerado pelo decodificador de instrues. Na prxima borda de subida do sinal de clock este novo endereo ser carregado no contador de programa, o que corresponde ao salto desejado. JUMP CONDICIONAL A instruo de JUMP que acabamos de implementar, executada toda vez que for encontrada na seqncia do programa. Se a mesma estiver contida no programa, sempre ser executada, incondicionalmente. Vamos desenvolver agora um novo tipo de JUMP. Este JUMP ter a mesma caracterstica do outro, ou seja, salta para a posio desejada da memria, mas s se uma determinada condio for satisfeita. A condio que vai ser testada por esta nova instruo ser o estado interno do bloco processador. Sabemos que este bloco tem a capacidade de executar instrues lgicas com 1 bit de dado. Vamos, ento, verificar se depois de uma determinada operao, o contedo do processador nvel 0 ou 1. Para isto, necessrio gerar um novo sinal de controle que ser acionado quando O jump condicional for executado. Chamaremos de JUMP ZERO, e o sinal gerado na control word, denominaremos OpJz. Toda vez que uma instruo do tipo JZ for executada, o sinal OpJz ser gerado pelo decodificador de instrues. Este sinal ser ento comparado com o contedo interno do processador. Para isto, basta realizar uma funo NAND com o sinal de controle OpJz e a sada complementada do bloco processador (Dado\). Quando o contedo do processador for 0, equivale dizer que a sada Q do FF JK ser 1. Ao executar uma instruo JPZ, o sinal OpJz ser ativado tambm em 1 o que leva a sada da NAND a 0. Este 0 levar o sinal PE a 0, carregando o endereo de jump contido na prpria instruo, no contador de programa. Mas se por outro lado, o contedo do processador for 1, a sada Q ser 0 e ativao do sinal OpJz, no afetar o sinal PE , no alterando o contedo do contador de programa que seguir a seqncia normal de endereamento que estava realizando. Concluindo, o JUMP ZERO (JZ) s ser executado se o contedo do processador for zero. A funo da porta NAND sinalizar o estado interno do processador. O circuito que desempenha esta funo conhecido por "FLAG" (sinalizador). No nosso sistema, toda vez que o FLAG ZERO for 1 indicar que o contedo do processador zero e vice versa.
bit 7......4 Endereo 3......0

OpCode

Figura 10: Formato da instruo.

O Computador de 1 bit.

Contador de Programa
D0 D1 D2 D3

Memria de Programa
A0 A1 A2 A3 A4

Decodificador de Instrues
A0 A1 A2 A3 A4

OpHLT\
CLKin
5V
CP CET CEP

Q0 Q1 Q2 Q3 TC

Seleo
MR PE
CS

O0 O1 O2 O3 O4 O5 O6 O7

O0 O1 O2 O3 O4 O5 O6 O7

CS

OpRST\ OpHLT\ OpOut\ OpJp\ OpJz OpClr OpSet OpInp

74LS161 CI1

PROM32 CI2

PROM32 CI3

OpJz

OpRST\

Dado\
CI8A
CI5D
CI5A

RSTin\

OpJp\

Figura 11: Adicionando instrues de desvio condicional.

1.7 Projeto do Decodificador de Instrues


At aqui, sabemos que todas as instrues do nosso sistema devem possuir um cdigo operacional. So estes cdigos que usaremos para introduzir programas na memria do sistema, pois um sistema processador digital s trabalha com nmeros binrios, lembre-se. Sendo assim, vamos agora relacionar nossas instrues a um nmero binrio que ser considerado, daqui em diante, como sendo o cdigo operacional de cada instruo que o nosso processador capaz de realizar. Vamos tambm, daqui em diante, nos referenciar s instrues utilizando-se do procedimento de mnemnicos, que constitui uma forma resumida de se referir a elas, valendo-se de apenas algumas letras que juntas, lembram a instruo completa. De posse dos cdigos operacionais das instrues, poderemos definir o funcionamento do decodificador de instrues. Isto facilmente conseguido bastando para tanto, relacionar o cdigo binrio que chegar na entrada do decodificador, com a control word que o mesmo dever entregar na sada para cada instruo. Vamos relacionar tudo isto em uma tabela verdade para melhor clareza:
Instruo Mnemnico NOOP SET CLR CPL JP JZ RST INP OUT HLT Hexa 00 01 02 03 04 05 06 07 08 09 Opcode 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 Mnemnico NOOP SET CLR CPL JP JZ RST INP OUT HLT

Tabela 4: Conjunto completo de instrues do processador.

Control Word
OpInp OpSet OpClr OpJz OpJp 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 1 1 1 1 1
OpOut OpHLT OpRST

Hexa

1 1 1 1 1 1 1 1 0 1

1 1 1 1 1 1 1 1 1 0

1 1 1 1 1 1 0 1 1 1

0F 4F 2F 6F 07 1F OE 8F 0B 0D

Tabela 5: Tabela verdade do decodificador de instrues.

O Computador de 1 bit.

De posse desta tabela, temos condies de implementar um circuito lgico capaz de entregar na sada um byte diferente, correspondente a cada instruo. Este byte representar a control word especfica para a execuo da instruo. Um circuito que se presta muito bem a esta aplicao, uma memria do tipo ROM. Se assumirmos que, na Tabela 5, a coluna correspondente instruo (Hexa) como sendo endereo uma ROM, e a coluna control word como sendo os dados contidos nestes endereos, podemos concluir facilmente que o decodificador de instrues pode ser implementado a partir de uma ROM. Para isto, basta gravar em cada um dos 10 primeiros endereos o byte correspondente control word. Desta forma, o cdigo operacional de cada instruo vinda da memria selecionar a control word adequada para a realizao de cada instruo. Veja a Figura 11.

1.8 Ciclos de Processamento


Em um sistema processador, a execuo de uma instruo normalmente se subdivide em subtarefas denominadas ciclos de mquina. O nosso sistema apresenta subdiviso mais simples possvel: Um ciclo de busca da instruo e outro ciclo de execuo. CICLO DE BUSCA
CLK

Busca Se acompanharmos no diagrama lgico do sistema, vereExecuo mos que o ciclo de busca, tambm conhecido por CICLO DE Figura 12: Temporizao dos ciclos FETCH, comea a partir da transio positiva do sinal de clock. de busca execuo. Ao sentir uma transio de subida de CLK, o contador de programa incrementado de 1, o que corresponde gerao de um novo endereo de memria. Estamos, ento, executando a busca de um cdigo operacional para execuo. O ciclo de fetch termina quando o OpCode se encontra na sada do decodificador de instrues, pronto para ser executado.

CICLO DE EXECUO 0 processo de decodificao da instruo e a gerao dos sinais de controle adequados fazem parte do ciclo de execuo da mesma. Este ciclo termina quando todas as tarefas necessrias realizao da instruo, j foram realizadas. 0 ciclo de execuo comea a partir da transio negativa do sinal CLK e termina quando comea um novo ciclo de fetch.

1.9 Execuo de Programas


Para utilizarmos as instrues criadas para o sistema processador, na construo de programas, vamos reorganiz-las de uma maneira mais funcional apenas para facilitar o uso. Vamos agrup-las por funo, ou seja, de acordo com o que elas causam no sistema, quando so executadas:
Instrues lgicas NOOP SET CLR CPL No altera o contedo interno do processador. Leva o contedo interno do processador ao nvel lgico 1. Leva o contedo interno do processador ao nvel lgico 0. Inverte o estado lgico do contedo do processador. Instrues de Entrada e Sada (E/S ou I/O) INP OUT Copia o valor da entrada de dados para dentro do processador. Copia o contedo do processador para a sada de dados. Instrues de Desvio JP,addr JZ,addr RST Desvia a execuo do programa para o endereo especificado. Desvia a execuo do programa para o endereo especificado se o contedo dos dados for 0. Reinicia o programa no endereo 0h. Instrues de Controle HLT Para a execuo do programa.
9

O Computador de 1 bit.

1.10 O Circuito completo do PD-01


PC

Instruo

Control Word

Contador de Programa
D0 D1 D2 D3 PE CP CET CEP
Q0 Q1 Q2 Q3 TC

4 3 21

Memria de Programa
A0 A1 A2 A3 A4
O0 O1 O2 O3 O4 O5 O6 O7

4 32 1

43 2 1

Decodificador de Instrues
A0 A1 A2 A3 A4
O0 O1 O2 O3 O4 O5 O6 O7

43 2 1

4 32 1

Seleo
MR
CS

CLK
5V

74LS163 CI1

CS

OpRST\ OpHLT\ OpOut\ OpJp\ OpJz OpClr OpSet OpInp

PROM32 CI2

PROM32 CI3

CI7B

CI5B
CLK
U4A
CI5A

OpHLT\
RSTin\
CI8A

OpJp\
CI4A
OpJz

OpRST\
RSTin\

Automtico
CP1 Q1 CP2 Q2

Clock
5V Manual

Dado\

0V
Dado

5V

Led

Input
CI4B

CI6B
OpSet
CLK
J CP K
R

S
Q _ Q

CI7A

S
J CP K
R
Q _ Q

OpInp

OpOut\
CLK

Output Registrador de Sada


+

CI4C
CI4D

OpClr

CI6A

Dado\
5V

Buzzer
-

Registrador de Dados
RSTin\

Reset\

Figura 13: Diagrama completo do PD-01.


O Computador de 1 bit. 10

1.10.1 PGM-01 Programa Exemplo 1


O processador digital de 1 bit, PD-01, ser utilizado como um sistema detector de eventos.Toda vez que uma chave sensora conectada sua entrada for aberta, o PD-01 dever sinalizar este evento acionando um LED conectado em sua sada com esta finalidade. importante observar tambm que, mesmo que a chave seja novamente fechada, o sistema dever ser capaz de memorizar o evento mantendo o LED aceso. Ativandose a entrada RSTin , o PD-01 dever restabelecer-se, ficando pronto para uma nova operao. Os passos a serem seguidos para a confeco de um programa que seja executvel comeam pela organizao da idia sob uma forma grfica conhecida por fluxograma.
PD-01
5V 2,2k 2,2k Chave Sensora LED RESET
IN OUT

RSTin COM

270R

Figura 14: Diagrama de aplicao.

Incio

1.10.2 Fluxograma
Nesta etapa nos preocupamos apenas em ordenar a idia geral do programa em um fluxo contnuo e simblico. Vamos conhecendo os smbolos bsicos utilizados em fluxogramas, medida que eles forem sendo necessrios. No fluxograma, percebe-se que a primeira atividade que o programa dever realizar ser a de garantir que o LED esteja apagado. Sendo o circuito de sada e constitudo por um flip flop D, ao ligarmos o sistema no temos como garantir se o mesmo estar em nvel 1 ou em nvel 0. Da a necessidade de se levar a sada Output ao nvel 0. Em seguida, deve-se saber qual o estado da chave sensora, o que conseguido lendo o estado da entrada, utilizando a instruo INP.
Output = 0

Ler Chave

Chave =0? No

Sim

Output = 1

De posse do estado da chave, carregado no registrador de dados do processaFim dor, resta saber agora se este estado 0 ou 1, ou seja, se a chave esta fechada ou aberta respectivamente. Para isto necessrio introduzir um bloco de deciso nesta etapa do programa. Este bloco dever pesquisar se o valor agora contido no Figura 15: Fluxobloco processador 0 ou 1. Caso seja 0, porque a chave no foi aberta. O flugrama para o xo do programa dever voltar a ler chave, ficando ai amarrado neste loop at que o PGM-01. estado lido seja diferente de 0. Quando isto acontecer, porqu a chave ento foi aberta e o fluxo do programa dever seguir a opo N (no). Se a chave foi aberta, o programa dever sinalizar o evento, acendendo o LED de sada. Para isto basta fazer com que a sada Output v a nvel 1.

1.10.3 Programa Fonte


0 prximo passo ser agora procurar no conjunto de instrues que o PD-01 consegue realizar, as instrues adequadas para realizar as operaes definidas no fluxograma. Para resolver o primeiro passo definido no fluxograma: Output=0. Podemos utilizar a instruo CLR que leva a 0 o contedo do processador. Mas isto no o bastante, o fato de o contedo do processador ir a nvel 0, no significa que a sada tambm ir a 0. Para tanto necessrio a seguir, transferir o contedo do processador para a sada. Isto conseguido atravs da instruo OUT. O bloco LER CHAVE, implementado bastando uma instruo INPUT. Depois que for realizada, o contedo do processador ser o mesmo estado da chave sensora. A deciso conseguida utilizando a instruo de jump condicional. Ao encontrar uma instruo JZ,addr, o jump s ser realizado se o contedo do processador for 0. No fluxograma, se o contedo do processador for 0, porque a chave estava fechada e ento o programa dever voltar a LER chave. Logo, o endereo para onde dever ocorrer o salto, ser o endereo onde estiver localizada a instruo INP. Como ainda no sabemos onde ser este endereo no programa, vamos utilizar uma marca ou LABEL para sinalizar este ponto do programa. 0 LABEL ser uma marca que substituiremos mais tarde pelo
O Computador de 1 bit. 11

endereo real. Em JZ,LERCH, LERCH foi o label escolhido para onde dever ir o programa caso a condio seja satisfeita. Se JZ,LERCH no for realizado, o contador de programa no ser alterado e a seqncia do programa seguir normalmente. Neste caso o contedo do processador ser diferente de 0 ou seja, a chave sensora foi aberta. 0 LED de sada ento, dever ser aceso e o programa finalizado Isto conseguido estabelecendo o contedo do processador em 1 atravs da instruo SET e logo em seguida, transferindo este contedo para a sada atravs de um OUT. Em seguida, basta uma instruo HLT que fora o sistema PD-01 a parar o processamento. 0 sistema s sair da situao de HALT, quando ocorrer um RESET. Ordenando todos estes comandos a partir do endereo 0h, obteremos uma listagem que constituir no nosso programa. END. 0h 1h 2h 3h 4h 5h 6h OPCODE 02h 08h 07h 25h 01h 08h 09h LABEL INSTR. clr out LERCH: inp jz,lerch set out hlt COMENT. ;inicio ;inicializa saida ;testa chave de entrada ;atvia a sada ;para processamento

Figura 16: Programa fonte para o PGM-01. A coluna OPCODE corresponde seqncia de cdigos que efetivamente dever ser gravado na memria do sistema a partir do endereo 0h. Toda vez que o sistema receber um RESET, o contador de programa apontar para o endereo 0h de memria iniciando um ciclo de fetch, buscando a primeira instruo do programa, depois a segunda, a terceira, etc. A esta seqncia de cdigos executveis, se d o nome de PROGRAMA OBJETO ou simplesmente PROGRAMA EXECUTVEL.

1.11 Programas Propostos


PGM-02 Elaborar um programa que transforme o sistema PD-01 em um gerador de freqncia sendo que o perodo da freqncia de sada dever ter uma durao em torno de 6 ciclos de clock.

PGM-03 Em um sistema de alarme, gerar um tom na sada (freqncia de udio), toda vez que a chave sensora da entrada for aberta. 0 tom dever permanecer mesmo se a chave for novamente fechada.

PGM-04 Elabore um programa que transforme o PD-01 em um oscilador monoestvel. Toda vez que ocorrer uma transio positiva na entrada sensora, a sada dever ser levada ao nvel alto durante 3 ciclos de clock.

PGM-05 Altere o programa PGM-04 para que a sada apresente um pulso de nvel baixo durante o maior intervalo de tempo que for possvel implementar.

O Computador de 1 bit.

12

Anda mungkin juga menyukai