LABORG. Parte 1 Introdução à Simulação em VHDL. Fernando Moraes e Ney Laert Vilar Calazans



Documentos relacionados
LABORG. Parte 1 Introdução à Simulação em VHDL. Ney Laert Vilar Calazans

Introdução à Simulação em VHDL. Ney Laert Vilar Calazans

O diagrama ASM contém dois elementos básicos: o bloco de estado e o bloco de decisão.

Somador e subtrator de 8 bits

4.a Aula Prática Projeto de um Somador de 16 bits com a Linguagem VHDL

LABORG. Parte 1 Introdução à Simulação em VHDL. Fernando Moraes e Ney Laert Vilar Calazans

Eletrônica Digital para Instrumentação

Fundamentos de sistemas digitais. Test-bench. prof. Dr. Edson Ifarraguirre Moreno

LABORG. Parte 3 - VHDL: Processos, Paralelismo e o Comando process. Fernando Gehm Moraes Ney Laert Vilar Calazans

Organização e Arquitetura de Computadores II

Implementação de um Sistema Digital em VHDL Cronômetro para Jogos de Basquete

Introdução à Linguagem VHDL

Exercícios de Fixação

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I. Introdução ao VHDL. César A. M. Marcon

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

PASSO A PASSO COMO CRIAR UM NOVO PROJETO EM SCHEMATIC NO SOFTWARE QUARTUS II

LABORG. Parte 5 Projeto de um circuito digital de média complexidade Parte 2. Fernando Gehm Moraes Matheus Trevisan

Circuitos Seqüenciais

Dispositivos Lógicos Programáveis

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE - UFRN DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA DIMAP

VHDL Lógica Síncrona. Sinais de Saída. Sinais de Entrada. barreira. carg. VHDL -Lógica Síncrona

Departamento de Engenharia Electrotécnica e de Computadores Instituto Superior Técnico Universidade Técnica de Lisboa Sistemas Digitais

Universidade Federal Fluminense - UFF Centro Tecnológico - CTC Escola de Engenharia - TCE Departamento de Engenharia de Telecomunicações TET

Conceitos de Linguagens de Descrição de Hardware (Verilog, VHDL) Alex Vidigal Bastos

Portas Lógicas Básicas: Parte 2 Simulação Lógica

Disciplina: Laboratório de Circuitos Digitais

Introdução VHDL Parte 4 - Testbench

Introdução ao VHDL. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva. Original por Ayman Wahba

Manual de Instalação da Plataforma Scorpion. 1. Como conectar a Plataforma Scorpion com a Xilinx Starter-3E kit

GUIA DE LABORATÓRIO DE SISTEMAS DIGITAIS PARA O CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO

Módulo 4 Introdução ao VHDL

TUTORIAL DO ACCESS PASSO A PASSO. I. Criar um Novo Banco de Dados. Passos: 1. Abrir o Access 2. Clicar em Criar um novo arquivo

Disciplina: Laboratório de Circuitos Digitais

Manual Signext Card Explorer

O Primeiro Programa em Visual Studio.net

Introdução à Linguagem VHDL

Circuitos/Sistemas Integrados Digitais (CID/SID)

Organização e Arquitetura de Computadores I. de Computadores

Como Usar o DriverMax

Como gerar arquivos para Sphinx Operador

MANUAL DE FTP. Instalando, Configurando e Utilizando FTP

Plano de Aula 26/8/13. VHDL - Visão Geral. Obje%vos: VHDL - Visão Geral. Descrição de circuito digital em VHDL

Departamento de Engenharia Electrotécnica e de Computadores Instituto Superior Técnico Universidade Técnica de Lisboa.

Lab 3. Timing Timing Constraints Simulação

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 18/04/2016 Prof. Alexandre - ELP1DLP1 / DEE

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

Capítulo 3 - Trabalhando com circuitos digitais

DIGITAR AQUI OS COMANDOS

Instituto Superior de Ciências do Trabalho e da Empresa Departamento de Ciências e Tecnologias da Informação. Arquitectura de Computadores ETI IGE

AMBIENTE. FORMULÁRIO: é a janela do aplicativo apresentada ao usuário. Considere o formulário como a sua prancheta de trabalho.

3.a Aula Prática Projeto de Circuitos Sequenciais com FPGA. Projeto e simulação de um gerador de frequência

