ELT601 Eletrônica Digital II Graduação em Engenharia Eletrônica

Documentos relacionados
ELT601 Eletrônica Digital II Graduação em Engenharia Eletrônica

ELT601 Eletrônica Digital II Graduação em Engenharia Eletrônica

Sistemas Digitais. Linguagem Verilog. Monitoria SD Daniel Alexandro/Reniê Delgado/Vanessa Ogg. Editado por (DARA)

1. Objetivos: Familiarizar o aluno com o uso do ambiente de desenvolvimento da Linguagem Verilog. Familiarizar o aluno com a linguagem Verilog.

ELT601 Eletrônica Digital II Graduação em Engenharia Eletrônica

Organização e Arquitetura de Computadores I

Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 2h/60h

Máquinas de Estados Finitos. Aula 19 Prof. Abel Guilhermino

ELT502 Eletrônica Digital I Graduação em Engenharia Eletrônica

Circuitos combinatórios. (Revisão)

ELT601 Eletrônica Digital II Graduação em Engenharia Eletrônica

Máquina de Estados. Transições Estados Em Verilog. Monitoria SD Daniel Alexandro/Reniê Delgado/Vanessa Ogg.

Funções de Lógica Combinacional

VERILOG. Alex Vidigal Bastos

CURSO BÁSICO DE VERILOG

Circuitos sequenciais elementares

Circuitos sequenciais elementares

Treinamento em Projeto de Sistemas Digitais

Tutorial Verilog 1ª Edição

Modelação de circuitos síncronos

VHDL. Descrição e Projeto de Circuitos Utilizando VHDL

Introdução à Linguagem VHDL

low): Descreve o que o sistema deve fazer utilizando expressões lógicas.

Organização e Arquitetura de Computadores II

Linguagens de descrição de hardware. Modelação de um circuito (digital) com HDL. fluxo de projecto seguindo uma metodologia top-down

Verilog HDL Introduzida em 1985 pela Gateway Design System Corporation Após 1990, passou a ser de domínio público, e em 1995 passou a ser padrão IEEE

Circuitos Combinacionais Básicos

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

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

UNIVERSIDADE FEDERAL DE ITAJUBÁ

VHDL Circuitos Combinacionais

Introdução às máquinas de estado finitas

Modelação de máquinas de estados

Testbench. modelo não sintetizável (testbench) circuito a fabricar. modelo sintetizável (vai ser um circuito digital) Verilog

Treinamento em Projeto de Sistemas Digitais

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

PHP Instalação. Linguagens Server-side Professor Fábio Luís da Silva Santos XAMPP.

Descrição e Projeto de Circuitos Utilizando VHDL

Xilinx ISE. O projecto

Demonstração de imagens de auxílio didático. VHDL - Descrição e Síntese de Circuitos Digitais Roberto d Amore

Revisão: Projeto de Processadores em VHDL

Síntese de Sistemas Digitais

Introdução à Linguagem VHDL

Treinamento em Projeto de Sistemas Digitais

Algoritmos e Técnicas de

Lógica Reconfigurável

SystemVerilog para descrição RTL

FPGA & VHDL. Tutorial

Descrição por fluxo de dados (Data-Flow): Descreve o que o sistema deve fazer utilizando expressões lógicas.

LABORG. VHDL Máquina de estados finitos

Registradores de Deslocamentos.

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

Lógica Reconfigurável

Introdução às linguagens de descrição de hardware

Introdução à Programação I

Desenvolvimento de Aplicações Desktop

ELT502 Eletrônica Digital I Graduação em Engenharia Eletrônica

Módulo 4 Introdução ao VHDL

Eletrônica Digital. Prof. Gilson Yukio Sato sato[at]utfpr[dot]edu[dot]br

Introdução a Sistemas Digitais

Uma Introdução às Linguagens de Descrição de Hardware

Programação Orientada a Objetos

Os sistemas combinacionais a saída depende exclusivamente das condições das entradas, portanto o sistema não possui memória interna.

CONVERSOR ANALÓGICO DIGITAL POR APROXIMAÇÕES SUCESSIVAS

PCS3225. Sistemas Digitais II. Biestáveis em VHDL. Biestáveis em VHDL. Marcos A. Simplicio Jr.

INTRODUÇÃO AO ARDUINO DUE, CANAL DIGITAL, FUNÇÃO DELAY

Introdução à Linguagem VHDL

IMPLEMENTAÇÕES POR EQUAÇÃO DE ESTADOS E DE SAÍDA DOS MODELOS DE MEALY E DE MOORE 1 BIT POR ESTADO.

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

Elementos básicos das linguagens de programação

Lab Verilog Chaves, LEDs e Multiplexadores

Projecto de Sistemas Digitais

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Gustavo G. Parma. Objetivos: O aluno deverá ser capaz de compreender os conceitos básicos de VHDL.

