1 / 27

Engenharia de Software para Computação Embarcada

Engenharia de Software para Computação Embarcada. Prof. Frederico Ferlini Aula 4. CONTEÚDO. VHDL Introdução Estrutura Operadores Sintaxe Exemplos Simulação Testbench Formas de onda. VHDL. VHDL “ Very High Speed Integrated Circuits ” (VHSIC), início 1980

jock
Download Presentation

Engenharia de Software para Computação Embarcada

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Engenharia de Software para Computação Embarcada Prof. Frederico Ferlini Aula 4

  2. CONTEÚDO • VHDL • Introdução • Estrutura • Operadores • Sintaxe • Exemplos • Simulação • Testbench • Formas de onda

  3. VHDL • VHDL • “VeryHighSpeedIntegratedCircuits” (VHSIC), início 1980 • Originou como linguagem para descrever o comportamento de ASICs, definido pelo U.S DepartmentofDefense • VHDL  VHSIC Hardware DescriptionLanguage • Padrão IEEE em 1987 (InstituteofElectricalandElectronicsEngineers), revisado em 1993 • Linguagem utilizada mundialmente por empresas de CAD para especificação, simulação, síntese, propriedade intelectual • Outras linguagens de descrição de hardware • SystemC, VERILOG, Handel-C, SDL, ISP, Esterel, … Por que VHDL? VHDL é utilizado em mais de 50% do mercado!

  4. VHDL • Vantagens • Descrição independente de tecnologia • Compatibilidade entre diferentes CAD tools • Flexibilidade: re-utilização, escolha de ferramentas e fornecedores • Facilidade de atualização dos projetos • Exploração em alto nível de abstração permite analisar diferentes alternativas de implementação • Verificação do comportamento do sistema digital através de simulação • Redução do tempo de projeto , reduz “time-to-market”, redução de custo • Linguagem fortemente tipada, elimina erros de baixo nível • Desvantagens • HW gerado é menos otimizado • Controlabilidade/Observabilidade de projeto reduzidas • Falta de pessoal treinado para lidar com a linguagem

  5. VHDL – Níveis de Abstração • Permite que a descrição do HW seja: • Estrutural; ou, • Comportamental; ou, • RTL (RegisterTransferLevel); ou, • Nível Lógico com atraso* • Metodologia “top-down” • Projeto é inicialmente especificado de forma abstrata, com detalhamento posterior dos módulos • – Exemplo : A <= B + C after 5.0 ns; • A forma de realizar a soma pode ser decidida no momento da implementação (e.g. propagação rápida de vai-um, ou qualquer outro tipo de implementação, paralelo ou série, etc.)

  6. VHDL – Níveis de Abstração Comportamental RTL

  7. VHDL – Estrutura da Linguagem (Sintaxe) • Básica • Biblioteca (library) • Entidade (entity) • Arquitetura (architecture) • Complementar • Configuração (configuration) • Pacote (package) • Corpo do Pacote (package body)

  8. VHDL – Estrutura da Linguagem (Sintaxe) • Biblioteca (library) • Diversas funções e tipos básicos • Biblioteca da IEEE é sempre incluída • Quase todo arquivo VHDL começa: - libraryIEEE; - useIEEE.STD_LOGIC_1164.ALL; • STD_LOGIC_1164 • bit  {0, 1} • std_logic / std_logic_vector {0, 1, X, U, Z, W, L, H, -} • std_ulogic / std_ulogic_vector {0, 1, X, U, Z, W, L, H, -}* • and, nand, or, nor, not, xor, xnor • Outros tipos: boolean{true, false}, time{ps, ns, ms...}, integer, real... • Biblioteca do usuário(default) = work • Arquivos VHDL na mesma pasta do projeto

  9. VHDL – Tipos • Resumo

  10. VHDL – Estrutura da Linguagem (Sintaxe) • Entidade (entity) • Definição da interface do módulo (portas) • Sintaxe | entity<nome_modulo> is | port( | <nome_porta> : <sentido_porta><tipo_porta>; | p_entrada_ex : instd_logic; | p_saida_ex : outstd_logic | ); | end; • Sentidos: in, out, inout • Generic (Reusabilidade!) • Boa prática! • nome do módulo igual ao do arquivo • Identificação do sentido no nome da porta: ex.:<nome_porta>_i

  11. VHDL – Estrutura da Linguagem (Sintaxe) • Arquitetura (architecture) • Contém a descrição da funcionalidade do módulo • Sintaxe | architecture<tipo>of<entidade> is |-- declaração de componentes e sinais | signal<nome> : <tipo>; |signalsinal_ex: std_logic_vector(7 downto 0); | ... | begin | -- lógica combinacional (equções booleanas) | -- instanciação de componentes | -- atribuições (<=) | -- processos (process) | ... | end; • Boa prática! • <tipo> coerente com a descrição do módulo • Identificação de sinal no nome do sinal: ex.:<nome_sinal>_s

  12. VHDL – Características • Pode haver mais de uma entidade (módulo) em um mesmo arquivo VHDL • Todos os módulos de um projeto em um mesmo arquivo • Uma entidade pode ter mais de uma arquitetura • A escolha é feita com o uso de configuration • Boa prática! • Uma entidade (módulo) por arquivo VHDL • Uma arquitetura por entidade • Essas regras devem ser seguidas!!

  13. VHDL – Sinais e Variáveis • Sinais • Quase tudo em VHDL se resume a sinais • Comportamento equivalente ao hardware • Temporizado | signalsa, sb : std_logic; ... | sa <= sb; --atribuição • Variáveis • Só podem ser utilizadas dentro de processos • Comportamento semelhante ao software • Sem temporização, atribuição imediata | variableva, vb : std_logic; ... | va := vb; --atribuição • Evita-se utilizar! (Não será utilizado na disciplina!) • Constantes | constant c : std_logic:= ‘1’ ... | sa <= c; --atribuição • | c <= sa; --errado

  14. VHDL – Declarações e Atribuições • Declaração de array de bits • Definição da posição do MSB (MostSignificant Bit) • Declaração | signalbus_msb, : std_logic_vector(3 downto0); | signalbus_lsb, : std_logic_vector(0 to 3); ... • Atribuição | bus_msb <= bus_lsb; --atribuição direta ... equivale ... | bus_msb(3) <= bus_lsb(0); --atribuição índice por índice | bus_msb(2) <= bus_lsb(1); | bus_msb(1) <= bus_lsb(2); | bus_msb(0) <= bus_lsb(3); • Observação • Atribuição direta somente entre arrays de mesmo tamanho • Elementos são atribuídos de acordo o seu índice no array

  15. VHDL – Operadores • Tabela: • Observações • <=(menor_igual, mesma sintaxe que atribuição) • &(concatenação) • Ex.: “0010” & “1100” “00101100” • /=(diferente)

  16. VHDL – Ex.: • Ex.: buzzer • Estrutural • Componentes • Declaração • Instanciação • Interconexões

  17. VHDL – Exemplo (Comportamental) • Comportamental • Operações Lógicas • Pode ser escrita de diversas formas

  18. VHDL – (Cont.) • Comportamental • Condicionais • when • select • if/else ?

  19. VHDL – (Cont.) • Comportamental • Process • IF/ELSE • “switch_case” • “for” • Etc...

  20. VHDL – Process • Sintaxe | process<(lista de sensibilidade)> |-- parte de declaração (variáveis...) [opcional] | begin | -- corpo do process | -- interpretação sequencial | -- testes condicionais com if...then...elsif...then...else...endif | endprocess; • Muito utilizado para circuito sequênciais • Registradores, Latches, memórias • Lista de sensibilidade • Deve conter todas as entradas do circuito • Utilizado em testbench

  21. VHDL – Process • Sintaxe | process<(lista de sensitividade)> |-- parte de declaração (variáveis...) [opcional] | begin | -- corpo do process | -- interpretação sequencial | -- testes condicionais com if...then...elsif...then...else...endif | endprocess; • Muito utilizado para circuito sequenciais • Registradores, Latches, memórias • Lista de sensibilidade • Deve conter todas as entradas do circuito • Utilizado em testbench

  22. VHDL – Projeto • Equipe de desenvolvimento • <circuito1.vhd> ... <circuito2.vhd> ... <circuitoN.vhd> • Equipe de testes • <circuito_tb.vhd> • estímulos  entradas.txt • resultados  saidas.txt • verificação se os resultados são os esperados.

  23. VHDL – Equipe de Desenvolvimento • Diversos módulos VHDL • Integração • (“TOP”) - TOPO DO PROJETO • 4x Projeto RTL

  24. VHDL – Equipe de Desenvolvimento • Diversos módulos VHDL • Integração • (“TOP”) - TOPO DO PROJETO • 4x Projeto RTL

  25. VHDL – Testbench • Equipe de teste (top_tb) • Sem portas • Process • sem lista de sensibilidade

  26. VHDL – Simulação • Geração dos estímulos utilizando o top_tb.vhd • Simulação • Ferramenta ISIM • Análise dos resultados através da forma de onda • “escovação de bit”

  27. VHDL – Estrutura padrão de um projeto • Hierarquia de arquivos • top_tb.vhd(testbench do top do projeto – não sintetizável) • top.vhd(integração dos circuitos desenvolvidos - sintetizável) • top.ucf • Circuito1.vhd • Circuito2.vhd • .... • Os arquivos VHDL do exemplo “buzzer” estão disponibilizado na página da disciplina • O arquivo top.vhd e top.ucf com as portas dos componentes básicos da XC3S400 também estão disponibilizados na página

More Related