SISTEMAS DIGITAIS INTRODUÇÃO AO AMBIENTE DE PROJECTO DO XILINX ISE 10.1 PEDRO TOMÁS, PAULO LOPES, HORÁCIO NETO

Simulador do Processador Neander T&D-Bench Simulator Manual do Usuário. por Júlio César Maccali. revisado por Prof. Christian Zambenedetti

UNIVERSIDADE FEDERAL DE ITAJUBÁ Instituto de Engenharia Elétrica Engenharia da Computação

DISPOSITIVOS LÓGICOS PROGRAMÁVEIS - DLP. 10/03/2017 Prof. Alexandre - ELP1DLP1 / DEE

TCI S5-USB. Cabo de Programação STEP5 - USB. Manual de Instalação

Prof. Leonardo Augusto Casillo

Eletrônica Digital para Instrumentação. Prof: Herman Lima Jr

Lógica Reconfigurável

ROTEIRO: IMPLANTANDO O SISTEMA OPERACIONAL LINUX. Introdução: FERRAMENTAS. Abaixo segue relação de aplicativos utilizados para realizar este roteiro:

Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação

Laboratório de Arquitetura de Computadores IST - Taguspark 2014/2015 Introdução ao simulador Guião 1 23 a 27 fevereiro de 2015

Electrónica Digital 2. Xilinx Webpack

Exercício Opcional: FAMILIARIZAÇÃO COM O SOFTWARE CIRCUIT MAKER 2000

Manual AGENDA DE BACKUP

Livro texto: VHDL- Descrição e Síntese de Circuitos Digitais Roberto D Amore Editora LTC

Programação de CPLDs no ambiente ISE 4.2i da Xilinx

Instituto Tecnológico de Aeronáutica - ITA Divisão de Engenharia Eletrônica Departamento de Eletrônica Aplicada Laboratório de EEA-21

(token SafeNet e-gov - Plataforma Windows 32).

Nota de Aula: Utilização da IDE Code::Blocks

Usando o simulador MIPS

Manual AGENDA DE BACKUP

Modelagem de Sistemas com VHDL

Prototipação de Sistemas Digitais. Metodologia de Projetos Cristiano Araújo

Laboratório de Arquitectura de Computadores IST - Taguspark 2008/2009 Introdução aos sistemas binários Guião 1 9 a 13 de Março 2009

Laboratório sobre Implementação de Sistemas Digitais com HDLs Ferramentas de Captura e Validação

Exercícios Referentes à Prova P1

ANDROID APPLICATION PROJECT

Aula 8 Circuitos Integrados

- Arquitetura de sistemas digitais- Cap 1 - Introdução

1 Code::Blocks Criação de projetos

Lógica de Programação

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes

TCI 7200-U USB-PPI Cable

TUTORIAL III: ADICIONANDO AJUDA. Adicionando Ajuda

Introdução. VHDL: VHSIC Hardware Description Language. Origem: VHSIC: Very High Speed Integrated Circuits. Departamento de Defesa EUA

Introdução ao Desenvolvimento de Circuitos Digitais Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 2h/60h

FSM em VHDL e Verificação Funcional. CMP de junho de 2006

Manual do Sistema "Vida Controle de Contatos" Editorial Brazil Informatica

Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação

SIMULAÇÃO VHDL DO PROCESSADOR MRStd

Manual de Instalação. SafeSign Standard (Para MAC OS 10.7)

Guia para o Google Cloud Print

Exercícios de Laboratório 3

INTRODUÇÃO AO PSPICE. Usaremos o PSPICE para simular o circuito mostrado na Figura 1. Figura 1. Exemplo No. 1

TCI 322. Conversor de Interface USB para RS422/RS485. Manual de Instalação

Universidade de São Paulo Biblioteca Digital de Teses e Dissertações. MANUAL DO USUÁRIO Conversão de arquivos para PDF

Transcrição:

LABORG Parte 1 Introdução à Simulação em VHDL Fernando Moraes e Ney Laert Vilar Calazans atualização - 05/agosto/2013

Mais informações sobre VHDL Web sites sobre VHDL e assuntos relacionados http://www.asic-world.com/vhdl/links.html site com diversos links para VHDL, incluindo software (gratuito e comercial) http://www.eda.org/ ponteiros para diversos padrões de várias HDLs e outras linguagens usadas em automação de projetos eletrônicos http://www.stefanvhdl.com/vhdl/html/index.html excelente material sobre uso de VHDL em verificação de sistemas digitais http://freehdl.seul.org projeto de desenvolvimento de um simulador VHDL livre para LINUX http://www.esperan.com empresa que comercializa treinamento em linguagens do tipo HDL 2

