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.

Slides:



Advertisements
Apresentações semelhantes
Chapter Five The Processor: Datapath and Control (Parte B: multiciclo)
Advertisements

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.
Projecto de Hardware com FPGAs
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 Sistemas Digitais.
VHDL Linguagem de Descrição e Síntese de Circuitos Digitais Sistemas Digitais.
Sistemas Digitais Projeto RTL – Unidade de Execução
Unidades de Execução e de Controle Sistemas Digitais.
Verilog AULA - 3.
VHDL AULA - 2.
Lógica reconfigurável por hardware
Finite State Machines.
MC613 Laboratório de Circuitos Lógicos
Introdução a circuitos lógicos
Dicas de Circuitos MO801/MC912.
VHDL (outros tópicos) MO801/MC912.
MC542 Organização de Computadores Teoria e Prática
MC542 Organização de Computadores Teoria e Prática
CAD (Caco Aided Design)
FLI – ModelSim Pedro Velho.
Circuitos Sequenciais
Uma chave é normalmente aberta e a outra normalmente fechada
Library IEEE; use ieee.std_logic_1164.all; use IEEE.std_logic_arith.all;
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)
Decodificador 2 para 4 (2 : 4)
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.
O Flip-Flop Mestre/Escravo
Multiplicador e Forwarding no MIPS
Eletrônica Digital Circuitos Combinacionais: O seu estado (os valores) de todas as saídas depende apenas dos valores das entradas neste mesmo instante.
Fundamentos de Eletrônica Digital
Instanciação em VHDL.
EPUSP – PTC Guido Stolfi
Antonyus Pyetro Infra-estrutura de Hardware – IF674
Antonyus Pyetro Infra-estrutura de Hardware – IF674
Antonyus Pyetro Infra-estrutura de Hardware – IF674
Lógica reconfigurável por hardware
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
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
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 9 –Verilog HDL Prof. Afonso Ferreira Miguel, MSc.
Projetando Sistemas Digitais com SystemVerilog
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.
1 Hardware Description Language (HDL)  Para quê precisamos de uma Linguagem de Descrição de Hardware ?  Modelar, Representar e simular hardware digital.
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.
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)
Unidade 1 – Portas Lógicas Básicas – NOR, NAND, XOR e XNOR.
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:

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

Verilog HDL vs. VHDL Verilog HDL é mais próxima a C VHDL é mais próxima a ADA Considerada mais fácil de aprendizado, pois necessita de menos código para especificar projeto

Níveis de Especificação High level RTL Gate level Switch level

module simple; reg [0:7] A, B; reg C; initial begin: stop_at #20; $stop; end initial begin: Init A = 0; $display("Time A B C"); $monitor(" %0d %b %b %b", $time, A, B, C); end always begin: main_process #1 A = A + 1; #1 B[0:3] = ~A[4:7]; #1 C = &A[6:7]; end endmodule

module simple; reg [0:7] A, B; reg C; initial begin: stop_at #20; $stop; end initial begin: Init A = 0; $display("Time A B C"); $monitor(" %0d %b %b %b", $time, A, B, C); end always begin: main_process #1 A = A + 1; #1 B[0:3] = ~A[4:7]; #1 C = &A[6:7]; end endmodule … 20 $stop

module simple; reg [0:7] A, B; reg C; initial begin: stop_at #20; $stop; end initial begin: Init A = 0; $display("Time A B C"); $monitor(" %0d %b %b %b", $time, A, B, C); end always begin: main_process #1 A = A + 1; #1 B[0:3] = ~A[4:7]; #1 C = &A[6:7]; end endmodule … 20 $stop A=0 $display $monitor

module simple; reg [0:7] A, B; reg C; initial begin: stop_at #20; $stop; end initial begin: Init A = 0; $display("Time A B C"); $monitor(" %0d %b %b %b", $time, A, B, C); end always begin: main_process #1 A = A + 1; #1 B[0:3] = ~A[4:7]; #1 C = &A[6:7]; end endmodule … 20 $stop A=A+1 $monitor

module simple; reg [0:7] A, B; reg C; initial begin: stop_at #20; $stop; end initial begin: Init A = 0; $display("Time A B C"); $monitor(" %0d %b %b %b", $time, A, B, C); end always begin: main_process #1 A = A + 1; #1 B[0:3] = ~A[4:7]; #1 C = &A[6:7]; end endmodule … 20 $stop B[0:3] = … $monitor

module simple; reg [0:7] A, B; reg C; initial begin: stop_at #20; $stop; end initial begin: Init A = 0; $display("Time A B C"); $monitor(" %0d %b %b %b", $time, A, B, C); end always begin: main_process #1 A = A + 1; #1 B[0:3] = ~A[4:7]; #1 C = &A[6:7]; end endmodule … 20 $stop C = &A[6:7] $monitor

module simple; reg [0:7] A, B; reg C; initial begin: stop_at #20; $stop; end initial begin: Init A = 0; $display("Time A B C"); $monitor(" %0d %b %b %b", $time, A, B, C); end always begin: main_process #1 A = A + 1; #1 B[0:3] = ~A[4:7]; #1 C = &A[6:7]; end endmodule … 20 $stop A=A+1 … $monitor

module simple; reg [0:7] A, B; reg C; initial begin: stop_at #20; $stop; end initial begin: Init A = 0; $display("Time A B C"); $monitor(" %0d %b %b %b", $time, A, B, C); end always begin: main_process #1 A = A + 1; #1 B[0:3] = ~A[4:7]; #1 C = &A[6:7]; end endmodule … 20 $stop B[0:3] = … … $monitor

