Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa...

27
DSC/CEEI/UFCG DSC/CEEI/UFCG Universidade Federal de Campina Grande Universidade Federal de Campina Grande Departamento de Sistemas e Computa Departamento de Sistemas e Computa ç ç ão ão Curso de Bacharelado em Ciência da Computa Curso de Bacharelado em Ciência da Computa ç ç ão ão Linguagem de Linguagem de Descri Descri ç ç ão de Hardware ão de Hardware (Parte I) (Parte I) Prof Prof a a Joseana Joseana Macêdo Macêdo Fechine Fechine R R é é gis de Ara gis de Ara ú ú jo jo [email protected] [email protected] Carga Horária: 60 horas Organiza Organiza ç ç ão e Arquitetura ão e Arquitetura de Computadores I de Computadores I

Transcript of Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa...

Page 1: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG

Universidade Federal de Campina GrandeUniversidade Federal de Campina Grande

Departamento de Sistemas e ComputaDepartamento de Sistemas e Computaççãoão

Curso de Bacharelado em Ciência da ComputaCurso de Bacharelado em Ciência da Computaççãoão

Linguagem de Linguagem de

DescriDescriçção de Hardware ão de Hardware

(Parte I)(Parte I)

ProfProfaa JoseanaJoseana MacêdoMacêdo FechineFechine RRéégis de Aragis de Araúújojo

[email protected]@computacao.ufcg.edu.br

Carga Horária: 60 horas

OrganizaOrganizaçção e Arquitetura ão e Arquitetura de Computadores Ide Computadores I

Page 2: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG2

Tópicos

� Hardware Description Language (HDL)

� Conceitos Básicos

Page 3: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG3

� Para que 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

Hardware Description Language(HDL)

Page 4: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG4

� A unidade básica – o módulo