Sintaxe do Pascal Simplificado Estendido de 12 novas construções em Notação EBNF (BNF estendida)

4. Constantes. Constantes pré-definidas

Operações com vetores

Capítulo III : A Linguagem Pascal Estruturas de Controlo

Aula 14: Lógica e circuitos digitais

FPGA & VHDL. Tutorial Aula 1. Computação Digital

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

O 0 O 1 O 2 O 3 O 4 O 5 O 6 O 7

Aula 2 Semântica de VHDL

VHDL - VHSIC Hardware Description Language. Exemplo prático. Raiz Quadrada

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

Tipos Primitivos, estruturas de iteração e decisão.

NOTAS DE AULA NE7720 SISTEMAS DIGITAIS - II AULA

Introdução a Sistemas Digitais

ENGC40 - Eletrônica Digital

Fundamentos de Sistemas Digitais. Lógica Sequencial. Prof. Dr. Alexandre M. Amory Prof. Dr Edson I. Moreno

Declarações. C diferencia letras maiúsculas de minúsculas! int n, N; n é diferente de N!

Conceitos básicos de programação

Programação Estruturada e Orientada a Objetos

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues

Exercícios de Fixação

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

CONTADORES DIGITAIS (Unidade 6)

Transcrição:

Graduação em Engenharia Eletrônica Universidade Federal de Itajubá IESTI Verilog HDL Descrição algorítmica Prof. Rodrigo de Paula Rodrigues

Descrição algorítmica A B RTL E Representação Intermediária Circuito digital F C D

Descrições Por fluxo e estrutural Algorítmica X Y Código concorrente Código sequencial Hardware opera de forma paralela

Descrição algorítmica em Verilog Bloco a Comando 1 Comando 2... Comando N A B E F D C F D Bloco b Comando 1 Comando 2... Comando M

Bloco always [ ] always @( ) lista de sensibilidade opcionais no caso de um único comando ser executado [ begin ] [ end ] lista de comandos a serem executados [ ] parâmetro opcional

Bloco always Evento de ativação always @(... ) Comando 1 Comando 1 Comando 2 Comando 3... Fluxo Comando 2 Comando 3 Comando N... Comando N Fim

Bloco always - Ativação always always @( a ) always @( b or c ) always @(posedge d) a b c ou d! negedge

Comandos sequenciais always @(... ) Comando sequencial comando reg dados integer float! Não sintetizável tipos bloqueadores não bloqueadores

Registros nome do registro [[ ]] reg ; dimensão especificação dos limites tamanho e 1 bit [ ] parâmetro opcional

Números inteiros lista de inteiros [[ ]] integer ; tamanho de 32 bits sinalizado número de inteiros especificação dos limites [ ] parâmetro opcional

Atribuições bloqueadoras Registro a receber a atribuição registro * Valor de atribuição a = b; c = d ^ w; d = ~ e;... f = g b; valor ou equação de atribuição Importante: A análise e atribuição são realizadas no mesmo momento do comando * Aplicável ao se modelar lógica sequencial

Atribuições não bloqueadoras Registro a receber a atribuição * registro < Valor de atribuição... a <= b; c <= d ^ w; d <= ~ e; f <= g b; valor ou equação de atribuição * Aplicável ao modelamento de lógica combinacional Importante: A análise é realizada no momento do comando, enquanto a atribuição, ao final do bloco

Exemplos 1 Levante o circuito gerado por cada um do trechos de descrições apresentados 1 a module M1( a, b, c ); input a, b; // entradas output c; // saídas reg c; // registros always @( a or b ) begin c = a b; end endmodule a b c

Exemplos 1 b module M2( a, b, clk ); input a, clk; // entradas output b; // saídas reg b; // registros always @( posedge clk ) begin b = a; end endmodule a C b D FF D clk Q

Exemplos 1 c module M3( a, b, clk ); input a, clk; // entradas output b; // saídas reg b, s; // registros always @( negedge clk ) begin s = a; b = s; end a clk D C FF D Q b endmodule

Exercícios 1 d module M4( a, b, clk ); input a, clk; // entradas output b; // saídas reg b, s; // registros a D s Q D b Q b always @( negedge clk ) begin s <= a; b <= s; end clk FF D FF D endmodule

Operadores lógicos Símbolo Função lógica Exemplo! Negação! e Ou c d && E a && b == Teste de igualdade f == g!= Teste de desigualdade w!= h === Teste de igualdade (x, z) w === h!== Teste de desigualdade (x, z) x!== y

Operadores lógicos A = 2 d3, B = 2 d0 A && B A B! B! A A == B Resultado: 0 Resultado: 1 Resultado: 1 Resultado: 0 Resultado: 0 A = 3 b0xx, B = 3 b0xz, C = 3 b0xx A && B A!= B A!== B A === B A === C Resultado: x Resultado: x Resultado: 1 Resultado: 0 Resultado: 1