Introdução VHDL: Uma linguagem para descrever sistemas digitais Outras linguagens de descrição de hardware SystemC, VERILOG, Handel-C, SDL, ISP, Esterel, (existem dezenas) Originalmente à especificar hardware; hoje à simulação e síntese! Origem Linguagem para descrever hardware, no contexto do programa americano Very High Speed Integrated Circuits (VHSIC), iniciado em 1980 VHDL è VHSIC Hardware Description Language Padrão IEEE em 1987 (Institute of Electrical and Electronics Engineers), revisado em 1993, 2000, 2002 e 2004 Linguagem utilizada mundialmente por empresas de CAD (simulação, síntese, propriedade intelectual). Verilog muito usada nos EUA 3

Benefícios / Desvantagens Benefícios (em relação a diagramas de esquemáticos) Especificação do sistema digital: Projetos independentes da tecnologia (implementação física é postergada) Ferramentas de CAD compatíveis entre si Flexibilidade: re-utilização, escolha de ferramentas e fornecedores Facilidade de atualização dos projetos Permite explorar, em um nível mais alto de abstração, diferentes alternativas de implementação Permite, através de simulação, verificar o comportamento do sistema digital" Nível físico: Reduz tempo de projeto (favorece níveis abstratos de projeto) Reduz custo do projeto Elimina erros de baixo nível (se usado como base de ferramentas automatizadas) Conseqüência: reduz time-to-market (tempo de chegada de um produto ao mercado)" Desvantagens (em relação a diagramas de esquemáticos) Hardware gerado pode ser menos otimizado Controlabilidade / Observabilidade de projeto reduzidas 4

VHDL é uma linguagem de programação? Resposta curta: Não, é uma linguagem de descrição de hardware! Código é executado em um simulador Não se enxerga o compilador de VHDL, não há um código executável visível Projeto do usuário Especificado tipicamente no nível de abstração de transferência em registradores (em inglês, Register Transfer Level ou RTL), mas não apenas neste nível! Testbench: uma descrição em VHDL ou outra linguagem do procedimento de teste de um circuito Especificação comportamental do ambiente externo ao projeto (estímulos externos) Interage com o projeto Não precisa ser descrito em VHDL (o projeto VHDL pode ser validado em ambiente C/C++!!) Estrutura Geral de um Testbench Geração de estímulos e Captura de saídas Circuito (RTL) Resultados Comparação Resultados esperados 5

Sumário de Descrição de Hardware (1/2) INTERFACE EXTERNA: entity A B Especifica somente a interface entre o hardware e o ambiente Não contém definição do comportamento ou da estrutura internos Esquemático: Sum Carry Tabela Verdade A B Sum Carry 0 0 0 0 0 1 1 0 1 0 1 0 Código VHDL da entidade: 1 1 0 1 entity halfadd is port (A, B: in std_logic; Sum, Carry: out std_logic); end halfadd; 6

Sumário de Descrição de Hardware (2/2) COMPORTAMENTO : architecture Especifica o comportamento e/ou a estrutura internos da entity Deve ser associada a uma entity específica Uma entity pode ter associada a si várias architecture (representando diferentes formas de implementar um mesmo módulo) Código VHDL da entidade: architecture comp of halfadd is begin Sum <= A xor B; Carry <= A and B; end comp; 7

Descrição Completa do Somador library IEEE; use IEEE.Std_Logic_1164.all; entity halfadd is port (A, B: in std_logic; Sum, Carry: out std_logic); end halfadd; Esta biblioteca e pacote definem o tipo std_logic (que não é parte da linguagem VHDL!) architecture comp of halfadd is begin Sum <= A xor B; Carry <= A and B; end comp; 8

