Sei sulla pagina 1di 8

Sistemas Digitais Prof.

Antonio Ramirez Hidalgo

INTRODUO AOS TPICOS BSICOS


DO VERILOG E MODELAMENTO
HIERRQUICO
OBJETIVOS
Ter uma idia sobre a evoluo do CAD, aparecimento e importncia das HDLs, o fluxo de projeto
tpico, popularidade do Verilog HDL e tendncias.
Entender as metodologias de projeto para sistemas digitais.
Descrever os quatro nveis de abstrao - nvel de chave, nvel de portas, fluxo de dados e
comportamental.
EVOLUO DO PROJETO DIGITAL COM AUXLIO DO COMPUTADOR
Os primeiros circuitos integrados, CI, foram os chamados SSI (Small Scale Integration) com
umas poucas portas. Com o avano da tecnologia foram se colocando centenas de portas em um CI
os chamados MSI, com o advento do LSI os projetistas colocaram milhares de portas em um nico
CI. Neste ponto o processo de projeto resultava muito complicado e os projetistas sentiram a
necessidade de automatizar estes processos.
As tcnicas CAD (Computer Aided Design) comearam a evoluir de tal forma que quando se
estabeleceu a tecnologia VLSI os projetistas puderam projetar CIs com mais de 100000 transistores,
devido complexidade destes circuitos no era possvel testar estes em protoboard.
O CAD resultou critico para verificao e projeto de circuitos digitais em VLSI. Depois
apareceram os simuladores lgicos para verificar a funcionalidade destes circuitos.

APARECIMENTO DAS HDLS


No campo do projeto digital, os projetistas sentiram a necessidade por uma linguagem padro
para descrever os circuitos digitais. Assim, as Linguagens de Descrio de Hardware (Hardware
Description Languages - HDLs) vieram a existir.
Linguagens de descrio de hardware tais como Verilog HDL e VHDL resultaram populares.
Verilog aparece em 1983 da empresa Gateway Design Automation, mais tarde foi desenvolvido o
VHDL sob contrato da DARPA.
Os simuladores Verilog e VHDL foram usados para simular grandes circuitos digitais e
ganharam rapidamente a aceitao dos engenheiros.
Graas a estes HDLs os circuitos digitais poderiam ser descritos no nvel de transferncia por
registrador (register transfer level - RTL), assim o projetista tem que especificar como fluem os
dados entre registradores e como o projeto processa os dados.
Os detalhes de portas e interconexes para implementar o circuito foram extrados
automaticamente pelas ferramentas de sntese lgica desde a descrio RTL.
HDLs tem comeado a ser usadas para projeto no nvel de sistema. Uma aproximao comum
projetar cada CI, usando HDL, e ento verificar a funcionalidade do sistema via simulao.

IMPORTNCIA DAS HDLS


As HDLs tem muitas vantagens se comparadas com o tradicional projeto baseado em
esquemtico, poderamos mencionar algumas destas:
Projeto descrito em um nvel abstrato.
Projetista no precisa escolher uma tecnologia de fabricao especifica ferramenta de snteses

1
Sistemas Digitais Prof. Antonio Ramirez Hidalgo

lgica.
Verificao funcional pode ser feita nas primeiras partes do ciclo de projeto.
Projetar com HDLs parecido a um programa de computador comentrios ajudam a debugar
circuitos.
HDLs j so uma realidade para lidar com o incremento da complexidade de circuitos digitais.
A recomendao que nenhum projetista de circuitos digitais pode ignorar o projeto baseado em
HDL.
POPULARIDADE DO VERILOG HDL
O Verilog HDL tem evoludo como uma linguagem de descrio de hardware padro. As
caractersticas so:
Fcil de aprender e usar, parecido com a linguagem C.
Permite vrios nveis de abstrao no mesmo modelo.
Muitas ferramentas de sntese lgica suportam o Verilog.
Todos os vendedores de fabricao fornecem bibliotecas de Verilog.

A Interface de linguagem de programao (Programming Language Interface - PLI) uma


caracterstica poderosa que permite ao usurio escrever cdigo em linguagem C para interagir com
estruturas de dados internas do Verilog.

TENDNCIA EM HDLS
A tendncia mais popular atualmente no projeto em HDL no nvel RTL, devido a que as
ferramentas de sntese lgica podem criar netlist a nvel de portas.
A sntese comportamental est aparecendo e uma vez que esta ferramenta melhore o projetista
ser capaz de projetar diretamente em termos de algoritmos o comportamento do circuito.
As tcnicas de Verificao formal aplicaro tcnicas matemticas formais para verificar a
descrio em Verilog e estabelecer a equivalncia entre RTL e o netlist a nvel de porta.
Para muito altas velocidades e circuitos de tempo crtico parecido com os processadores, o netlist
a nvel de portas fornecido pela ferramenta de sntese lgica no tima. Nestes casos os projetistas
misturam a descrio a nvel de portas dentro da descrio RTL para alcanar timos resultados.
Para essa dificuldade a tendncia que est aparecendo a nvel de sistema uma mistura da
metodologia bottom - up onde os projetistas usam mdulos existentes de Verilog, blocos bsicos
construdos, ou blocos fornecidos pelo vendedor para que rapidamente se faa a simulao do
sistema.
Atualmente se fala bastante do System C para fazer a descrio do hardware. Este bastante
parecido com a linguagem C e parece que ser fortemente utilizado pela academia e a industria.