Operadores relativos Símbolo Função Exemplo < Menor que > Maior que a < b c > d <= Menor ou igual a a <= b >= Maior ou igual a f >= g

Operadores relativos A = 4, B = 3, X = 4 b1010, Y = 4 b1101, Z = 4 b1xxx A <= B A > B Y >= X Y < Z A > Z Resultado: 0 Resultado: 1 Resultado: 1 Resultado: x Resultado: x

Estrutura de comparação SE Formato 1 Formato 2 Formato 3 Formato 4 if ( ) if ( ) if ( ) if ( ) ; ; ; begin else else if ( ) ; else ; end ;

Estrutura de comparação SE Formato 1 Formato 2 Formato 3 Formato 4 if ( A == 1 b1 ) S = B & C ; if ( A == 1 b1 ) S = B & C; else S = B C; if ( A == 2 b01 ) S = 4 b1010; else if ( A == 2 b10 ) S = 4 b1110; if ( A === 1 bx ) begin C <= A & B; D <= C E; else F <= ~ G; S = 4 b0000; end

Estrutura de comparação CASO case ( ) expressão de teste alternativas alternativa padrão 1 2 3 : 1 ; : 2 ; : 3 ; [ default : padrão ;] endcase... [ ] parâmetro opcional comandos a serem executados no caso da alternativa associada ser verdadeira um único comando ou um bloco de comandos entre as palavras begin e end

Estrutura de comparação CASO case ( controle ) 2 b00, 2 b01 : saida = x y; 2 b10 : begin saida = x ^ y; sinal = 1 b1; end 2 b11 : sinal = 1 b0; endcase

Estrutura de comparação CASO case ( funcao_ula ) 3 b000 : saida = x & y; 3 b001 : saida = x y; 3 b101 : saida = x ^ y; 3 b110 : saida = ~x ; default : saida = 4 h0; endcase

Estrutura de comparação CASO casez casex Estado z é tratado como não importa Estados x e z são tratados como não importa

Estrutura de comparação CASO reg [3:0] codigo; integer estado; casex ( codigo ) 4 b1xxx : estado = 1; 4 bx1xx : estado = 2; 4 bxx1x : estado = 3; 4 bxxx1 : estado = 4; endcase

Estrutura de repetição Enquanto expressão de teste while ( ) ; while ( ) begin comando a ser executado enquanto a condição de teste for verdadeira end bloco de comandos a serem executado enquanto a condição de teste for verdadeira

Estrutura de repetição Enquanto reg [0:9] entrada, saida; integer indice; indice = 0; while ( indice < 10 ) begin saida[ indice ] = entrada[ indice ] ^ 1 b1; indice = indice + 1; end

Estrutura de repetição Para inicialização teste atualização for ( ; ; ) ; for ( ; ; ) begin comando a ser executado enquanto a condição de teste for verdadeira end bloco de comandos a serem executado enquanto a condição de teste for verdadeira

Estrutura de repetição Para reg [0:9] entrada, saida; integer indice; for( indice = 0; indice < 10; indice = indice + 1 ) begin saida[ indice ] = entrada[ indice ] ^ 1 b1; end

Exemplos Mux 2 para 1 /* Mux 2 para 1 comportamental */ module mux2p1( a, b, s, z ); a b 0 1 s z input a, b, s; // entradas output z; // saídas reg z; // registro de saída always @( a or b or s ) begin if ( s == 1 b1 ) z = b; else z = a; end endmodule

Exemplos Circuito combinacional /* Combinacional */ module combinacional( a, b, c, d ); a b c s sinal interno d input a, b, c; // entradas output d; // saídas reg s, d; // registros always @( a or b or c ) begin s <= a & b; d <= s & c; end endmodule

Exemplos Demux 4 para 1 /* Demux 4 para 1 comportamental */ module demux4p1( I, S, O ); I 00 01 10 11 s 1 s 0 O 0 O 1 O 2 O 3 input I; // entrada I input [1:0] S; // entradas de seleção output [3:0] O; // saídas reg [3:0] O; // registro de saída integer cnt; // contador always @( I or S ) begin end endmodule for (cnt = 0; cnt < 4; cnt = cnt + 1 ) if ( cnt == S ) O[ cnt ] = I; else O[ cnt ] = 1 b0;

Exercícios 1 Implemente um demux 4 para 1 por meio da construção comportamental case 2 Implemente um decodificador de prioridade de 4 entradas e 2 saídas

Demux 4 para 1 I 00 01 10 11 O 0 O 1 O 2 O 3 s 1 s 0

Codificador de prioridade Entradas Saídas E 0 E 1 E 2 E 3 Codif. Prioridade s 0 s 1 E3 E1 E2 E0 S1 S0 1 x x x 1 1 0 1 x x 1 0 0 0 1 x 0 1 0 0 0 1 0 0

Verilog Fim Obrigado