� Módulo (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

Hardware Description Language(HDL)

Page 5: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG5

� 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 é ignoradotermina com a linha abaixo

*/� Números

decimal, hexadecimal, binario6'd33, 8'hA6, 4'b1101unsized decimal formsize base forminclude underlines, +,-

Hardware Description Language(HDL)

Page 6: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG6

� Cadeias de caracteres- "Delimite usando aspas numa mesma linha"- limitados a 1024 caracteres

� Identifier

A ... Z

a ... z

0 ... 9

Underscore

� Primeiro caractere de um identifier não pode ser um dígito

� Verilog diferencia letras maiúsculas de minúsculas.

Hardware Description Language(HDL)

Page 7: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG

Tipos de dados

� Palavra: Um vetor de bitslogic [ msb : lsb ] nome;

� Exemploslogic fio; // um fio (1 bit)

logic [3:0] cabo; // Um cabo de 4 fios

� Um vetor de palavraslogic [msb:lsb] memory1 [lower:upper];

� Exemplo// um vetor de 64 palavras de 4 bits:

logic [3:0] mem1 [0:63];

// um vetor de 5 palavras de 1 bit:

logic mem2 [4:0];7

Page 8: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG

Tipos de dados - signed

� Uma vetor de bits definido com logic representa por default um número sem sinal.

� Representação com sinal em complemento de 2:logic signed [ msb : lsb ] nome;

� Exemplologic signed [7:0] saldo; // de -128 a 127

8

Page 9: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG

Tipos de dados compostos

� Definição de um novo tipo de dado

typedef struct { logic …; logic …; } nome_do_tipo;

� Exemplo de declaração do novo tipo

typedef struct { logic a; logic [3:0] b; } abba_t;

� Exemplo de declaração de barramento usando o novo tipo

abba_t mamamia;

9

Page 10: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG

Lógica Combinacional

� A atribuição combinacional tem caráter permanente

Formato: always_comb net <= expression;

Exemplo: always_comb sum <= a ^ b;

� Todas as atribuições combinacionais valem (executam) simultaneamente.

� A ordem das atribuições dentro do arquivo Verilognão tem efeito.

10

Page 11: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG11

� Definição geral

module module module module module_name ( port_list );

variable declaration;

description of behavior

endmoduleendmoduleendmoduleendmodule

� Exemplo

module module module module HalfAdder (

input logic A, B,

output logic Sum, Carry);

always_comb Sum <= A ^ B;

//^ denotes XOR

always_comb Carry <= A & B;

// & denotes AND

endmoduleendmoduleendmoduleendmodule

Hardware Description Language(HDL)

Page 12: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG

Hardware Description Language(HDL)

� Várias atribuições podem ser acomodados num bloco begin … end como em Pascal (equivalente a { … } em C e Java).

12

Page 13: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG

Hardware Description Language(HDL)

� Todas as operadores de C e Java, mais alguns especiais (ver livro).

Concatenação { }

Exemplo: { a, 4'b1010 }

Repetição: { vezes { expressão } }

Exemplo: { 4{a} }

13

Page 14: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG14

� Existem duas:� initial: Executa uma única vez no início da simulação,

NÃO sintetizável

� always_comb: Executa repetidamente, sintetizável

� Exemplo:

…initial beginSum <= 0;Carry <= 0;

end…

…always_comb beginSum <= A ^ B;Carry <= A & B;

end…

HDL - Construções Procedurais

Page 15: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG15

� Estrutural: representa circuitos lógicos usandoprimitivas da linguagem Verilog

� Exemplo:not n1(sel_n, sel);and a1(sel_b, b, sel_n);and a2(sel_a, a, sel);or o1(out, sel_b, sel_a);

sel

b

aout

sel_n

sel_b

sel_a

n1a1

a2

o1

HDL - Estilos de Descrição

Page 16: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG16

� Execução: Concorrente

� Formato (portas lógicas primitivas):and G2(Carry, A, B);

� Primeiro parâmetro (Carry) – Output

� Outros parâmetros (A, B) - Inputs

HDL - Modelo estrutural

Page 17: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG17

� Fluxo de dados: Representa sinais de saída emfunção de sinais de entrada

� Exemplo:always_comb out <= (sel & a) | (~sel & b);

sel

b

a

out

sel_n

sel_b

sel_a

HDL - Estilos de Descrição

Page 18: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG18

� Usa atribuição permanente para sinais� Format: always_comb [ delay ] net <= expression;

� Exemplo: always_comb sum <= a ^ b;

� delaydelaydelaydelay: Atraso de propagação da expressão para o sinal.

� Todas as atribuições permanentes executamsimultaneamente.

� A ordem das atribuições dentro do arquivoSystemVerilog não tem efeito sobre a execução.

HDL - Modelo de Fluxo de Dados

Page 19: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG19

� Atraso� Exemplo: always_comb #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 )

HDL - Modelo de Fluxo de Dados

Page 20: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG20

� Exemplo:

`timescale 1ns/10ps

modulemodulemodulemodule HalfAdder (input logic A, B,

output logic Sum, Carry);

always_comb #3 Sum <= A ^ B;

always_comb #6 Carry <= A & B;

endmoduleendmoduleendmoduleendmodule

HDL - Modelo de Fluxo de Dados

Page 21: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG21

� Comportamental: representa o comportamento naforma de um algoritmo.

� Exemplo:

always_comb

if (sel == 0)out <= b;

else out <= a; a

b

sel

outBlack Box

2x1 MUX

HDL - Estilos de Descrição

Page 22: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG22

� Exemplo:

module module module module mux_2x1(input logic a, b, sel,output logic out);

always_combif (sel == 1) out <= a;else out <= b;

endmoduleendmoduleendmoduleendmodule

HDL - Modelo comportamental

Page 23: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG23

� Format:if (condition)

procedural_statementelse if (condition)

procedural_statementelse

procedural_statement

� Exemplo:if (reset)

Q <= 0;

elseQ <= D;

HDL - Instruções Condicionais

Page 24: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG24

Instrução Case

� Exemplo:case (X)

2’b00: Y <= A + B;2’b01: Y <= A – B;

2’b10: Y <= A / B;endcase

HDL - Instruções Condicionais

Page 25: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG25

� `define – (similar ao #define em C) usado paradefinir parâmetro global

� Exemplo: `define BUS_WIDTH 16logic [ `BUS_WIDTH - 1 : 0 ] System_Bus;

� `include – usado para incluir outroarquivo

� Exemplo`include “./fulladder.sv”

HDL - Diretivas de Compilação

Page 26: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG26

� RTL (Register Transfer Level): descreve o queacontece a cada transição ativa do sinal de relógio

� Exemplo:

always_ff @(posedge clock) begin

pisca <= ~pisca;end

HDL - Estilos de Descrição

Page 27: Organiza ção e Arquitetura de Computadores Ijoseana/OAC_NA06Adic01.pdf · Estrutural: representa circuitos lógicos usando primitivas da linguagem Verilog Exemplo: not n1(sel_n,

DSC/CEEI/UFCGDSC/CEEI/UFCG27

� Um vetor de registradores

logic [ msb : lsb ] memory1 [ upper : lower ];

� Exemplos:

logic [ 3 : 0 ] mem [ 63 : 0 ];// Um array de 64 registradores de 4 bits

logic mem [ 4 : 0 ];// Um array de 5 registradores de 1 bit.

HDL - Memórias