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



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

Circuitos sequenciais elementares

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

Circuitos sequenciais elementares

VERILOG. Alex Vidigal Bastos

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

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

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

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

Lógica Reconfigurável

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

Organização e Arquitetura de Computadores II

Circuitos combinatórios. (Revisão)

Tutorial Verilog 1ª Edição

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

Organização e Arquitetura de Computadores I

Mestrado em Engenharia Electrotécnica e de Computadores

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

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

NOTAS DE AULA NE7720 SISTEMAS DIGITAIS - II AULA

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

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

Modelação de circuitos síncronos

Sistemas Digitais Unidade Lógica e Aritmética - ULA

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

Projecto e Controlo em Lógica Digital

CODIFICADORES / DECODIFICADORES

Treinamento em Projeto de Sistemas Digitais

Lógica Reconfigurável

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

Circuitos Seqüenciais

Elementos de programação em C

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

CURSO BÁSICO DE VERILOG

Descrição e Projeto de Circuitos Utilizando VHDL

Organização e Arquitetura de Computadores I

Tutorial :: Introdução ao VHDL em ambiente Design Works

Gerenciamento de memória

CAPÍTULO 1 REVISÃO DE LÓGICA COMBINACIONAL

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

Sistemas de Numeração (Aula Extra)

Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Engenharia Disciplina de Lógica Computacional Aplicada. Prof. Dr.

Registradores. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva

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

Circuitos Seqüenciais

FPGA & VHDL. Tutorial

Treinamento em Projeto de Sistemas Digitais

Linguagens de descrição de hardware. Modelação de um circuito (digital)

Sistemas de Numeração. Sistemas de Numeração. Sistemas de Numeração. RUIDO em Sistemas Computacionais. Arquiteturas de Computadores

A declaração de uma variável vel define o seu tipo. O tipo do dado define como ele será: Armazenado na memória. Manipulado pela ULA.

Treinamento em Projeto de Sistemas Digitais

Aula 2 Semântica de VHDL

3. Computadores Industriais

Programação: Estruturas de seleção

CEFET-RS Curso de Eletrônica

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

Dispositivos Lógicos Programáveis

Aula 6: Introdução ao System Generator

Linguagens de descrição de hardware

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

Introdução à Linguagem VHDL

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

Aprendendo a utilizar a Ferramenta Modelsim. Professor: Lucas Cambuim (lfsc)

CMP238 Projeto e Teste de Sistemas VLSI

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

Exercícios de Laboratório 3

Licenciatura em Engenharia Informática e Computação. Arquitectura de Computadores Exame Modelo

Sistemas Digitais. Módulo 15 Prof. Celso PLD - DISPOSITIVOS LÓGICOS PROGRAMÁVEIS

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

PIC - PROGRAMAÇÃO LINGUAGEM C. AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR

1 Fundamentos da Computação Prof. Bruno Guilhen

Organização e Arquitetura de Computadores I

MINISTÉRIO DA EDUCAÇÃO CEFET/SC - Unidade de São José. Curso Técnico em Telecomunicações CONTADORES. Marcos Moecke

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

Descreva em VHDL, simule no simulador logico e sintetize usando uma ferramenta de CAD para FPGA :

Síntese de Sistemas Digitais

SystemVerilog para descrição RTL

Notas de aula #1 SISTEMAS NUMÉRICOS

LINEAR EQUIPAMENTOS RUA SÃO JORGE, 267/269 - TELEFONE: (11) SÃO CAETANO DO SUL - SP - CEP:

o o o o Visão Geral da Disciplina Sistemas de Numeração Exercícios Resumo da Aula

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

Projecto de Sistemas Digitais

Sistemas Digitais. PALs Sequenciais Parâmetros Temporais em PALs Sequenciais ABEL Registos Contadores Registos de Deslocamento ( Shift Registers )

Álgebra de Boole. Sistema de Numeração e Códigos. Prof. Ubiratan Ramos

Xilinx ISE. O projecto

Eletrônica Digital para Instrumentação

LINGUAGEM C. Estrutura básica de um programa

CIRCUITOS COMBINACIONAIS

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

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

Circuitos Digitais 144L

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

O COMPUTADOR. Introdução à Computação

AULA 5 Aplicação com divisor de freqüência com o CI Livro Texto pág.197 a 200.

Aula 6. Sistemas de Numeração. SEL Sistemas Digitais. Prof. Dr. Marcelo Andrade da Costa Vieira

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

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

Circuitos Digitais Álgebra de Boole

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

Transcrição:

Verilog HDL

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 aprizado, pois necessita de menos código para especificar projeto

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

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

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

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

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

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

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

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

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

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

Resultado do Primeiro Exemplo Time A B C 0 00000000 xxxxxxxx x 1 00000001 xxxxxxxx x 2 00000001 1110xxxx x 3 00000001 1110xxxx 0 4 00000010 1110xxxx 0 5 00000010 1101xxxx 0 7 00000011 1101xxxx 0 8 00000011 1100xxxx 0 9 00000011 1100xxxx 1 10 00000100 1100xxxx 1 11 00000100 1011xxxx 1 12 00000100 1011xxxx 0 13 00000101 1011xxxx 0 14 00000101 1010xxxx 0 16 00000110 1010xxxx 0 17 00000110 1001xxxx 0 19 00000111 1001xxxx 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 0011 3'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 <module name> (<port list>); <declares> <module items> module inputs outputs inouts

Descrição em Verilog HDL module <module name> (<port list>); <declares> <module items> module regs + wires memories functions + tasks

Descrição em Verilog HDL module <module name> (<port list>); <declares> <module items> module initial + always assinalamentos contínuos (assign) instâncias de módulos

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

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); module

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; initial begin $monitor("time=%0d a=%b b=%b out1=%b out2=%b $time, a, b, out1, out2); AND gate1(a, b, out2); NAND gate2(a, b, out1); module

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

Memórias reg [31:0] Mem [0:1023]; Mem[0] A = Mem[0]; B = A[3:1];

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

Fluxo de Controle if (A == 4) begin B = 2; else begin B = 4; case (sig) 1'bz: $display("signal is floating"); 1'bx: $display("signal is unknown"); default: $display("signal is %b", sig); case

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

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;

Referencias Cver http://www.pragmatic-c.com/gpl-cver/ Tutorial Verilog http://www.asic-world.com/verilog/veritut.html Informacoes Gerais http://en.wikipedia.org/wiki/verilog

Projeto RTL Blocos Lógicos Combinacionais always @(a 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; case b c b c b c b c + * / 00 01 10 11 d

Projeto RTL Registradores always @ (posedge clk) a D Q d d = a; clk

Projeto RTL Registradores always @ (posedge clk) begin case (a) 2 b00: d = b + c; 2 b01: d = b c; 2 b10: d = b * c; 2 b11: d = 0; case b c b c b c 0 + * 00 01 10 11 clk D Q d

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

module urisc; reg [15:0] PC; reg IF, ID, EX, WB, CLK; always @ (posedge CLK) {IF,ID,EX,WB} = {WB,IF,ID,EX}; always @ (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; module