• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
9
0
0

Texto

(1)

FEUP/DEEC, Projecto de Sistemas Digitais, 2005/2006

José Carlos Alves 19

Linguagens de descrição de hardware

• Modelação de um circuito (digital)

– descrições comportamentais permitem nível elevado de abstracção

– metodologia top-down: ferramentas de síntese automática

– representação textual: portabilidade, edição e documentação

– a favor do esquemático: “uma figura diz mais do que mil palavras”

• um esquema captura melhor a ideia estrutural

• ferramentas gráficas front-end produzem descrições em HDLs

– editores de esquemático: netlist em HDL (estrutural, gate-level ou RTL)

– editores de diagramas de estados: descrições sintetizáveis

– duas perspectivas na construção de um modelo

• descrever o seu funcionamento apenas para simulação

• construir uma descrição sintetizável (

$monitor(…)

não é sintetizável!)

– um modelo sintetizável deve descrever “bem” o seu funcionamento

– subsets das linguagens e regras de modelação dependem das ferramentas

HDLs

- exemplos

– VHDL - VHSIC Hardware Description Language (IEEE 1076 ‘93)

• desenvolvida para simulação, usada para síntese, fortemente tipada

– Verilog (IEEE 1364 ‘95)

• mais simples do que VHDL, poucos tipos de dados, próxima de C

– SystemC

• Extensão da linguagem C para descrever hardware

– HardwareC (univ. Berkeley)

• derivada da linguagem C, orientada para a representação de hardware

– ABEL - Advanced Boolean Equation Language (TM

Data I/O)

• programação de PLDs, equações lógicas, descrição de FSMs

– Silage (IMEC)

• aplicações de DSP, pouco controlo, data-flow

– EDIF - Electronic Data Interchange Format

(2)

FEUP/DEEC, Projecto de Sistemas Digitais, 2005/2006

José Carlos Alves 21

Verilog vs. VHDL

- história

•VHDL

– ‘80: por necessidade de normalização, documentação e portabilidade, e DOD funda projecto para criar linguagem de “programação” para descrever hardware – ‘83: início do desenvolvimento do VHDL (IBM, Texas, Intermetrics)

– ‘87: o DOD impõe que todos os SDs fossem descritos em VHDL; standard IEEE 1076; os sistemas electrónicos do F-22 foram um dos primeiros projectos em VHDL – ‘93: VHDL é revisto e adoptado como o standard IEEE 1076 ’93

– ‘96: adopção generalizada por ferramentas EDA; package para ferramentas de síntese (IEEE 1076.3); modelação de bibliotecas para ASIC e FPGA (IEEE 1076.4)

•Verilog

– ‘81: Gateway Design Automation, Philip Moorby cria GenRad HDL e o simulador HILO – ‘83: Gateway lançou a linguagem Verilog HDL e um simulador de Verilog

– ‘85: linguagem e simulador são enriquecidos (Verilog-XL)

– ‘87: Synopsys adopta Verilog como formato de entrada para ferramentas de síntese – ‘89/’90: Cadence compra Gateway e separa o simulador da linguagem; a linguagem é

libertada para o domínio público; é criado o OVI (Open Verilog International) – ‘93: neste ano, de todos os circuitos submetidos a fundições de silício, 85% foram

desenvolvidos e submetidos em Verilog.

– ‘95: Verilog é revisto e adoptado como o standard IEEE 1364

Verilog e VHDL - comparação

• capacidade de modelação

– semelhante para modelos estruturais

– VHDL oferece melhor suporte para modelos abstractos e modelos de atrasos

– Verilog tem melhores construções para modelar ao nível lógico e primitivas

de bibliotecas de ASICs e FPGAs

• tipos de dados

– VHDL suporta tipos de dados abstractos criados pelo utilizador

– em Verilog os tipos são muito simples e mais próximos do hw (wire e reg)

• aprendizagem

– VHDL é fortemente tipada, menos intuitiva, mais verbosa (baseada em

ADA)

– Verilog é mais simples e menos verbosa (baseada em C)

• parametrização

– VHDL tem construções para parametrizar número de bits, replicar

estruturas e configurar modelos

– Verilog suporta apenas modelos com parâmetros, instanciação com

redefinição de parâmetros

(3)

FEUP/DEEC, Projecto de Sistemas Digitais, 2005/2006

José Carlos Alves 23

VHDL-Verilog

(comportamental)

library IEEE; use IEEE.STD_Logic_1164.all; entity MUX_2_1 is port(S1,A1,B1,S2,A2,B2,S3,A3,B3:in std_logic; Y1,Y2,Y3:out std_logic);

