1 Hardware Description Language (HDL)  Para quê precisamos de uma Linguagem de Descrição de Hardware ?  Modelar, Representar e simular hardware digital.

Slides:



Advertisements
Apresentações semelhantes
SystemVerilog: Síntese de Lógica combinatória Função lógica combinatória pode ser representada como: logic_output(t) = f(logic_inputs(t)) Regras Evite.
Advertisements

1 Hardware Description Language (HDL) Para quê precisamos de uma Linguagem de Descrição de Hardware ? Modelar, Representar e simular hardware digital Concorrência.
abs access after alias all and architecture array assert attribute begin block body buffer bus case component configuration constant disconnect downto.
VHDL - VHSIC Hardware Description Language
Fernando Moraes e Ney Laert Vilar Calazans
Ney Laert Vilar Calazans
VHDL Linguagem de Descrição e Síntese de Circuitos Digitais
Unidades de Execução e de Controle Sistemas Digitais.
Verilog AULA - 3.
VHDL AULA - 2.
Lógica reconfigurável por hardware
Finite State Machines.
Introdução a circuitos lógicos
Dicas de Circuitos MO801/MC912.
VHDL (outros tópicos) MO801/MC912.
FLI – ModelSim Pedro Velho.
VERILOG HDL Instruções de Laço Repeat While For
9 Controle de fluxo Seqüenciadores. Jumps. Escapes. Exceções.
VERILOG HDL (HARDWARE DESCRIPTION LANGUAGE)
Máquina de Estados Uma máquina de estados finitos ou autômato finito é uma modelagem de um comportamento composto por estados, transições e ações Um estado.
O FLIP-FLOP Os latches e os flips-flops são os blocos elementares com os quais se constrói a maior parte dos circuitos sequenciais. Um flip-flop é um dispositivo.
Hardware Description Language (HDL)
O latch RS QN (QN)inv 1 S R QN+1 (QN+1)inv
Máquina de Estados Uma máquina de estados finitos ou autômato finito é uma modelagem de um comportamento composto por estados, transições e ações Um estado.
7 Abstração Genérica Unidades genéricas e instanciação.
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
O Portal do Estudante de Computação
Fundamentos de Eletrônica Digital
Paradigmas de programação
João Lucas de Oliveira Torres
Ada.
Antonyus Pyetro Infra-estrutura de Hardware – IF674
Antonyus Pyetro Infra-estrutura de Hardware – IF674
Lógica reconfigurável por hardware
Dispositivos Lógicos Programáveis (DLP) Ideia e Arquiteturas
Validação de VHDL: técnicas e ferramentas
Circuitos Seqüenciais Contadores
Ney Laert Vilar Calazans
BRAZIL IP The BrazilIP Network Verilog Curso do Brazil-IP Elmar Melcher UFCG
Prof. Manoel Eusebio Prof. Abel Guilhermino
Troca de Mensagens Assíncronas n Canais de comunicação são filas ilimitadas de mensagens. n Processos inserem elementos nessa flia através de comandos.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Descrição de Circuitos Combinacionais em VHDL
Programação de PIC em C Exposição das funções básicas para
Projetos Grandes MO801/MC912. Roteiro Componentes Configurações Instanciação múltipla Instanciação condicional Atenção: Os exemplos são cumulativos.
BRAZIL IP The BrazilIP Network SystemVerilog para Verificação funcional com OVM Curso do Brazil-IP Elmar Melcher UFCG
Programação de Autómatos
Hardware Description Language Aula 8 –Verilog HDL
Hardware Description Language Aula 4 –VHDL (introdução)
Hardware Description Language Aula 5 -VHDL Prof. Afonso Ferreira Miguel, MSc.
Hardware Description Language Aula 9 –Verilog HDL Prof. Afonso Ferreira Miguel, MSc.
Projetando Sistemas Digitais com SystemVerilog
Remote Procedure Call (RPC) e Rendezvous
VERILOG.
VERILOG Monitoria Infra-Estrutura de Hardware Álvaro João – ajss Húgaro Bernardino – hbb Fred Rabelo - ferrf Leonardo Leandro – lsl2 Jéssica de.
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Exercícios Circuitos Descritos em VHDL.
Introdução a VHDL Monitoria de Digitais.
Introdução ao VHDL João M. P. Cardoso.
Engenharia de Sistemas Embarcados Aula 7: Analisador Lógico.
Projetando Sistemas Digitais com SystemVerilog
1. 2 Objetivos 1.Análise dos resultados da primeira avaliação. Notas importantes para futuro. 2.Comunicação de placas baseadas em FPGAs com computador.
11 Revisão da Linguagem C Prof. Kariston Pereira Adaptado de Material gentilmente fornecido pelo Prof. Rui Tramontin (DCC/UDESC)
Faculdade Pernambuca - FAPE Compiladores Abril/2007 Compiladores Abril/2007.
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
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.
© 2007 IBM Corporation Academic Initiative 07/05/07 Aula 2 – Parte 1: Java Basics Autores: Argemiro José de Juliano Marcos
VHDL (Very High Speed Integrated Circuit HDL (VHSIC HDL)) GRECO CIn-UFPE.
Clique para editar o título Arduino seu primeiro microcontrolador PMR
IF E ITERAÇÃO WHILE Dilvan Moreira (baseado no livro Big Java e T. Munzner)
Máquina de Estados Uma máquina de estados finitos ou autômato finito é uma modelagem de um comportamento composto por estados, transições e ações Um estado.
Transcrição da apresentação:

1 Hardware Description Language (HDL)  Para quê precisamos de uma Linguagem de Descrição de Hardware ?  Modelar, Representar e simular hardware digital  Concorrência  Paralelismo  Semântica para valores de sinais no tempo  Construções e semântica especiais  Transições (bordas) de valores de sinais  Atrasos de propagação de sinais  Verificação de condições temporais

2 VERILOG HDL  A unidade básica – o modulo  Modulo ( module )  Descreve a funcionalidade do circuito  Define terminais (pinos, portas) de entrada e saída  Exemplo: Um computador  Funcionalidade: Realizar operações programadas  Portas de entrada/saída: conector para teclado, mouse, conector VGA, conector USB

3 Module  Definição geral module module_name ( port_list ); port declarations; … variable declaration; … description of behavior endmodule  Exemplo module HalfAdder (A, B, Sum, Carry); input A, B; output Sum, Carry; assign Sum = A ^ B; //^ denotes XOR assign Carry = A & B; // & denotes AND endmodule

4 Convenções Lexicais  Comentários // comentário de uma linha só /* outra forma de comentário de uma linha */ /* inicio de comentário com múltiplas linhas todo text é ignorado termina com a linha abaixo */  Números decimal, hexadecimal, octal, binario unsized decimal form size base form include underlines, +,-  Cadeias de caracteres "Delimite usando aspas numa mesma linha" limitados a 1024 caracteres

5 Convenções Lexicais (cont.)  Identifier A... Z a... z Underscore  Strings are limited to 1024 chars  First char of identifier must not be a digit  Keywords: See text.  Operators: See text. Verilog diferencia letras maiúsculos de minúsculos

6 Estilos de Descrição  Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog  Exemplo: not n1(sel_n, sel); and a1(sel_b, b, sel_b); and a2(sel_a, a, sel); or o1(out, sel_b, sel_a); sel b a out sel_n sel_b sel_a n1 a1 a2 o1

7 Estilo de Descrição (cont.)  Fluxo de dados: Representa sinais de saída em função de sinais de entrada  Exemplo: assign out = (sel & a) | (~sel & b); sel b a out sel_n sel_b sel_a

8 Estilo de Descrição (cont.)  Comportamental: representa o comportamento na forma de um algoritmo  Exemplo: if (select == 0) begin out = b; end else if (select == 1) begin out = a; end a b sel out Black Box 2x1 MUX

9 Estilo de Descrição (cont.)  RTL (Register Transfer Level): descreve o que acontece a cada transição ativa do sinal de relogio  Exemplo: clock) begin pisca = ~pisca; end

10 Modelo estrutural  Execução: Concorrente  Formato (portas lógicas primitivas): and G2(Carry, A, B);  Primeiro parâmetro (Carry) – Output  Outros parâmetros (A, B) - Inputs

11 Modelo de Fluxo de Dados  Usa atribuição permanente para sinais  Format: assign [ delay ] net = expression;  Example: assign sum = a ^ b;  delay : Atraso de propagação da expressão para o sinal  Todas as atribuições permanentes executam simultaneamente  A orden das atribuições dentro do arquivo Verilog não tem efeito sobre a execução.

12 Modelo de Fluxo de Dados (cont.)  Atraso  Exemplo: assign #2 sum = a ^ b;  “ #2 ” indica 2 unidades de tempo  Sem especificação de atraso: 0 (default)  Associação entre unidade de tempo e tempo simulado  `timescale unidade/resolução  Exemplo: `timescale 1 ns / 10 ps 1 unidade de tempo = 1 ns resolução é 10 ps (0.01 ns) ns é interpretado como ns