Tipo padrão para síntese: std_logic (1/3) standard_ulogic enumeração com 9 níveis lógicos tipo não resolvido --------------------------------------------fonte: stdlogic.vhd---- -- logic state system (unresolved) ------------------------------------------------------------------- TYPE std_ulogic IS ( 'U', -- Uninitialized 'X', -- Forcing Unknown '0', -- Forcing 0 '1', -- Forcing 1 'Z', -- High Impedance 'W', -- Weak Unknown 'L', -- Weak 0 'H', -- Weak 1 '-' -- Don't care ); 9

Tipo padrão para síntese: std_logic (2/3) signal a, b, c :<tipo pré-definido, não resolvido >; signal res_z : <tipo_resolvido>; z <= a; z <= b; X? a b res_z Erro de multiple drivers, ou seja, curtocircuito res_z <= a; res_z <= b; Resolução por tabela de resolução 10

Tipo padrão para síntese: std_logic (3/3) standard_logic tipo resolvido - permite por exemplo implementação de barramentos tipo mais utilizado em descrições de hardware SUBTYPE std_logic IS resolved std_ulogic; TYPE std_logic_vector IS ARRAY ( NATURAL RANGE <>) OF std_logic; ------------------------------------------------------------------- -- resolution function ------------------------------------------------------------------- CONSTANT resolution_table : stdlogic_table := ( -- --------------------------------------------------------- -- U X 0 1 Z W L H - -- --------------------------------------------------------- ( 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U', 'U' ), -- U ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ), -- X ( 'U', 'X', '0', 'X', '0', '0', '0', '0', 'X' ), -- 0 ( 'U', 'X', 'X', '1', '1', '1', '1', '1', 'X' ), -- 1 ( 'U', 'X', '0', '1', 'Z', 'W', 'L', 'H', 'X' ), -- Z ( 'U', 'X', '0', '1', 'W', 'W', 'W', 'W', 'X' ), -- W ( 'U', 'X', '0', '1', 'L', 'W', 'L', 'W', 'X' ), -- L ( 'U', 'X', '0', '1', 'H', 'W', 'W', 'H', 'X' ), -- H ( 'U', 'X', 'X', 'X', 'X', 'X', 'X', 'X', 'X' ) -- - ); 11

Validação por Simulação Uma forma simples de testar o projeto: testbenches Na sua forma mais simples, um testbench contém um ou mais processos geradores de estímulos (testes) e uma instância do projeto a testar O testbench é construído como um módulo VHDL que não contém portas de entrada/saída. Ou seja, trata-se de um sistema fechado ou autônomo TESTBENCH A A Y T D B Z Z GERADOR DE ESTÈMULOS PROJETO 12

Exemplo de Testbench para o Somador library ieee; use ieee.std_logic_1164.all; entity halfadd_tb is end halfadd_tb; architecture TB_ARCHITECTURE of halfadd_tb is signal aa,bb,soma,vaium : std_logic; Note: testbench não tem pinos externos (ports in ou out) begin Nome do projeto (entidade) UUT : entity work.halfadd port map ( A => aa, B => bb, Sum => soma, Carry => vaium ); Instanciação do projeto, conectando pinos do projeto aos fios do testador aa <= '0', '1' after 10 ns, '0' after 20 ns, '1' after 30 ns; bb <= '0', '1' after 20 ns; end TB_ARCHITECTURE; Geração dos estímulos, dizendo como fios se comportam 13

Usando o Simulador do ISE da Xilinx Preparando-se para usar o ambiente ISE 1. Logar-se no Sistema Operacional Linux (Ubuntu) do laboratório 2. Executar o comando abaixo para ter acesso às ferramentas de CAD Prompt> source /soft64/source_gaph 3. Executar o comando para configura o uso do ambiente ISE Prompt> module load ise 4. Executar o ISE (em background) Prompt> ise & CRIAR DOIS ARQUIVOS COM EXTENSÃO VHDL: somador1.vhd (lâmina 8) e somador1_tb.vhd (lamina 13) 14

Criando os arquivos do projeto 1. Criar um diretório de trabalho exemplo half_adder 2. Criar os dois arquivos fonte, com extensão VHDL: somador1.vhd (lâmina 8) somador1_tb.vhd (lamina 13) library ieee; use ieee.std_logic_1164.all; library IEEE; use IEEE.Std_Logic_1164.all; entity halfadd is port (A, B: in std_logic; Sum, Carry: out std_logic); end halfadd; architecture comp of halfadd is begin Sum <= A xor B; Carry <= A and B; end comp; entity halfadd_tb is end halfadd_tb; architecture TB_ARCHITECTURE of halfadd_tb is begin signal aa,bb,soma,vaium : std_logic; UUT : entity work.halfadd port map ( A => aa, B => bb, Sum => soma, Carry => vaium ); aa <= '0', '1' after 10 ns, '0' after 20 ns, '1' after 30 ns; bb <= '0', '1' after 20 ns; end TB_ARCHITECTURE; 15

Usando o Simulador do ISE da Xilinx Criando um projeto no ambiente ISE para o FPGA da Nexys2 1. Caso algum projeto seja aberto ao lançar o ISE, fecheo com a opção de menu File à Close Project 2. Crie um novo projeto de nome somador1 pertando o botão New Project. (Lembre: escolha um diretório no qual tens direito de escrita) 3. Depois de preencher os campos, clique no botão Next > Obs: Não usem caracteres especiais no nome do projeto nem no nome do caminho (acentos, brancos, etc.) 16

Usando o Simulador do ISE da Xilinx 4. Criar projeto com características abaixo (dados importantes: escolha do dispositivo e do ISE Simulator- ISIM na opção Simulator) Next > 17

Usando o Simulador do ISE da Xilinx 5. Na janela final, confira os dados do projetos e depois simplesmente clique em Finish 18

Usando o Simulador do ISE da Xilinx O próximo passo é inserir no projeto os arquivos VHDL deste, que são: a descrição do somador (transparência 8) e o testbench (transparência 13) 6. Salve os conteúdos VHDL citados respectivamente como arquivos somador1.vhd e somador1_tb.vhd, no diretório acima do diretório principal do projeto (criado pelo ISE) 7. No ISE, clique com o botão direito no FPGA (Janela Hierarchy) Add Copy of Source, ache os dois arquivos e os escolha 8. A seguir, clique em OK 19

Usando o Simulador do ISE da Xilinx Note na janela anterior que o ambiente detectou corretamente os arquivos como sendo: um a ser usado apenas em simulação (o testbench, classificado como Simulation) e o outro como geral (All), significando que ele contém VHDL sintetizável 9. No Browser principal do projeto, escolha a visão de simulação (View Simulation), pois por omissão a visão escolhida é a de implementação 20

Usando o Simulador do ISE da Xilinx A janela principal do ambiente mostra agora o projeto com um arquivo de testbench (somador1_tb.vhd) e sob ele o arquivo de síntese (somador1.vhd), contendo um par entidade-arquitetura (halfadd - comp) 21

Usando o Simulador do ISE da Xilinx 10. Selecione o arquivo somador1_tb.vhd na janela Hierarchy. A janela do ISE deve ficar como ao lado. Note que na janela de processos (Processes) vê-se o acesso ao simulador 22

Usando o Simulador do ISE da Xilinx 11. Na janela Processes, dê duplo clique na opção Behavioral Check Syntax, para verificar que o testbench não possui erros de sintaxe 12. Abra a hierarquia de projeto, clicando no sinal + ao lado do arquivo somador1_tb.vhd na janela Hierarchy. Selecione o arquivo somador1.vhd e repita o processo de verificação sintática 23

Usando o Simulador do ISE da Xilinx 13. Para preparar a simulação, selecione de novo o arquivo somador1_tb.vhd (janela Hierarchy), e clique com o botão direito do mouse na opção Simulate Behavioral Model Process Properties (janela Processes). Na janela que se abrir, selecione (se já não estiver selecionada) a opção Advanced no item Property Display Level e mude o Simulation Run Time para 50ns 24

Usando o Simulador do ISE da Xilinx 14. Para simular, basta fechar a janela Process Properties clicando em OK e dar um duplo clique na opção Simulate Behavioral Model da janela Processes. Surge uma nova janela similar a esta ao lado. Note a janela de formas de onda que mostra os 50ns de simulação do circuito. Experimente usar os diversos botões do simulador Note: a forma de onda mostra todos os casos da tabela verdade do somador Obs: Lembrem-se de simular o testbench e não o projeto, selecionando o arquivo no topo da hierarquia. Para ver toda a onda na janela clique em Zoom to Full View 25

PROJETO 2 - Sinais de 1 Bit e Barramentos std_logic è fio e std_logic_vector è vários fios (barramento) Escreva um novo código (faça um novo projeto VHDL. Use a opção Copy Project do ISE) utilizando sinais não de 1 bit mas de 4 bits (std_logic_vector(3 downto 0)). O efeito é transformar o meio somador de 1 bit em um somador de 4 bits A nova entidade VHDL deve parecer com: entity soma is port (A, B: in std_logic_vector(3 downto 0); Soma: out std_logic_vector(3 downto 0) ); end soma; O corpo da arquitetura VHDL deverá conter apenas soma <= a + b; Deve-se incluir a linha: use IEEE.std_logic_unsigned.all; (Porquê?) Escreva o testbench correspondente 26

Geração de Estímulos e Resultado Esperado 4 bits podem ser representados como um único dígito em hexadecimal. No testbench pode-se escrever: aa <= x 9", x"5" after 10 ns, x"a" after 20 ns, x"b" after 30 ns; bb <= x"8", x"3" after 20 ns; Ao simular este circuito, aparece algo como: (testar outros valores no seu testbench) O comportamento é o esperado? Explicar. 27

Geração Exaustiva de Estímulos Notem que para gerar todas as combinações possíveis de entradas deste circuito seria necessário produzir 256 padrões (combinando os 16 valores distintos de A com os 16 valores distintos de B). Um trecho de código VHDL capaz de gerar estes estímulos é dado abaixo: signal aa : STD_LOGIC_VECTOR(3 downto 0):="0000"; --valor inicial signal bb : STD_LOGIC_VECTOR(3 downto 0):="0000"; --valor inicial... process (aa) begin if (aa/=x"f") then aa <= aa+x"1" after 10ns; -- a cada 10ns else aa <= x"0" after 10ns; -- incrementa A end if; end process; process (bb) begin if (bb/=x"f") then bb <= bb+x"1" after 160ns; -- a cada 16 else bb <= x"0" after 160ns; -- valores de A, end if; -- incrementa B end process; 28

PROJETO 3 Implemente o circuito de seis portas lógicas abaixo em VHDL Crie um projeto com o simulador do ISE que contenha o par entidade-arquitetura correspondente a este circuito Crie um arquivo que instancie este circuito, que gere estímulos para todas suas 4 entradas e os aplique à instância, isto é, crie um testbench para o circuito Simule o testbench e descreva textualmente como o circuito funciona 29

TRABALHO A FAZER Dados sobre o circuito da lâmina anterior: Trata-se de um flip-flop D sensível à borda de subida do relógio (sinal CLK), com sinais assíncronos (isto é independentes do, e prioritários em relação ao sinal de relógio) de preset (sinal PRE) e reset (sinal CLR) As saídas são os sinais Q e Q, tipicamente assumindo valores opostos, e mostram o valor do bit armazenado no FF O sinal PRE em 0 força a saída Q para 1 (e Q para 0), enquanto CLR em 0 força Q para 0 (e Q para 1). Eles não devem nunca ser 0 ao mesmo tempo. Qualquer um em 0 faz com que as bordas do relógio sejam ignoradas (elimina o efeito destas) Seguindo a regra geral de circuitos síncronos, nenhuma entrada deve mudar ao mesmo tempo que o relógio Cada borda de subida de CLK sem PRE nem CLR ativados provoca a amostragem e o armazenamento do valor de D 30

Observações Notem que o circuito a implementar é assíncrono (devido aos laços de realimentação combinacionais), e cria um componente básico em projetos síncronos, o flip-flop D. Cuidados a tomar: Ao fazer o testbench respeitem a relação de temporização entre sinais de um circuito síncrono: Quando o clock mudar na sua borda sensível (0à 1, borda de subida), NENHUM sinal amostrado por ele (D, neste caso) pode mudar ao mesmo tempo! Lembrem-se dos conceitos de tempo de setup e hold! Os sinais CLR e PRE também devem respeitar esta regra! Nomes de sinais no testbench podem ser idênticos aos nomes dos pinos dos objetos que o testbench instancia 31

A ENTREGAR T1 O T1 compreende 3 projetos ISE: meio-somador de 1 bit (half_adder) somador de 4 bits sem vai-um (full_adder) Flip-flop mestre-escravo assíncrono (ffd) Para cada projeto entregar: código VHDL de implementação testbench que valida a implementação texto no WORD com formas de onda, descrevendo como o circuito funciona Estrutura do zip a ser entregue: <aluno1_aluno2>.zip, contendo half_adder/ half.vhd tb_half.vhd half.doc explicação e print screen das formas de onda full_adder / full.vhd tb_full.vhd full.doc ffd/ ffd.vhd tb_ffd.vhd ffd.doc 32