Baixe o app para aproveitar ainda mais
Prévia do material em texto
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 1 Aulas 9 e 10 Circuitos combinacionais: Multiplexadores, demultiplexadores, somadores e comparadores. Introdução ao uso de blocos (ou módulos) e de megafunções Objetivo O objetivo destas aulas é aprender a projetar e implementar sistemas digitais por meio da combinação de outros sistemas, mais simples, denominados blocos ou módulos, que já tenham sido previamente desenvolvidos pelo próprio projetista ou que façam parte de uma “biblioteca” de módulos, desenvolvida por terceiros e colocada à disposição do projetista. No ambiente Quartus II esses módulos se denominam “megafunções”. Uma megafunção é um bloco construtivo que pode ser combinado com outros blocos para o desenvolvimento de sistemas mais complexos, no ambiente Quartus II. Uma biblioteca de megafunções denominada “Biblioteca de Módulos Parametrizáveis” (em inglês, Library of Parameterized Modules – LPM”) faz parte do ambiente Quartus II. Será dado um problema, para cuja solução serão utilizados os seguintes blocos, desenvolvidos nesta aula, em VHDL, pelos próprios alunos: Multiplexador com quatro entradas de dados e uma entrada de habilitação; Dois tipos diferentes de decodificador para displays de sete segmentos. Também serão utilizadas as seguintes megafunções, constantes na Biblioteca de Módulos Parametrizáveis (LPM) do Quartus II, devidamente configuradas pelo aluno: LPM_ADD_SUB (somador/subtrator) LPM_COMPARE (comparador). O experimento deverá ser feito no laboratório, em grupos de três alunos. A pasta com todos os arquivos do projeto (“project”) aula_9, desenvolvido nas aulas 9 e 10, deverá ser preservada em um CD ou pen drive. Esse projeto será utilizado novamente na Aula 14, que abordará o tema “Teste e Simulação do Funcionamento de Sistemas Digitais”. PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 2 Anexos a este Guia de Aulas Visando facilitar a execução do experimento, este Guia de Aulas contém três documentos anexos, abordando os seguintes assuntos: Anexo I: Multiplexadores e demultiplexadores Faz uma breve síntese dos principais conceitos relacionados a multiplexadores e demultiplexadores, incluindo exemplos de produtos disponíveis comercialmente (multiplexador TTL 74LS151 e demultiplexador TTL 74LS138). Anexo II: Somadores e comparadores Faz uma breve síntese dos principais conceitos relacionados a somadores e comparadores: somador completo, somador paralelo, somador BCD e somador/subtrator. São dados exemplos de produtos disponíveis comercialmente (somador TTL 74LS83 e comparador de magnitude TTL 74LS85). Anexo III: Descrição de multiplexadores em VHDL Contém cinco descrições completas de um multiplexador com duas entradas de dados. Também contém uma descrição de multiplexador com quatro entradas de dados, sem entrada de habilitação, e uma última descrição, correspondente a um multiplexador com quatro entradas de dados e uma entrada de habilitação. O objetivo desse Anexo é mostrar que um mesmo sistema pode ser descrito de várias maneiras diferentes. Descrições diferentes poderão gerar circuitos diferentes. Com a prática, o projetista aprenderá a descrever seus sistemas de forma a permitir que o compilador gere circuitos mais simples, mais rápidos e/ou mais econômicos. PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 3 Experimento de Laboratório O trabalho consistirá em primeiramente construir os módulos necessários, ou configurar megafunções de acordo a necessidade e, depois, juntar esses módulos em uma entidade de nível mais alto que contenha o sistema proposto. As descrições dos circuitos deverão ser salvas, obrigatoriamente, em arquivos cujo nome é idêntico ao nome da entidade (“entity”) do código VHDL. Observar também que, antes de cada compilação, é fundamental que se informe ao Quartus II qual é, naquele momento, a entidade de maior nível. Projete um sistema combinacional com as seguintes características: Entradas: A=A1A0; B=B1B0; Sel=Sel1Sel0. Saídas: NUM (display de sete segmentos); LETRA: (display de sete segmentos). A, B e Sel são variáveis binárias, de dois bits cada uma. Sel é usado para escolher o que será mostrado no display NUM: Sel = “00” Display NUM mostra o valor de A, em decimal; Sel = “01” Display NUM mostra o valor de B, em decimal; Sel = “10” Display NUM mostra o resultado de A+B, em decimal; Sel = “11” Display NUM é apagado; O display LETRA mostrará a letra “A”, maiúscula, quando A>B; mostrará a letra “b”, minúscula, quando B>A; mostrará três traços horizontais quando A=B. Implemente o sistema proposto no kit Altera DE2. PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 4 1. Diagrama em bloco do sistema a ser construído 2. Diagrama do sistema com seus blocos funcionais Vcc Sel0 Sel1 GND GND I02 I01 I00 NUM LETRA6 LETRA5 LETRA4 LETRA3 LETRA2 LETRA1 LETRA0 NUM6 NUM5 NUM4 NUM3 NUM2 NUM1 NUM0 A1 A0 B1 B0 Sel1 Sel0 Aulas_9e10 LETRA NUM Sel B A Meu_Mux S1 S0 I32 I31 I30 I22 I21 I20 I12 I11 I10 X2 X1 X0 NUM6 NUM5 NUM4 NUM3 NUM2 NUM1 NUM0 Conv_NUM-7seg LETRA LETRA6 LETRA5 LETRA4 LETRA3 LETRA2 LETRA1 LETRA0 Conv_LETRA-7seg Somador S2 S1 S0 A0 A1 B0 B1 Comparador C1 C0 Vcc Vcc PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 5 3. Implementação dos blocos funcionais 3.1 Implementação de um multiplexador no kit DE2 a) Crie, no diretório c:, uma pasta denominada A9dddhhmmGx, onde: ddd: Dia da semana em que ocorre a aula (seg, ter, qua, qui, sex, sab) hhmm: Horário de início da aula (0700, 0850, 1040, 1330, etc.) x: Número do grupo, conforme o número da bancada correspondente (I, II, III, IV) Ao final da aula, salve essa pasta em um CD ou pen drive, pois ela será necessária para o desenvolvimento da Aula 14 b) Usando o software Quartus II, crie um projeto (“project”) denominado aula_9 na pasta criada no item a. O nome da entidade de mais alto nível de seu projeto é automaticamente escolhido pelo Quartus como “aula_9”, mesmo nome do projeto criado e poderá ser alterado sempre que necessário. Levando em consideração que o projeto será implementado fisicamente no kit Altera DE2, é obrigatório que se escolha, como alvo da compilação, a família de dispositivos Cyclone II e o dispositivo EP2C35F672C6. c) Crie um novo arquivo de entradade projeto (“design”) em VHDL (New Design Files VHDL file). Copie deste roteiro o código de um multiplexador com quatro entradas de dados e uma entrada de habilitação. Cole esse código no arquivo criado. d) Salve o código no diretório de seu projeto (“Project”), com a extensão “.vhd” e o mesmo nome da entidade (“entity”) do seu código VHDL (mux_4entr_c_enable). e) Altere o nome da entidade de mais alto nível de seu projeto para o nome do arquivo VHDL que estiver sendo editado (com o arquivo aberto na tela, faça: Project Set as Top Level Entity). f) Compile seu “design” (Processing Start Compilation). Caso ocorram mensagens de erro, corrija-os editando seu “design” e compilando novamente, até que não ocorram mais erros. g) Leia cuidadosamente as mensagens de aviso (“Warning”), pois algumas dessas mensagens podem ser muito importantes. Veja primeiro os avisos críticos (“Critical Warning”) e depois veja os demais avisos. h) Caso ocorra o aviso: “Warning: The Reserve All Unused Pins setting has not been specified, and will default to 'As output driving ground'”, deve-se obrigatoriamente mudar para: “As input tri-stated”, para evitar o risco de danos ao kit DE2. (Assignments Device Device and Pin Options Unused Pins As input tri-stated OK OK). Compile novamente o “design”, assegurando-se de que o aviso não aparece mais. i) Os avisos “Warning: Feature LogicLock is only available with a valid subscription license. Please purchase a software subscription to gain full access to this feature” e “Warning: Found ‘n’ output pins without output pin load capacitance assignment” não são importantes para nosso projeto. PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 6 j) Quando o projeto foi criado, é provável que tenha sido automaticamente assumido pelo Quartus II que o nome da entidade de mais alto nível era “aula_9”. Posteriormente, o nome da entidade de maior nível foi alterado e a entidade “aula_9” passou a não existir mais em nosso projeto. Se isso ocorreu, pode ocorrer o aviso “Warning: Ignored assignments for entity ‘aula_9’ -- entity does not exist in design”, que deverá ser desconsiderado. k) Se desejado, o Quartus II pode mostrar um diagrama do circuito que ele gerou a partir da descrição do circuito compilada, que corresponde à entidade de mais alto nível do projeto (Tools Netlist Viewers RTL Viewer). l) Conforme será visto na Aula 14, neste momento também poderia ser feita uma simulação do funcionamento do circuito, observando as formas de onda de saída geradas pelo Quartus II a partir das formas de onda de entrada desenhadas pelo projetista (New Verification/Debugging Files Vector Waveform Files). No caso deste experimento, todos os circuitos propostos já foram previamente testados e por isso a execução das simulações não é necessária. m) Nos experimentos deste laboratório que envolvem FPGA, os circuitos utilizarão, como entradas e como saídas, os recursos físicos disponíveis no kit DE2 (chaves, botões, LEDs, displays, etc.). Deve-se lembrar que esses recursos já estão fisicamente conectados a pinos muito bem definidos do FPGA. Portanto, neste momento é indispensável escolher os recursos do kit DE2 que serão usados na implementação. Para este projeto, poderíamos escolher os seguintes recursos: Pinos do projeto Entrada/Saída Recursos físicos do kit DE2 Nº do pino do FPGA a Entrada SW17 PIN_V2 b Entrada SW16 PIN_V1 c Entrada SW15 PIN_U4 d Entrada SW14 PIN_U3 Sel[1] Entrada SW1 PIN_N26 Sel[0] Entrada SW0 PIN_N25 En Entrada SW8 PIN_B13 Z Saída LEDG0 PIN_AE22 As informações necessárias ao preenchimento da coluna mais à direita desta tabela encontram-se no documento DE2 User Manual. No capítulo quatro do Manual do Usuário do DE2 existem diversas tabelas que mostram como os recursos do kit DE2 estão ligados aos pinos do FPGA. PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 7 n) Para vincular os “pinos” de entrada e de saída do projeto aos pinos físicos do FPGA: (Assignments Pins). Dar um clique duplo em “Location”, na linha correspondente a cada pino (“node”), e digitar o nome do pino correspondente no FPGA. Compile novamente o projeto. o) Configuração (“programação”) do kit DE2. 1. Certifique-se de que a chave RUN/PROG do kit DE2 esteja na posição RUN. Ligue a entrada “USB Blaster” do kit DE2 ao computador, utilizando para isso um cabo USB. Conecte o kit DE2 a uma fonte de energia 127V A.C. e ligue-o (botão vermelho). 2. O FPGA pode agora ser configurado, utilizando o módulo de programação do Quartus II (Tools Programmer) e selecionando o arquivo de configuração adequado, com a extensão “sof” (SRAM Object File). p) Concluída a configuração, o circuito desenvolvido já poderá ser utilizado. Esse circuito será posteriormente utilizado como um dos módulos de nosso projeto. q) Crie um símbolo para o multiplexador que você desenvolveu. Com o arquivo mux_4entr_c_enable.vhd aberto na tela do Quartus II, faça: File Create/Update Create Symbol Files for Current File. r) É recomendável que o procedimento utilizado para o desenvolvimento do módulo mux_4entr_c_enable , incluindo a implementação no kit DE-2, seja repetido para cada um dos módulos desenvolvidos dentro de seu projeto (“Project”). Isso não está sendo feito aqui apenas por uma questão de economia de tempo, já que todos os módulos já foram previamente testados pelo professor. 3.2 Introdução ao uso de megafunções a) Crie um novo arquivo de projeto (“design”) do tipo Block Diagram/Schematic File. Salve-o dentro de seu projeto (“project”) com o nome de somador_comparador.bdf. b) Informe ao Quartus II que agora somador_comparador.bdf passou a ser a entidade de mais alto nível do projeto aula_9. (com o arquivo aberto na tela, faça: Project Set as Top Level Entity). c) Crie uma megafunção denominada AmaisB: 1. Clique no ícone com o símbolo de uma porta AND. 2. Clique em MegaWizard Plug-In Manager 3. Escolha “Create a new custom megafunction variation” e clique “Next” 4. Escolha a família “Cyclone II”, o tipo VHDL para o arquivo de saída e o nome AmaisB para o arquivo de saída. Expanda o item “Arithmetic” em “Select a megafunction from the list below”. Selecione “LPM_ADD_SUB”. Clique “Next”. PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 8 5. Escolha “2 bits” como a largura de “dataa” e “datab”. Escolha “Addition only” como o modo de operação do somador/subtrator. Clique “Next”. 6. Informe ao Quartus II que A e B são variáveis sem sinal. Clique “Next”. 7. Marque o quadrinho create a carry output. Clique “Next”. 8. Clique em “No” como resposta à pergunta “Do you want to pipeline the function”. Clique “Next”. 9. Clique “Finish”. 10. Clique “Finish”. 11. Clique “OK”. 12. Sua megafunção está pronta e já pode ser usada em seu projeto. d) Use procedimento similar para criar uma megafunção “Compara”: 1. Clique no ícone com o símbolo de uma porta AND. 2. Clique em MegaWizard Plug-In Manager 3. Escolha “Create a new custom megafunction variation” e clique “Next” 4. Escolha a família “Cyclone II”, o tipo VHDL para o arquivo de saída e o nome Comparador para o arquivo de saída.Expanda o item “Arithmetic” em “Select a megafunction from the list below”. Selecione “LPM_COMPARE”. Clique “Next”. 5. Escolha 2 bits como resposta à pergunta “How many ‘dataa’ input bits do you want to compare to the ‘datab’ input bits”. Escolha “a>b” e “a<b” como resposta à pergunta “Which outputs do you want?”. Clique “Next”. 6. Informe ao Quartus II que ‘datab’ não é constante e que a comparação é sem sinal. Clique “Next”. 7. Clique em “No” como resposta à pergunta “Do you want to pipeline the function”. Clique “Next”. 8. Clique “Next”. 9. Clique “Finish”. 10. Clique “OK”. 11. Sua megafunção está pronta e já pode ser usada em seu projeto. 3.3 Construção de decodificadores para displays de sete segmentos a) Crie um novo arquivo de entrada de projeto (“design”) em VHDL (New Design Files VHDL file). Copie deste roteiro o código a seguir. Cole esse código no arquivo criado. b) Salve o código no diretório de seu projeto (“Project”), com a extensão “.vhd” e o mesmo nome da entidade (“entity”) do seu código VHDL (Conv_zero_a_seis_para_7seg). PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 9 c) Altere o nome da entidade de mais alto nível de seu projeto para o nome do arquivo VHDL que estiver sendo editado (com o arquivo aberto na tela, faça: Project Set as Top Level Entity). d) Compile seu “design” (Processing Start Compilation). Caso ocorram mensagens de erro, corrija-os editando seu “design” e compilando novamente, até que não ocorram mais erros. e) Leia cuidadosamente as mensagens de aviso (“Warning”), pois algumas dessas mensagens podem ser muito importantes. Veja primeiro os avisos críticos (“Critical Warning”) e depois veja os demais avisos. f) Crie um símbolo para este decodificador (com o arquivo aberto na tela, faça: File Create / Update Create Symbol Files for Current File). g) Crie um novo arquivo de entrada de projeto (“design”) em VHDL (New Design Files VHDL file). Copie deste roteiro o código a seguir. Cole esse código no arquivo criado. -- Conversor especial, de código de binário para display de sete segmentos -- Três bits de entrada, em binário. -- Para entradas variando de “000” até “110”, a saída mostra o decimal correspondente. -- Para entrada igual a “111”, o display é apagado. -- Adaptado de Peter Ashenden, Digital Design, págs. 67-69. library ieee; use ieee.std_logic_1164.all; entity Conv_zero_a_seis_para_7seg is port ( binario : in std_logic_vector(2 downto 0); seg : out std_logic_vector(7 downto 1) ); end entity Conv_zero_a_seis_para_7seg; architecture behavior of Conv_zero_a_seis_para_7seg is begin with binario select seg <= "1000000" when "000", -- 0 (só segmento g fica desligado) "1111001" when "001", -- 1 (segmentos b, c ficam ligados) "0100100" when "010", -- 2 "0110000" when "011", -- 3 "0011001" when "100", -- 4 "0010010" when "101", -- 5 (só segmentos b, e ficam desligados) "0000010" when "110", -- 6 "1111111" when others; -- (apaga o display) end architecture behavior; PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 10 h) Salve o código no diretório de seu projeto (“Project”), com a extensão “.vhd” e o mesmo nome da entidade (“entity”) do seu código VHDL (Conv_esp_7seg). i) Altere o nome da entidade de mais alto nível de seu projeto para o nome do arquivo VHDL que estiver sendo editado (com o arquivo aberto na tela, faça: Project Set as Top Level Entity). j) Compile seu “design” (Processing Start Compilation). Caso ocorram mensagens de erro, corrija-os editando seu “design” e compilando novamente, até que não ocorram mais erros. k) Leia cuidadosamente as mensagens de aviso (“Warning”), pois algumas dessas mensagens podem ser muito importantes. Veja primeiro os avisos críticos (“Critical Warning”) e depois veja os demais avisos. l) Crie um símbolo para este decodificador (com o arquivo aberto na tela, faça: File Create / Update Create Symbol Files for Current File). -- Conversor especial para para display de sete segmentos -- Dois bits de entrada. -- Para entrada igual a “01”, a saída mostra a letra “B”. -- Para entrada igual a “10”, a saída mostra a letra “A”. -- Para outras combinações de entrada, a saída mostra três traços horizontais. -- Adaptado de Peter Ashenden, Digital Design, págs. 67-69. library ieee; use ieee.std_logic_1164.all; entity Conv_esp_7seg is port ( entrada : in std_logic_vector(1 downto 0); seg : out std_logic_vector(7 downto 1) ); end entity Conv_esp_7seg; architecture behavior of Conv_esp_7seg is begin with entrada select seg <= "0001000" when "10", -- “A” (só segmento d fica desligado) "0000011" when "01", -- “B” (só segmentos a e b ficam desligados) "0110110" when others; -- (mostra três traços horizontais) end architecture behavior; PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 11 4. Construção de sistemas utilizando módulos e megafunções previamente definidos a) Se já não estiver aberto, abra o arquivo somador_comparador.bdf. b) Informe ao Quartus II que que somador_comparador.bdf voltou a ser a entidade de mais alto nível do projeto aula_9 (com o arquivo aberto na tela, faça: Project Set as Top Level Entity). c) Desenhe o circuito mostrado na página 12, observando o seguinte: Na interligação de componentes do circuito, um traço fino representa um fio (“node”), enquanto que um traço grosso representa um conjunto de fios ou barramento (“bus”). Por exemplo, bina[2..0] indica um barramento composto de três fios: bina[2], Bina[1] e bina[0]. No editor de arquivos do tipo “.bdf” existe uma ferramenta para desenhar fios (“Orthogonal Node Tool”) e uma ferramenta para desenhar barramentos (“Orthogonal Bus Tool”). Quando necessário, dê nomes aos fios e aos barramentos: Escolha a ferramenta de seleção (“Selection Tool”). Clique com o botão direito do mouse sobre o fio ou barramento. Na janela que se abre escolha “Properties” e entre com o nome do fio ou do barramento. Os dois pontos interligados por um barramento precisam ter a mesma dimensão do barramento. Por exemplo, um barramento B[2..6] pode ser utilizado para interligar uma saída denominada S[1..5] a uma entrada denominada A[0..4], pois todas essas entidades têm dimensão cinco. Nesse caso, o ponto S[1] será interligado a A[0] pelo fio B[2], o ponto S[2] será interligado a A[1] pelo fio B[3], e assim por diante. Dois fios com o mesmo nome indicam que eles consistem em um único ponto, em termos elétricos. Um único símbolo de pino pode representar vários pinos, o que é indicado pelo nome associado ao símbolo do pino. Por exemplo, um símbolo identificado pelo nome letra[7..1] indica um conjunto de sete pinos: letra[7], letra[6], ... letra[1]. d) Salve e compile seu projeto. Caso ocorram mensagensde erro, corrija-os editando seu “design” e compilando novamente, até que não ocorram mais erros. e) Leia cuidadosamente as mensagens de aviso (“Warning”), pois algumas dessas mensagens podem ser muito importantes. Veja primeiro os avisos críticos (“Critical Warning”) e depois veja os demais avisos. f) Escolha os recursos do kit DE2 que serão usados na implementação. g) Apague as designações de pinos feitas anteriormente (para o multiplexador) e faça a nova designação dos pinos do FPGA. Para este projeto, recomenda-se que os recursos e os pinos correspondentes sejam escolhidos conforme sugerido na tabela da página 13. PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 12 PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 13 Pinos do projeto Entrada/Saída Recursos físicos do kit DE2 Nº do pino do FPGA Pino_A[1] Entrada SW17 PIN_V2 Pino_A[0] Entrada SW16 PIN_V1 Pino_B[1] Entrada SW15 PIN_U4 Pino_B[0] Entrada SW14 PIN_U3 Selec[1] Entrada SW1 PIN_N26 Selec[0] Entrada SW0 PIN_N25 num[6] Saída HEX7[6] PIN_N9 num[5] Saída HEX7[5] PIN_P9 num[4] Saída HEX7[4] PIN_L7 num[3] Saída HEX7[3] PIN_L6 num[2] Saída HEX7[2] PIN_L9 num[1] Saída HEX7[1] PIN_L2 num[0] Saída HEX7[0] PIN_L3 letra[6] Saída HEX0[6] PIN_V13 letra[5] Saída HEX0[5] PIN_V14 letra[4] Saída HEX0[4] PIN_AE11 letra[3] Saída HEX0[3] PIN_AD11 letra[2] Saída HEX0[2] PIN_AC12 letra[1] Saída HEX0[1] PIN_AB12 letra[0] Saída HEX0[0] PIN_AF10 h) Configuração (“programação”) do kit DE2: 1. Certifique-se de que a chave RUN/PROG do kit DE2 esteja na posição RUN. Ligue a entrada “USB Blaster” do kit DE2 ao computador, utilizando para isso um cabo USB. Conecte o kit DE2 a uma fonte de energia 127V A.C. e ligue-o (botão vermelho). 2. O FPGA pode agora ser configurado, utilizando o módulo de programação do Quartus II (Tools Programmer) e selecionando o arquivo de configuração adequado, com a extensão “sof” (SRAM Object File). i) Concluída a configuração, o circuito desenvolvido já poderá ser utilizado. PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 14 Para casa: Utilizando o ambiente Quartus II, projete um circuito para efetuar a soma de dois números decimais de um dígito cada um, codificados em BCD. A saída também deverá estar codificada em BCD. Sugestão: utilize megafunções ou VHDL. Não é necessário implementar o circuito no kit DE2. x[3..0] y [3..0] dez unid[3..0] soma_bcd inst PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 15 Anexo I: Multiplexadores e Demultiplexadores Multiplexadores Exemplo de multiplexador comercial TTL: 74LS151 PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 16 Demultiplexadores O0 O1 I S Entrada de dados Entrada de seleção Saídas de dados PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 17 Exemplo de demultiplexador comercial TTL: 74LS138 PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 18 Anexo II: Somadores e Comparadores Somadores binários Somador paralelo de quatro bits C in A B C out S 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 Somador Completo PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 19 Exemplo de somador comercial TTL: 74LS83 Somador BCD PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 20 Somador/Subtrator binário Comparador de magnitude comercial: 74LS85 (TTL) = “Full adder” - Somador completo (ou “total”) PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 21 Anexo III: Descrição de Multiplexadores em VHDL Examine cada um dos códigos VHDL a seguir. Todos eles descrevem multiplexadores com duas entradas de dados e uma entrada de seleção. Procure entender cada uma das descrições apresentadas. -- Multiplexador com duas entradas de dados -- Abordagem estrutural entity mux_equacao is port ( I0, I1 : in bit; sel : in bit; Z : out bit); end mux_equacao; architecture arch of mux_equacao is begin Z <= (I0 and not sel) or (I1 and sel); end arch; -- Multiplexador com duas entradas de dados -- Abordagem comportamental – Código concorrente entity mux_when_else is port ( I0, I1 : in bit; sel : in bit; Z : out bit); end mux_when_else; architecture arch of mux_when_else is begin Z <= I0 when sel = '0' else I1; end arch; PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 22 -- Multiplexador com duas entradas de dados -- Abordagem comportamental – Código concorrente entity mux_select is port ( I0, I1 : in bit; sel : in bit; Z : out bit); end mux_select; architecture arch of mux_select is begin with sel selectZ <= I0 when '0', I1 when others; end arch; -- Multiplexador com duas entradas de dados. Código sequencial entity mux_if_then_else is port ( I0, I1 : in bit; sel : in bit; Z : out bit); end mux_if_then_else; architecture arch of mux_if_then_else is begin process (I0, I1, sel) begin if (sel = '0') then Z <= I0; else Z <= I1; end if; end process; end arch; PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 23 Cada um dos códigos VHDL a seguir descreve um multiplexador com quatro entradas de dados e duas entradas de seleção. Procure entender cada uma das descrições apresentadas. -- Multiplexador com duas entradas de dados -- Código sequencial entity mux_case is port ( I0, I1 : in bit; sel : in bit; Z : out bit); end mux_case; architecture arch of mux_case is begin process (I0, I1, sel) begin case sel is when '0' => Z <= I0; when others => Z <= I1; end case; end process; end arch; -- Multiplexador com quatro entradas de dados library ieee; use ieee.std_logic_1164.all; entity mux_4entradas is port ( a, b, c, d : in std_logic; sel : in integer range 0 to 3; Z : out std_logic); end mux_4entradas; architecture arch of mux_4entradas is begin with sel select Z <= a when 0, b when 1, c when 2, d when others; end arch; PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Laboratório de Sistemas Digitais Guia de Aulas Elaborado por: Prof. Dr. Dilmar Malheiros Meira Domingo, 26/01/2014 – 17h50min Página 24 -- Multiplexador com quatro entradas de dados e -- e uma entrada de habilitação ativa no nível alto. -- Código sequencial library ieee; use ieee.std_logic_1164.all; entity mux_4entr_c_enable is port ( a, b, c, d : in std_logic; sel : in integer range 0 to 3; en : in std_logic; Z : out std_logic); end mux_4entr_c_enable; architecture arch of mux_4entr_c_enable is begin process (a, b, c, d, sel, en) begin if (en = '0') then Z <= '0'; else case sel is when 0 => Z <= a; when 1 => Z <= b; when 2 => Z <= c; when others => Z <= d; end case; end if; end process; end arch;
Compartilhar