2
Sistemas Digitais Prof. Antonio Ramirez Hidalgo

FLUXO DE PROJETO TPICO


Um fluxo de projeto tpico para projetar CIs em VLSI mostrado na figura 1.12.

Especificao do Projeto

Descrio Comportamental

Descrio RTL (HDL)

Verificao Funcional e Testes

Snteses Lgica

Netlist Nvel de Porta

Verificao Lgica e Testes

Floor Planning e Place & Route Automtico

Leiaute Fsico

Verificao do Leiaute

Implementao

Figura 1.12. Fluxo de Projeto Tpico

ESTE PGINA SER ELIMINADA DO ASSUNTO DA AULA


3
Sistemas Digitais Prof. Antonio Ramirez Hidalgo

CONCEITOS DE MODELAGEM
HIERRQUICO
Antes de entrar nos detalhes da linguagem Verilog, devemos entender o bsico dos conceitos de
modelagem hierrquico no projeto digital.
O Projetista deve usar uma boa metodologia de projeto para fazer eficiente o projeto baseado em
Verilog. Existem duas metodologias de projeto digital: top-down (figura 1.14) e bottom-up (figura
1.15).

Bloco Nvel Superior

Sub-bloco 1 Sub-bloco 2 Sub-bloco 3 Sub-bloco 4

Clula Clula Clula Clula Clula Clula Clula Clula

Figura 1.14. Metodologia de Projeto Top-down

Bloco Nvel Superior

Sub-bloco 1 Sub-bloco 2 Sub-bloco 3 Sub-bloco 4

Clula Clula Clula Clula Clula Clula Clula Clula

Figura 1.15. Metodologia de Projeto Bottom-up

Tipicamente usada uma combinao bottom-up e top-down. Para ilustrar os conceitos de


modelagem hierrquico, vamos considerar o projeto de contador ondulante (ripple) de 4 bits
disparado na borda negativa.
O contador mostrado na figura 1.16 feito de flip-flops tipo T (T_FF) disparados na borda de
descida. Cada um dos T_FFs podem ser construdos a partir de flip-flops tipo D (D_FF) e
inversores (assumindo que a sada negada do D_FF no est disponvel), como se mostra na figura
1.17.

4
Sistemas Digitais Prof. Antonio Ramirez Hidalgo

Contador q0 q1 q2 q3

Ondulante

q q q q

clock T_FF T_FF T_FF T_FF

tff0 tff1 tff2 tff3

reset

Figura 1.16. Contador ondulante de 4 bits

Reset qn q n+1 q
T_FF

1 1 0
1 0 0
q
0 0 1 d

0 1 0 clock D_FF

re se t

Figura 1.17. Flip-flop tipo T

Assim o contador ondulante construdo de uma forma hierrquica usando os blocos de


construo. O diagrama do projeto hierrquico mostrado na figura 1.18.

Contador Ondulante

T_FF (tff0) T_FF (tff1) T_FF (tff2) T_FF (tff3)

D_FF Inversor D_FF Inversor D_FF Inversor D_FF Inversor

Figura 1.18. Projeto Hierrquico

Na metodologia de projeto top-down, especificamos primeiro a funcionalidade do contador


ondulante, o qual o bloco de nvel superior. Implementamos o contador com T_FFs. Construmos
os T_FFs desde o D_FF e um inversor. Assim quebramos os blocos maiores em pequenos sub-

5
Sistemas Digitais Prof. Antonio Ramirez Hidalgo

blocos de construo, at que decidamos que no se pode quebrar mais blocos.


Na metodologia bottom-up flui em direo oposta. Combinamos pequenos blocos e construmos
blocos maiores; poderamos construir D_FF desde portas AND e OR ou poderamos construir um
D_FF desde transistores.