end entity MUX_2_1;

architecture COND_DATA_FLOW of MUX_2_1 is begin Y1 <= A1 when S1=‘1’ else B1; TWO_2_1_MUXES: process(S2,A2,B2,S3,A3,B3) begin Y2<=B2; if (S2=‘1’) then Y2<=A2; endif; if (S3=‘1’) then Y3<=A3; else Y3<=B3; endif;

end process TWO_2_1_MUXES end architecture COND_DATA_FLOW;

module MUX_2_1(S1,A1,B1,Y1, S2,A2,B2,Y2, S3,A3,B3,Y3); input S1,A1,B1,S2,A2,B2,S3,A3,B3; output Y1,Y2,Y3; reg Y2,Y3; assign Y1=S1?A1:B1; always @(S2 or A2 or B2 or S3 or A3 or B3) begin Y2=B2; if (S2) Y2=A2; if (S3) Y3=A3; else Y3=B3; end endmodule

VHDL

Verilog

VHDL-Verilog

(estrutural)

library IEEE; use IEEE.STD_Logic_1164.all; entity HALF_ADDER is port(a,b:in std_logic; sum,carry:out std_logic); end entity HALF_ADDER;

architecture STRUCT of HALF_ADDER is

component xor2

port(a,b:in std_logic; c:out std_logic); end component;

component and2

port(a,b:in std_logic; c:out std_logic); end component;

begin

X1: xor2 port map(a=>a,b=>b,c=>sum); A1: and2 port map(a=>a,b=>b,c=>carry); end STRUCT; module HALF_ADDER(a,b,sum,carry); input a,b; output sum,carry; xor X1(sum,a,b); and A1(carry,a,b); endmodule

VHDL

Verilog

(4)

FEUP/DEEC, Projecto de Sistemas Digitais, 2005/2006

José Carlos Alves 25

Modelação em HDL

• Modelo sintetizável vs. modelo não sintetizável

– ferramentas de síntese automática inferem uma estrutura

• o modelo (comportamental ou estrutural) vai ser hardware

• regras, restrições e recomendações das ferramentas de síntese

– como é interpretado e traduzida a descrição em HDL

– simulação e implementação devem concordar

– construções específicas da tecnologia de implementação

– modelos não sintetizáveis

• não são traduzidos para hardware

• definem estímulos para simulação; monitorização de sinais

• modelam o comportamento de outros circuitos só para simulação

– circuito de relógio

– memórias ou CPUs

– circuitos de interface (por exemplo conversores A/D ou D/A)

Modelação em HDLs

recomendações gerais

• Antes de iniciar a construção do modelo

– definir a arquitectura e estruturação do projecto (particionamento)

– ferramentas de síntese não processam bem circuitos muito grandes!

• Problemas de optimização são NP-completos

• Escrever o código de modo a reflectir a arquitectura

– estruturado em módulos e funções, ter em mente a reusabilidade

– favorecer a legibilidade: nomes, comentários, parêntesis, parâmetros

• Garantir a precisão da simulação

– deve traduzir fielmente o comportamento do hardware gerado

– modelar correctamente o comportamento das partes não sintetizáveis

(5)

FEUP/DEEC, Projecto de Sistemas Digitais, 2005/2006

José Carlos Alves 27

Verilog HDL

(Hardware Description Language)

• Linguagem de descrição de hardware (digital)

– Suporta modelação em diferentes níveis de abstracção

– criada para modelação e simulação de circuitos digitais

– actualmente usada como fonte para ferramentas de síntese

– modelos estruturais e modelos comportamentais

– não é uma linguagem de programação!

• Unidade básica de um modelo em Verilog:

– module: um sub-circuito definido por:

• interface (entradas e saídas)

• implementação (modelo do circuito digital)

preset clear q qbar

q

qbar

preset

clear

Verilog - introdução

• Modelo estrutural de uma latch SR com portas NAND:

module ffnand(preset,clear,q,qbar);

input preset, clear;

output q, qbar;

nand #1 nand1(q, qbar, preset),

nand2(qbar, q, clear);

endmodule

interface

implementação

q

qbar

preset

clear

instância

atraso

• Circuito:

saída

entradas

primitiva

(6)

FEUP/DEEC, Projecto de Sistemas Digitais, 2005/2006

José Carlos Alves 29

Verilog - introdução

• Simulação do módulo ffnand