module simple; reg [0:7] A, B; reg C; initial begin: stop_at #20; $stop; end initial begin: Init A = 0; $display("Time A B C"); $monitor(" %0d %b %b %b", $time, A, B, C); end always begin: main_process #1 A = A + 1; #1 B[0:3] = ~A[4:7]; #1 C = &A[6:7]; end endmodule … … 20 $stop C = &A[6:7] $monitor

module simple; reg [0:7] A, B; reg C; initial begin: stop_at #20; $stop; end initial begin: Init A = 0; $display("Time A B C"); $monitor(" %0d %b %b %b", $time, A, B, C); end always begin: main_process #1 A = A + 1; #1 B[0:3] = ~A[4:7]; #1 C = &A[6:7]; end endmodule … 20 $stop

Resultado do Primeiro Exemplo Time A B C xxxxxxxx x xxxxxxxx x xxxx x xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx 0 Stop at simulation time 20

Números e Comentários 549 // decimal number 'h 8FF // hex number 'o765 // octal number 4'b11 // 4-bit binary number 'b10x // 3-bit binary number with least /* significant bit unknown */ 5'd3 // 5-bit decimal number -4'b11 // 4-bit two's complement of 0011

Descrição em Verilog HDL module ( ); endmodule inputs outputs inouts

Descrição em Verilog HDL module ( ); endmodule regs + wires memories functions + tasks

initial + always assinalamentos contínuos instâncias de módulos Descrição em Verilog HDL module ( ); endmodule

Exemplos module NAND(in1, in2, out); input in1, in2; output out; // continuous assign statement assign out = ~(in1 & in2); endmodule

Exemplos module AND(in1, in2, out); // Structural model of AND gate from two NANDS input in1, in2; output out; wire w1; // two instantiations of the module NAND NAND NAND1(in1, in2, w1); NAND NAND2(w1, w1, out); endmodule

Exemplos module test_AND; reg a, b; wire out1, out2; initial begin // Test data a = 0; b = 0; #1 a = 1; #1 b = 1; #1 a = 0; end initial begin $monitor("Time=%0d a=%b b=%b out1=%b out2=%b", $time, a, b, out1, out2); end AND gate1(a, b, out2); NAND gate2(a, b, out1); endmodule

Referências e Concatenações initial begin: int1 A = 8'b ; B = {A[0:3] | A[4:7], 4'b0000}; end C = {2{4'b1011}}; //C = 8'b C = {{4{A[4]}}, A[4:7]}; // first 4 bits are sign extended

Memórias reg [31:0] Mem [0:1023]; A = Mem[0]; B = A[3:1]; Memória de 1024 posições de 32 bits

Operações Operações similares a C ~ Bitwise negation & Bitwise AND | Bitwise OR ^ Bitwise XOR ~& Bitwise NAND ~| Bitwise NOR ~^ or ^~ Equivalence Bitwise NOT XOR

Operações Unárias & AND | OR reduction ^ XOR reduction ~& NAND reduction ~| NOR reduction ~^ XNOR reduction

Operações

Fluxo de Controle if (A == 4) begin B = 2; end else begin B = 4; end case(address) 0 : $display ("It is 11:40PM"); 1 : $display ("I am feeling sleepy"); 2 : $display ("Let me skip this tutorial"); default : $display ("Need to complete"); endcase

Fluxo de Controle for(i = 0; i < 10; i = i + 1) begin $display("i= %0d", i); end i = 0; while(i < 10) begin $display("i= %0d", i); i = i + 1; end repeat (5) begin $display("i= %0d", i); i = i + 1; end

Controle de Tempo Delay  #10 a = 3; Ocorrência de eventos (posedge clock2) A = B&C; (A or B or C) D = A + B + C;

Projeto RTL Register Transfer Level Componentes básicos  Blocos lógicos combinacionais  Unidades funcionais  MUXes  Memórias  Registradores

Projeto RTL Blocos Lógicos Combinacionais or b or c) begin case (a) 2’b00: d = b + c; 2’b01: d = b – c; 2’b10: d = b * c; 2’b11: d = b / c; endcase end d + b c - b c * c b c b /

Projeto RTL Registradores (posedge clk) d = a; DQ clk da

Projeto RTL Registradores (posedge clk) begin case (a) 2’b00: d = b + c; 2’b01: d = b – c; 2’b10: d = b * c; 2’b11: d = 0; endcase end b c - b c * c b 0 DQ clk d

Projeto RTL Memória reg [15:0] R [0:7]; AD[3:0] DI[15:0] WR DO[15:0]

module uRISC; reg [15:0] PC; reg IF, ID, EX, WB, CLK; (posedge CLK) {IF,ID,EX,WB} = {WB,IF,ID,EX}; (posedge CLK) PC = (IF)?PC+1:PC; initial begin IF = 1; ID = 0; EX = 0; WB = 0; PC = 0; CLK = 0; $display("%10d: CLK=%d IF=%d ID=%d...", $time,CLK,IF,ID,EX,WB,PC); forever begin #10 CLK = 1; # 0 $display("%10d: CLK=%d IF=%d ID=%d...", $time,CLK,IF,ID,EX,WB,PC); #10 CLK = 0; # 0$display("%10d: CLK=%d IF=%d ID=%d...", $time,CLK,IF,ID,EX,WB,PC); if ($time > 100) $finish; end endmodule

Referências