MDULOS
Agora relacionamos os conceitos de modelamento hierrquico ao Verilog onde este fornece o
conceito de um mdulo (module).
Um mdulo um bloco de construo bsico em Verilog, que pode ser um elemento ou uma
coleo de blocos de projeto de baixo nvel. Tipicamente, os elementos so agrupados em mdulos
para fornecer uma funcionalidade comum que usada em muitos lugares do projeto.
Um mdulo fornece a funcionalidade necessria para blocos de maior nvel atravs de sua
interface de porta (entradas e sadas), mas escondendo a implementao interna. Isto permite ao
projetista modificar a parte interna do mdulo sem afetar o resto do projeto.
Em Verilog, um mdulo declarado pela palavra module, e a correspondente palavra
endmodule deve aparecer no final da definio do mdulo.
Cada mdulo deve ter um module_name (nome do mdulo), o qual o identificador do mdulo,
e uma module_terminal_list (lista de terminais do mdulo) , o qual descreve os terminais de entrada
e sada do mdulo.

module <module_name> (module_terminal_list);


...
<module internals>
...
endmodule
Especificamente, o T_FF pode ser definido como um mdulo da seguinte forma:

module T_FF (q, clock, reset);


...
<funcionalidade do flip-flop T>
...
endmodule
Verilog uma linguagem comportamental e estrutural. O cdigo interno de cada mdulo pode ser
definido em quatro nveis de abstrao, dependendo da necessidade do projeto.

6
Sistemas Digitais Prof. Antonio Ramirez Hidalgo

O mdulo se comporta identicamente com o ambiente externo sem importar o nvel de


abstrao no qual o mdulo descrito. Assim, o nvel de abstrao para descrever um mdulo pode
ser mudado sem nenhuma mudana no projeto.
Estes nveis so definidos como:
Nvel Comportamental ou Algortmico (Behavioral or algorithmic level)
Nvel fluxo de dados (Dataflow level)
Nvel de Porta (Gate Level) (Estrutural)

Na comunidade de projeto digital, o termo register transfer level (RTL) (Nvel de transferncia
de registros) freqentemente usado para uma descrio Verilog que usa uma combinao de
construo comportamental e dataflow e aceitvel para as ferramentas de sntese lgica.
Normalmente, o maior nvel de abstrao o mais flexvel e independente da tecnologia.
INSTNCIAS (INSTANCES)
Um mdulo fornece um modelo (template) desde o qual se podem criar objetos. Quando um
mdulo chamado, Verilog cria um nico objeto desde o modelo. Cada objeto tem seu prprio
nome, variveis, parmetros e interfaces I/O.
O processo de criar objetos desde o mdulo modelo chamado de instanciao, e os objetos
so chamados de instncias.
//Definir o mdulo de nvel superior chamado contador ondulante. Este instancia 4 T_FFs.
//Interconexes so mostradas na figura 1.16.
module ripple_carry_counter (q, clk, reset);
output [3:0] q; //sinais I/O e vetor de declaracoes
input clk, reset; //sinais de I/O
//Quatro instncias do mdulo T_FF so criados. Cada um tem um nico nome. A cada
//instncia passada um conjunto de sinais. Notar que cada instncia uma cpia do
//mdulo T_FF.
T_FF tff0 (q [0], clk, reset);
T_FF tff1 (q [1], q [0], reset);
T_FF tff2 (q [2], q [1], reset);
T_FF tff3 (q [3], q [2], reset);
endmodule

7
Sistemas Digitais Prof. Antonio Ramirez Hidalgo

//Definimos o mdulo T_FF. Este instncia um D_FF. Assumimos que o mdulo D_FF
// definido em algum outro lugar do projeto.
module T_FF (q, clk, reset);
output q;
input clk, reset;
wire d;
// Instnciar D_FF , chamar este de dff0.
D_FF dff0 (q, d, clk , reset);
// A porta not uma primitiva do Verilog.
not n1(d, q);
endmodule
Em Verilog ilegal aninhar mdulos. Uma definio de mdulo no pode conter outra
definio de mdulo entre module e endmodule.

Exerccios
1. Uma chave de interconexo (interconnect switch - IS) contm os seguintes componentes,
uma memria compartilhada (MEM), um controlador de sistema (SC) e um crossbar de
dados (Xbar). Definir os mdulos MEM, SC e Xbar, usando as palavras module/endmodule.
No precisa definir a parte interna. Assumir que os mdulos no tem lista de terminais.
Definir o mdulo IS, usando as palavras module/endmodule. Instnciar os mdulos MEM,
SC e Xbar e chamar as instncias de mem1, sc1, e xbar1, respectivamente. No precisa
definir a parte interna. Assumir que o mdulo IS no tem lista de terminais.
2. Um somador de 4 bits (4-bit ripple carry adder - Ripple_Add) contm quatro somadores
completos (FA) de 1 bit. Definir o mdulo FA. No precisa definir a parte interna ou a lista
de terminais. Definir o mdulo Ripple_Add . No precisa definir a parte interna ou a lista de
terminais. Instnciar quatro somadores completos do tipo FA no mdulo Ripple_Add e
chamar eles de fa0, fa1, fa2 e fa3.

Potrebbero piacerti anche