13 Modelo de Fluxo de Dados (cont.)  Exemplo: `timescale 1ns/10ps module HalfAdder (A, B, Sum, Carry); input A, B; output Sum, Carry; assign #3 Sum = A ^ B; assign #6 Carry = A & B; endmodule

14 Modelo de Fluxo de Dados (cont.)

15 Modelo comportamental  Exemplo: module mux_2x1(a, b, sel, out); input a, a, sel; output out; or b or sel) begin if (sel == 1) out = a; else out = b; end endmodule Sensitivity List

16 Modelo comportamental RTL (cont.)  always statement : Sequential Block  Sequential Block: All statements within the block are executed sequentially  When is it executed?  Occurrence of an event in the sensitivity list  Event: Change in the logical value  Statements with a Sequential Block: Procedural Assignments  Delay in Procedural Assignments  Inter-Statement Delay  Intra-Statement Delay

17 Modelo comportamental (cont.)  Atraso entre atribuições:  Exemplo: Sum = A ^ B; #2 Carry = A & B;  Execução atrasada  Atraso dentro de uma atribuição:  Exemplo: Sum = A ^ B; Carry = #2 A & B;  Atribuição atrasada

18 Construções Procedurais  Existem dois:  initial : Executa uma única vez ni início da simulação, NÃO sintetizável  always : Executa repetidamente, sintetizável  Exemplo: … initial begin Sum = 0; Carry = 0; end … or B) begin Sum = A ^ B; Carry = A & B; end …

19 Controle por evento  Controle por evento  Disparo do evento por transição (borda)  Disparo do evento por nível  Controle por evento de (posedge CLK) // transição positiva de CLK Curr_State = Next_state;  Controle por evento de nível (A or B) // mudança nos valores de A ou B Out = A & B;

20 Instruções de Laço  Laços  Repeat  While  For  Laço repeat  Exemplo: repeat (Count) sum = sum + 5;  Se a condição é x or z ela é tratada como 0

21 Instruções de Laço (cont.)  Laço While  Exemplo: while (Count < 10) begin sum = sum + 5; Count = Count +1; end  Se a condição é x or z ela é tratada como 0  Laço For  Exemplo: for (Count = 0; Count < 10; Count = Count + 1) begin sum = sum + 5; end

22 Instruções Condicionais  Format: if ( condition ) procedural_statement else if ( condition) procedural_statement else procedural_statement  Example: if (reset) Q = 0; else Q = D;

23 Instruções Condicionais (cont.)  Instrução Case  Exemplo 1: case (X) 2’b00: Y = A + B; 2’b01: Y = A – B; 2’b10: Y = A / B; endcase  Example 2: case (3’b101 << 2) 3’b100: A=B+C; 4’b0100: A=B–C; 5’b10100: A=B/C; //This statement is executed endcase

24 Data Types  Net Type: Wire wire [ msb : lsb ] wire1, wire2, …  Example wire Reset; // A 1-bit wire wire [6:0] Clear; // A 7-bit wire  Register Type: Reg reg [ msb : lsb ] reg1, reg2, …  Example reg [ 3: 0 ] cla; // A 4-bit register reg cla; // A 1-bit register

25 Restrictions on Data Types  Data Flow and Structural Modeling  Can use only wire data type  Cannot use reg data type  Behavioral Modeling  Can use only reg data type (within initial and always constructs)  Cannot use wire data type

26 Memories  An array of registers reg [ msb : lsb ] memory1 [ upper : lower ];  Example reg [ 0 : 3 ] mem [ 0 : 63 ]; // An array of 64 4-bit registers reg mem [ 0 : 4 ]; // An array of 5 1-bit registers

27 Compiler Directives  `define – (Similar to #define in C) used to define global parameter  Example: `define BUS_WIDTH 16 reg [ `BUS_WIDTH - 1 : 0 ] System_Bus;  `undef – Removes the previously defined directive  Example: `define BUS_WIDTH 16 … reg [ `BUS_WIDTH - 1 : 0 ] System_Bus; … `undef BUS_WIDTH

28 Compiler Directives (cont.)  `include – used to include another file  Example `include “./fulladder.v”

29 System Tasks  Display tasks  $display : Displays the entire list at the time when statement is encountered  $monitor : Whenever there is a change in any argument, displays the entire list at end of time step  Simulation Control Task  $finish : makes the simulator to exit  $stop : suspends the simulation  Time  $time: gives the simulation

30 Type of Port Connections  Connection by Position parent_mod

31 Type of Port Connections (cont.)  Connection by Name parent_mod

32 Empty Port Connections  If an input port of an instantiated module is empty, the port is set to a value of z (high impedance). module child_mod(In1, In2, Out1, Out2) module parent_mod(…….) input In1; input In2; child_mod mod(A,,Y1, Y2); output Out1; //Empty Input output Out2; endmodule //behavior relating In1 and In2 to Out1 endmodule  If an output port of an instantiated module is left empty, the port is considered to be unused. module parent_mod(…….) child_mod mod(A, B, Y1, ); //Empty Output endmodule

33 Test Bench `timescale 1ns/100ps module Top; reg PA, PB; wire PSum, PCarry; HalfAdder G1(PA, PB, PSum, PCarry); initial begin: LABEL reg [2:0] i; for (i=0; i<4; i=i+1) begin {PA, PB} = i; #5 $display (“PA=%b PB=%b PSum=%b PCarry=%b”, PA, PB, PSum, PCarry); end // for end // initial endmodule Test Bench Design Module Apply Inputs Observe Outputs

34 Test Bench - Generating Stimulus  Example: A sequence of values initial begin Clock = 0; #50 Clock = 1; #30 Clock = 0; #20 Clock = 1; end

35 Test Bench - Generating Clock  Repetitive Signals (clock) Clock  A Simple Solution: wire Clock; assign #10 Clock = ~ Clock  Caution:  Initial value of Clock (wire data type) = z  ~z = x and ~x = x

36 Test Bench - Generating Clock (cont.)  Initialize the Clock signal initial begin Clock = 0; end  Caution: Clock is of data type wire, cannot be used in an initial statement  Solution: reg Clock; … initial begin Clock = 0; end … always begin #10 Clock = ~ Clock; end forever loop can also be used to generate clock