Instituto Tecnológico de Aeronáutica - ITA Divisão de Engenharia Eletrônica Departamento de Eletrônica Aplicada Laboratório de EEA-21 7ª Experiência Síntese de Circuitos Sequenciais Síncronos 1. Objetivos a. Familiarização com a implementação de circuitos digitais em proto-board; b. Familiarização com circuitos seqüenciais síncronos; e c. Familiarização com a implementação de circuitos em FPGA s. 2. Instruções gerais Para cada um dos tópicos abaixo, observe o que se pede em negrito. Quando a solicitação é da forma: Projete, espera-se que os alunos projetem os circuitos seguindo algum tipo de especificação dada. Assim, os cálculos combinacionais, procedimentos de minimização ou outros mecanismos utilizados para o projeto e o diagrama esquemático final do circuito devem ser mostrados (constar do relatório). Monte, espera-se que o circuito dado ou projetado seja montado em proto-board de maneira organizada, com as entradas e saídas identificadas. Os componentes serão fornecidos pelo almoxarifado, devendo os mesmos ser retornados após a avaliação dos circuitos pelo instrutor. Simule, espera-se que seja utilizado um software de captura esquemática para a obtenção dos resultados. Assim, o diagrama esquemático (no caso de captura esquemática) deve ser apresentado, bem como o diagrama de temporização contendo as entradas e as saídas. Analise, espera-se que sejam obtidas as expressões lógicas, tabelas verdade, a partir de um diagrama esquemático, diagrama de temporização ou outra informação sobre o circuito lógico. Dessa forma, os procedimentos de análise devem ser mostrados no relatório. Programe, espera-se que, a partir da descrição do circuito em forma de diagrama esquemático ou VHDL no software de design utilizado, seja obtido um arquivo para configuração do dispositivo FPGA, e esse arquivo seja transferido para o FPGA através da interface de comunicação entre computador e a placa de desenvolvimento. Um breve comentário sobre os resultados, dificuldades ou outras observações são esperados para todas as tarefas. 1
3. Informações úteis Laboratório EEA-21 1º Semestre de 2012 7ª Experiência 3.1 Arquiteturas Mealy e Moore. 3.2 Exemplo simples de output. 3.3 Síntese de máquinas síncronas Passos: 1. Fazer o diagrama de transição de estados (Mealy ou Moore); 2. Realizar a minimização de estados; 3. Realizar a codificação de estados; 4. Escolher o elemento de memória (Flip-Flop); 5. Obter as equações de excitação e de saída; e 6. Obter o diagrama lógico. Arquitetura de máquinas seqüenciais: 2
3.4 Material necessário para as montagens: Laboratório EEA-21 1º Semestre de 2012 7ª Experiência 6 LEDs; 6 Resistores 330 Ω (ou próximo); 1 CI 7404, 2 CIs 7408, 1 CI 7432, 2 CIs 7476; fios para proto-board; fonte de +5V; alicate de corte; e proto-board. 4. Tarefas de Montagem e Programação de FPGA A tarefa proposta neste laboratório é projetar um circuito de temporização com as seguintes características: O circuito é inicializado aplicando um nível alto na entrada INICIO Após inicializado o circuito deve permanecer durante um segundo no estado A e sua saída deve ser zero (nível lógico L). Finalizado este período de tempo de 1 segundo, o circuito verifica o estado da entrada. Se o valor da entrada é baixo, mantém-se o presente estado. Se o valor da entrada é alto, a máquina passa para o estado B com saída configurada para nível baixo (nível lógico L). No estado B a máquina deve permanecer durante três segundos. Após este período verifica-se o estado da variável. Se está em nível baixo, a máquina volta para o estado A. Já na condição em que a variável está em nível alto, a máquina passa para o estado C com a saída em um (nível lógico H). Variações da variável em um período inferior a 3 segundos não devem ter efeito no estado do circuito. No estado C a máquina deve permanecer durante sete segundos. Após este período verifica-se o estado da variável. Se está em nível baixo, a máquina volta para o estado A. Já na condição em que a variável está em nível alto, a máquina passa para o estado B com a saída em zero (nível lógico L). Variações da variável em um período inferior a 7 segundos não devem ter efeito no estado do circuito. O comportamento do circuito temporizador é descrito no seguinte diagrama de estados: INICIO A/0 1 s 7 s C/1 B/0 3 s 3
4.1 Uma forma de resolver este problema é considerar um estado para cada segundo, e não apenas os três estados propostos no diagrama acima. Dessa forma, o primeiro passo é a elaboração da tabela de transição de estados. Na tabela mostrada a seguir já está sendo feita também a codificação dos estados. Estado Atual (Q 3 Q 2 Q 1 Q 0 ) n Próximo Estado (Q 3 Q 2 Q 1 Q 0 ) n+1 0 1 Z 0 0 0 0 Não é possível reduzir o número de estados por meio de processo de minimização. Desta tabela de transição de estados extraem-se os seguintes mapas, para cada uma das variáveis de estado Q 3, Q 2, Q 1 e Q 0 : Q3 (n+1) 00 0 0 1 x 0 0 1 x 01 0 0 1 x 0 0 1 x 11 0 0 0 x 0 0 0 x 10 0 1 x x 0 1 x x Q2 (n+1) 00 0 1 1 x 0 1 1 x 01 0 1 1 x 0 1 1 x 11 0 1 0 x 0 1 0 x 10 0 1 x x 1 1 x x Q1(n+1) 00 0 0 0 x 0 0 0 x 01 1 1 1 x 1 1 1 x 11 1 1 0 x 1 1 0 x 10 0 0 x x 0 0 x x Q0 (n+1) 00 0 1 1 x 1 1 1 x 01 1 1 1 x 1 1 1 x 11 0 0 0 x 0 0 1 x 10 0 0 x x 0 0 x x Escolhe-se o Flip-Flop JK para este projeto. Os mapas de Karnaugh para a obtenção das equações de excitação dos flip-flops são mostradas a seguir, e são obtidas a partir das tabelas para Q 3, Q 2, Q 1 e Q 0 e e da seguinte tabela de excitação do FFJK: Q n Q n+1 J K 0 0 0 x 0 1 1 x 1 0 x 1 1 1 x 0 4
J3 K3 00 0 0 x x 0 0 x x 00 x x 0 x x x 0 x 01 0 0 x x 0 0 x x 01 x x 0 x x x 0 x 11 0 0 x x 0 0 x x 11 x x 1 x x x 1 x 10 0 1 x x 0 1 x x 10 x x x x x x x x J 3 Q2 K3 Q1 J2 K2 00 0 x x x 0 x x x 00 x 0 0 x x 0 0 x 01 0 x x x 0 x x x 01 x 0 0 x x 0 0 x 11 0 x x x 0 x x x 11 x 0 1 x x 0 1 x 10 0 x x x 1 x x x 10 x 0 x x x 0 x x J Q Q K3 Q3Q 1 2 1 0 J1 K1 00 0 0 0 x 0 0 0 x 00 x x x x x x x x 01 1 1 1 x 1 1 1 x 01 x x x x x x x x 11 x x x x x x x x 11 0 0 1 x 0 0 1 x 10 x x x x x x x x 10 1 1 x x 1 1 x x J K Q Q 1 Q0 1 0 3 J0 K0 00 0 1 1 x 1 1 1 x 00 x x x x x x x x 01 x x x x x x x x 01 0 0 0 x 0 0 0 x 11 x x x x x x x x 11 1 1 1 x 1 1 0 x 10 0 0 x x 0 0 x x 10 x x x x x x x x J Q Q 0 2 1 K Q Q 0 3 1 5
Das equações obtidas acima, desenha-se o diagrama esquemático do circuito. Monte este circuito em protoboard, e verifique o funcionamento de acordo com a descrição do comportamento dado pelo enunciado do problema. Leve em consideração que o tempo em cada estado será determinado pelo período do sinal CLK. Se o período de CLK for 1 segundo, então o circuito deve obedecer à temporização do enunciado do problema. Observe que o circuito não está sendo inicializado. Introduza a entrada INICIO no circuito montado, que, enquanto em nível baixo (L), mantém o circuito em estado de reset; quando INICIO é levado a nível alto (H), o circuito é inicializado e passa a operar conforme descrito no enunciado. 4.2 Uma segunda forma de resolver o problema é fazer a seguinte decomposição do circuito: INICIO CLEAR MEF S 3 S 7 Circ. COMB CLC Q 2 Q 2 Q 1 Q 1 Q 0 Q 0 Contador Síncrono Programável (módulo 8) CLK Z 6
A máquina de estados finitos (MEF) apresenta os três estados A, B e C descritos no diagrama de temporização. O contador síncrono programável é utilizado para realizar a contagem do tempo que decorreu em cada estado. O valor da contagem é utilizado para determinar os sinais S 3 e S 7, que, respectivamente, são colocados em nível alto (H) apenas quando a contagem atinge o os valores 3 e 7. Portanto, se a MEF está no estado B, ela trocará de estado apenas se S 3 estiver em nível alto; analogamente, se a MEF está no estado C, ela troca de estado apenas se S 7 estiver em nível alto. O sinal de saída da MEF, CLC, é utilizado para reiniciar a contagem do contador sempre que há uma troca de estado da MEF para o estado B ou para o estado C. O reinício da contagem é feito com o valor 1 (Q 2 = 0, Q 1 = 0 e Q 0 = 1). Quando no estado B, a saída CLC deve ser zero (L) quando S 3 é zero (L), e deve ser um (H) quando S 3 é um (H). Quando no estado C, a saída CLC deve ser zero (L) quando S 7 é zero (L), e deve ser um (H) quando S 7 é um (H). A figura a seguir ilustra uma sequência de eventos neste circuito, com os valores dos sinais envolvidos. As setas verticais indicam eventos no sinal de Clock, quando ocorrem mudanças de estado na MEF e no contador. A primeira linha (Est) indica o estado atual da MEF; a segunda linha (Cont) indica o valor da contagem no contador; as 3ª, 4ª, 5ª e 6ª linhas, respectivamente, indicam os sinais S 3, S 7, CLC e Z. Observa-se que para um mesmo estado (B ou C), a saída CLC da MEF pode apresentar os valores 0 (L) ou 1 (H). A MEF será especificada no modelo Mealy. Projeto do contador O contador de módulo 8 possui 8 estados, um para cada valor de contagem. Codificando cada estado como o valor da contagem que ele representa, e considerando que quando CLC = 1, o próximo estado é Q 2 Q 1 Q 0 = 001, obtém-se a seguinte tabela: Q 2 Q 1 Q 0 CLC Próximo Estado (Q 2 Q 1 Q 0 ) n+1 00 01 11 10 7
Escolhendo o Flip-Flop D como elemento de memória, chega-se aos seguintes mapas de Karnaugh para as equações de excitação de cada um dos Flip-Flops: Q 0 CLC Q 2 Q 1 D 2 00 01 11 10 D2 Q2 Q0 CLC Q2 Q1 CLC Q2 Q1 Q0 CLC Q 0 CLC Q 2 Q 1 D 1 00 01 11 10 D1 Q1 Q0 CLC Q1 Q0 CLC Projeto da MEF Q 2 Q 1 Q 0 CLC D 0 00 01 11 10 D0 Q0 CLC A tabela que descreve a transição entre os estados, considerando as entradas, S 3 e S 7, bem como as saídas CLC e Z da MEF é dada a seguir. Nesta tabela os estados A, B e C já estão codificados da seguinte maneira: A (E 1 = 0, E 0 = 0); B (E 1 = 0, E 0 = 1); C (E 1 = 1, E 0 = 1). Na construção da tabela levase em conta ainda que S 3 e S 7 não serão 1 simultaneamente. Ainda, nas transições dos estados B e C para o estado A, não há necessidade de reiniciar a contagem, uma vez que no estado A, a informação de contagem não é utilizada. Então, para a combinação que leva a estas mudanças de estado, CLC é don t care. 8
E 1 E 0 S 3 S 7 Laboratório EEA-21 1º Semestre de 2012 7ª Experiência (E 1 E 0 ) n+1 / CLC Z (A) 00 00 /10 00 /10 xx / xx 00 / 10 01/ 10 01/ 10 xx / xx 01/ 10 (B) 01 01 / 00 01 / 00 xx / xx 00 / x0 01 / 00 01 / 00 xx / xx 11/10 (C) 11 11 / 01 00 / x1 xx / xx 11 / 01 11 / 01 01 / 11 xx / xx 11 / 01 10 xx / xx xx / xx xx / xx xx / xx xx / xx xx / xx xx / xx xx / xx Escolhendo o Flip-Flop D como elemento de memória, chega-se aos seguintes mapas de Karnaugh para as equações de excitação de cada um dos Flip-Flops e para as equações de saída: E 1 E 0 S 3 S 7 D 1 00 0 0 x 0 0 0 x 0 01 0 0 x 0 0 0 x 1 11 1 0 x 1 1 0 x 1 10 x x x x x x x x D1 S3 E1 E0 S3 E0 S7 E1 E 1 E 0 S 3 S 7 D 0 00 0 0 x 0 1 1 x 1 01 1 1 x 0 1 1 x 1 11 1 0 x 1 1 1 x 1 10 x x x x x x x x D0 S3 E1 S3 E1 E0 S3 S7 E0 E 1 E 0 S 3 S 7 CLC 00 1 1 x 1 1 1 x 1 01 0 0 x x 0 0 x 1 11 0 x x 0 0 1 x 0 10 x x x x x x x x CLC E0 S3 E1 S7 E1 9
E 1 E 0 S 3 S 7 Z E 1 Projeto do Circuito Combinacional Laboratório EEA-21 1º Semestre de 2012 7ª Experiência Z 00 0 0 x 0 0 0 x 0 01 0 0 x 0 0 0 x 0 11 1 1 x 1 1 1 x 1 10 x x x x x x x x O circuito combinacional tem como entrada as variáveis de estado do contador, e produz em sua saída os sinais S 3 e S 7. É simples obter: S3 Q2 Q1 Q0 S Q Q Q 3 2 1 0 Obtenha o diagrama lógico do circuito, através das equações projetadas, e simule utilizando o software Quartus II. Após certificar-se do correto funcionamento do circuito, faremos algumas alterações no projeto de forma a possibilitar a gravação do dispositivo programável presente na placa de desenvolvimento UP 1, da Altera, disponível no laboratório 1. Em Assingments Device, associe o projeto ao dispositivo EPM 7128 SLC 84-7, da família MAX7000S. Este é o dispositivo que será configurado com o circuito que estamos desenvolvendo. 2. A placa de desenvolviemnto UP 1 possui um oscilador próprio, na frequência de 25,175 MHz, ligado ao pino 83 do chip. Para criar um sinal de clock com um sinal com período da ordem de 1 segundo a partir deste sinal, incluiremos um contador de 25 bits, módulo 25175000, e utilizaremos o bit mais significativo da contagem como clock para o circuito temporizador. O período do sinal a ser utilizado será de 1 segundo. Para isso, procure pelo componente lmp_counter. Será aberta uma janela para configuração do componente. Escolha uma implementação em VHDL na primeira tela. A seguir, na próxima tela, escolha o número de bits do contador (25) e em seguida o módulo (25175000). Não são necessárias mais opções para este contador, portanto, crie o componente e inclua no projeto. Nomeie o bus de saída no formato CLK[24..0]. Tem-se então um vetor com os 25 bits do contador. Nos flip-flops, utilize agora o bit mais significativo da saída do contador, CLK[24], conforme mostra a figura abaixo. 10
3. Copie para a pasta do projeto os arquivos Conv_Bin_7Seg.bdf e Conv_Bin_7Seg_block.bsf, e inclua Conv_Bin_7Seg.bdf no projeto. Este é um circuito conversor binário para display de 7 segmentos. Utilizaremos o display de 7 segmentos presente na placa UP 1 para mostrar o valor da contagem. Procure na biblioteca de componentes Conv_Bin_7Seg_block, localizado na pasta do projeto, e insira no circuito. 4. Compile o Projeto. Agora, na barra de ferramentas do software Quartus II, encontre Pin Planner. Utilize este editor para associar os seguintes sinais de entrada e saída do circuito com os pinos do dispositivo programável: Tipo Sinal Pino INPUT CLKin 83 INPUT INICIO 33 INPUT 51 OUTPUT E 1 57 OUTPUT E 0 56 OUTPUT Z 54 OUTPUT D11 69 OUTPUT D12 70 OUTPUT D13 73 OUTPUT D14 74 OUTPUT D15 76 OUTPUT D16 75 OUTPUT D17 77 OUTPUT D18 79 OUTPUT D21 58 OUTPUT D22 60 OUTPUT D23 61 OUTPUT D24 63 OUTPUT D25 64 OUTPUT D26 65 OUTPUT D27 67 OUTPUT D28 68 Com esses assinalamentos, e com as ligações feitas por meio de fios na própria placa, teremos o seguinte efeito: 11
INICIO Associado à chave MAX_SW1_1 Associado ao botão MAX_PB_1 Z Associado ao LED D8 E1 Associado ao LED D1 E0 Associado ao LED D2 Q 2 Q 1 Q 0 Associados ao dígito 2 do display de 7 segmentos. Laboratório EEA-21 1º Semestre de 2012 7ª Experiência Para se chegar ao resultado esperado, é necessário ainda considerar que a chave MAX_SW1_1 aplica ao pino a que está ligada um nível de tensão alto (H) quando está aberta, e um nível de tensão baixo (L) quando está fechada. Analogamente, o push Button MAX_PB_1 aplica ao pino a que está ligado um nível de tensão alto (H) quando não está sendo pressionado, e um nível de tensão baixo (L) quando está sendo pressionado. Os LEDs presentes na placa são iluminados quando o nível de tensão no pino a eles ligado é baixo (L), e desligados quando o nível de tensão é alto (H). 5. Compile novamente o projeto. Ligue a placa de desenvolvimento à interface de programação, e no software, abra o Programmer. Escolha o Hardware de configuração a ser utilizado, e o arquivo de configuração gerado pela compilação do projeto, selecione a opção Program/Configure, e inicie a Programação do dispositivo. 6. Observe os resultados e comente. 12