`timescale 1ns/100ps

module top_ffnand;

wire q, qb;

reg

pre, clr;

ffnand ffnand1(pre,clr,q,qb);

initial

begin

$monitor($time,

“ preset=%b, clear=%b, q=%b, qbar=%b”,

pre, clr, q, qb);

#10 pre=0; clr=1;

#10 pre=1;

#10 clr=0;

#10 clr=1;

#10 $finish;

end

endmodule

fios

estímulos

de simulação

monitor

de sinais

instância

registos

espera 10ns

escala temporal

Verilog - introdução

• Modelo completo para simulação (testbench)

– reunião dos módulos ffnand e top_ffnand

• Resultados da simulação

– produzidos pela função $monitor(...)(system task)

• sempre que algum dos sinais declarados muda de estado

– análise das formas de onda de sinais relevantes

0 preset=x clear=x q=x qbar=x

10 preset=0 clear=1 q=x qbar=x

11 preset=0 clear=1 q=1 qbar=x

12 preset=0 clear=1 q=1 qbar=0

20 preset=1 clear=1 q=1 qbar=0

30 preset=1 clear=0 q=1 qbar=0

31 preset=1 clear=0 q=1 qbar=1

32 preset=1 clear=0 q=0 qbar=1

40 preset=1 clear=1 q=0 qbar=1

valor lógico

desconhecido

(7)

FEUP/DEEC, Projecto de Sistemas Digitais, 2005/2006

José Carlos Alves 31

Verilog - introdução

• Um contador de 4 bits (counter)

– estruturação em 3 módulos: c16, Dff e clockgen

– clockgen

produz o sinal de relógio

– contador c16 usa instâncias do módulo Dff (flip-flops tipo D)

– hierarquia do modelo:

clockgen

c16

Dff

Dff

Dff

Dff

counter

Verilog - introdução

• Modelo do contador c16

module c16(value, clock, fifteen, ten); input clock;

output [3:0] value; output fifteen, ten;

Dff D1(value[0], clock, ~value[0]),

D2(value[1], clock, value[1] ^ value[0]), D3(value[2], clock, value[2] ^ &value[1:0]), D4(value[3], clock, value[3] ^ &value[2:0]); assign fifteen = &value;

assign ten = value[3] & ~value[2] & value[1] & ~value[0]; endmodule

vector de bits

operadores

saída ten vale 1 quando value = 1010

(8)

FEUP/DEEC, Projecto de Sistemas Digitais, 2005/2006

José Carlos Alves 33

Verilog - introdução

• Modelo (comportamental) do Dff

module Dff(q, clock, d);

input clock, d;

output q;

reg

q;

initial

q = 0;

always

@ (negedge clock)

#10 q = d;

endmodule

q é reg porque “segura” um valor

no início da simulação (t=0)

sempre que clock

Verilog - introdução

• Gerador de relógio (clockgen)

module clockgen(clock);

output clock;

reg

clock;

initial

#5 clock = 1;

always

#50 clock = ~clock;

endmodule

para sempre...

sinal clock gerado:

t=05 50 50

unidades de tempo reais: ‘timescale 1ns/100ps

unidade de atraso

arredondamento

dos cálculos

(9)

FEUP/DEEC, Projecto de Sistemas Digitais, 2005/2006

José Carlos Alves 35

Verilog - introdução

• O circuito completo (módulo counter)

module counter;

wire [3:0] count;

wire clock, ten, fifteen;

c16 contador( count, clock, fifteen, ten);

clockgen clock( clock );

initial

$monitor($time, “ Clk=%b, Count=%d, is_10=%b, is_15=%b”,

clock, count, ten, fifteen);

Referências

Documentos relacionados

A participação foi observada durante todas as fases do roadmap (Alinhamento, Prova de Conceito, Piloto e Expansão), promovendo a utilização do sistema implementado e a

As reacções hemolíticas agudas (RHA) são as reacções transfusionais mais graves e ocorrem em cães DEA (dog erythrocyte antigen) 1.1 ou 1.2 negativos aos quais é administrada

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Proposta de indicadores de sustentabilidade para formação do Subíndice Ambiental (SA) preenchida com dados referentes ao parque aquícola de Breu Branco III no reservatório

Mestrado em: Nutrição Humana ou Nutrição Clínica ou Saúde Coletiva ou Ciências da Saúde ou Ciências ou Saúde ou Alimentos e Nutrição e Desenvolvimento na

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças

Come¸cando pela abordagem associada ao m´etodo de Gumbel, admitamos que dispomos de uma amostra constitu´ıda por valores m´aximos de um determinado fen´omeno, recolhidos ao longo

No Quadros 3 e 4 são apresentados os valores dos indicadores de produtividade da mão-de-obra (RUP diária, RUP cumulativa, RUP potencial) e a perda de produtividade da