Documente Academic
Documente Profesional
Documente Cultură
26 de agosto de 2016
1
1.1
1.2
a
s
r
r
p p p p p pp p p
ppp ppp p
pp .
pp pppp ......... pppp pppppppp
p
p
p
p
ppppppppp
p
p p pp
..
pppp
pp
pp
p
p p p p p pp p p
ppp
p p pp
ppppppp ....... ppppppp pp pppppppp
p ..
p p pp p
p p p p pp p p p q
p p p p p pp p p
ppppppp r.........
..
pppppp p ..
p p p p p pp pp
Sua
(i)
(ii)
(iii)
(iv)
(v)
oper=add
4 ........
... ..
......
..
r1
.
...
16
clock
... ..
......
..
r2
.
...
16
pppppppppppppp..........
pppppppppppppp
ppppppp
...........
.....
A
ppppp
ppppp
p
pp p R
pppp pp p
S
...........
.....
B ppp pppppppppp ppppppp
pppppp ppppppp
clock
... ..
......
..
...
..
...........
.....
16
...
...
...
...
...
... .
. ..
.
r3
clock
...........
.....
STAT
... ..
.....
..
1.3
A interpretao automtica de desenhos uma arte, mesmo que os desenhos sejam diagramas to simples como nossos circuitos. Para permitir a interpretao
automtica de representaes para circuitos emprega-se texto.
A representao que usaremos nesta disciplina e adiante no curso codificada na
linguagem VHDL V uma sigla, HDL a abreviatura para Hardware Description
Language grave este nome.
Circuitos so representados em VHDL por sinais (fios) e componentes (design units).
Um componente descrito por duas construes da linguagem, uma entidade que
descreve sua interface com o mundo externo e uma arquitetura que descreve seu
modelo com as construes da linguagem.
1.3.1
z....
.
.......
p
p pp
ppp p p
pp .
....
.
.......
pppp ...
..p....p
pppp ..1.
ppp
.
....
.
.......
A arquitetura, chamada estrutural define a estrutura do circuito modelado ela descreve como os componentes so interligados. Entre as palavras chave architecture
e begin devem ser declarados os componentes usados na implementao do multiplexador neste caso inversor, porta nand e porta nor e os sinais internos necessrios
para ligar os componentes e a interface, que so os sinais r, p e q.
Entre o begin e o end architecture so definidas as ligaes entre os componentes
da implementao. Como mostra o diagrama ao lado do cdigo, h uma correspondncia direta entre o diagrama e o cdigo VHDL que o representa. Uma chateao
com descries textuais que, ao contrrio dos diagramas, todos os sinais devem
ser explicitamente nomeados.
A construo port map faz a ligao entre os sinais internos arquitetura e os sinais declarados para cada componente individual usado na modelagem. O port map
quem liga sinais em componentes ao mapear os sinais internos declarados na arquitetura, aos sinais declarados nas entidades dos componentes. A instanciao dos
componentes com o mapeamento das portas similar a um operador aritmtico prefixado; ao invs da forma usual, que infixada, mostrada esquerda, emprega-se a
forma prefixada direita:
c=a+b
+ (a, b, c) .
O trecho de cdigo abaixo parte do material que lhe ser fornecido nesta aula.
O cdigo est incompleto e serve apenas para mostrar como os componentes do
modelo so interligados. As instrues de como compilar e simular este modelo
esto na Seo 1.6.
architecture estrutural of mux2 is
-- declara o
component inv
port ( A : in
end component
de componentes
is
bit ; S : out bit );
inv ;
component nand2 is
port (A , B : in bit ; S : out bit );
end component nand2 ;
-- declara o de sinais internos
signal r , p , q : bit ;
begin
-- instancia o e
-interliga o dos componentes
Ui : inv port map (s , r );
z...
..
.
.......
ppp
p
p
ppp
pp
p p p p p p p p p p p pp p p
ppp
pp p
pp pp Uor ppppp
ppp
pp p
p pp p p p p p p p p p p p p p p p p p pp p
ppp ..... s
pp 1
pp p p pppp pppp p p
p
p
p
p
p
p
p
p
p
p pp p p
q
pp
p pp p ppppp pppp
p
p
pp p ppp p
pp
pp Ua1 pp pppp
p Ua0
ppp
pppp ppp
....
ppppppppp pppppppppppppp
pp p ....
ppp
p
Ui
p
p
p
p
pp
p
pppppp s
ppp
r
p
p
.
.......
.
.......
1.4
Projeto topdown
refinamento
projeto . .
.
. . . .. . .
. .
. .
especificao
idia
.
.
.....
.
........
........
.
........
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
........
.
.
.....
......
.
........
.......
.
.....
........
.....
.
....
........
....
........
...
...
.
.........
.
.
...
..
.
.
.
.
.
.
... .................
.
...
.
... .. .
.
...
..
..
.
..
..
.
.
..
.
.
............. ...
..
.
.
.
.
.
.
.
.
.
...
. ............
..
...
.
..
.......
.
.
.
.
.
.
.
.
.
.
...
....... .
.
...
...
.........
...
...
.
.........
...
.
...
........
.....
.
.....
....
.
.
.
.
.
.....
.
.....
......
.
.......
.......
.
........
............
.
.
...................................
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. . .
. . . . . .
.
abstrato
concreto
codificao
implementao
simulao
verificao
1.5
VHDL
1.5.1
1.5.2
Tipos de dados
Tipo
Bit
Bit_vector
Boolean
Integer
Real
Time
Character
String
valor
1, 0
vetor de bits
True, False
-2,-1,0,1,1
1.0, -1.0E5
1 us, 7 ns
a,2,$
vetor de char
exemplo de uso
Q <= 1;
Dout <= "0011";
EQ <= True;
Cnt <= Cnt + 2;
V1 = V2/5.3;
Q <= 1 after 6 ns;
Char <= p;
Msg <= "error: " & "badAddr";
O sinal bv declarado com a direo contrria quela do sinal vb, e o bit mais
significativo deste vetor aquele na direita.
signal bv : bit_vector (0 to 3); -- bit 0 o Mais Significativo
Vetores de bits podem ser representados nas bases hexadecimal (x), octal (o) e
binria (b). A representao binria implcita a normal: se nada for dito em
contrrio, o vetor um vetor de bits.
hexadecimal
octal
binaria_expl
binaria_impl
1.5.4
<=
<=
<=
<=
x " C0 " ;
o " 300 " ;
b " 11000000 " ;
" 11000000 " ;
-----
1100 0000
OITO bits
011 000 000 NOVE bits
11000000 base -2 expl cita
11000000 base -2 impl cita
Mecanismo de simulao
A simulao de modelos escritos em VHDL emprega a Simulao de Eventos Discretos os eventos ocorrem em instantes determinados pela prpria simulao.
Processos so alguns dos comandos da linguagem que estudaremos em breve. No
trecho de cdigo acima, cada uma das atribuies um processo, embora o uso do
nome processo seja reservado para um comando especfico, que veremos em breve.
processo
delta
X=Y
...
0
0 + 10ns
transao
evento
1.6
Da tarefa
Etapa 1 Copie para sua rea de trabalho o arquivo com o cdigo VHDL, e extraia
seu contedo com os seguinte comandos:
(1) wget http://www.inf.ufpr.br/roberto/ci210/vhdl/l_estrutural.tgz
(2) expanda-o com tar xzf l_estrutural.tgz
(3) o diretrio estrutural ser criado na expanso da tarball;
(4) mude para aquele diretrio com cd estrutural
O arquivo packageWires.vhd contm definies para nomes de sinais, uma vez que
digitar reg8 mais econmico do que bit_vector(7 downto 0).
O arquivo aux.vhd contm os modelos das portas lgicas not, nand, nor, xor, que
so os componentes bsicos para este laboratrio. Este arquivo no deve ser editado.
O arquivo estrut.vhd contm um modelo para um multiplexador de duas entradas,
mux2. Este modelo serve de base para que voc escreva os modelos para os componentes mux4, mux8, demux2, demux4, demux8, decod2, decod4, decod8, que so
definidos na Seo 1.3 de [RH12].
O script run.sh compila o cdigo VHDL e produz um simulador. Se executado sem
nenhum argumento de linha de comando, run.sh somente (re)compila o simulador.
Com qualquer argumento o script dispara a execuo de gtkwave: ./run.sh 1 &
O arquivo v.vcd contm definies para o gtkwave tais como a escala de tempo e
sinais a serem exibidos na tela para a verificao do modelo mux2.
Das mensagens de erro Em caso de erro de compilao detectado pelo
compilador VHDL, o script run. sh aborta a compilao, e exibe as
mensagens de erro emitidas pelo compilador. Estas mensagens so a
melhor indicao que o compilador capaz de emitir para ajud-lo a
encontrar o erro, e portanto as mensagens de erro devem ser lidas.
Os programadores do GHDL dispenderam um esforo considervel para
emitir mensagens (relativamente) teis em caso de erro. No desperdice
a preciosa ajuda que lhe oferecida.
1.6.1
mensagens
de erro
Modelo do multiplexador
entity
10
z....
.
.......
p
p pp
ppp p p
pp ...
....
.
.......
pppp ...
..p....p
pppp ..1.
ppp
.
....
.
.......
dos
map
map
map
map
componentes
(s , r );
(a , r , p );
(b , s , q );
(p , q , z );
z...
..
.
.......
ppp
p
p
ppp
pp
p p p p p p p p p p p pp p p
ppp
pp p
pp pp Uor ppppp
ppp
pp p
p pp p p p p p p p p p p p p p p p p p pp p
ppp ..... s
pp 1
pp p p pppp pppp p p
p
p
p
p
p
p
p
p
p
p pp p p
q
pp
p pp p ppppp pppp
p
p
pp p ppp p
pp
pp Ua1 pp pppp
p Ua0
ppp
pppp ppp
....
ppppppppp pppppppppppppp
pp p ....
ppp
p
Ui
p
p
p
p
pp
p
pppppp s
ppp
r
p
p
.
.......
.
.......
port map
mapeamento
posicional
rea
concorrente
11
1.6.2
evento
s
0
0
0
0
1
1
1
1
a
0
0
1
1
0
0
1
1
b
0
1
0
1
0
1
0
1
z
0
0
1
1
0
1
0
1
1.6.3
Testbench
Registro
(record)
test_record
Vetor
(array)
test_array
escalar: 0
vetor: b"01"
seleo de
componentes
de um vetor
de bits:
s(0)
s(M downto N)
12
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
.. . . . . . . . . . . ..
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..... ..... ..
.
.
.
.
.
.
.
.
.
. .....
0..2
.
.
.
.
.
.
.
.
. ..... ..
.
.
.
.
.
.
.
.
.
.. .....
.
.
. ......
.
.
.
. .... .....
.
.
.
..
.
.
......
.
.
.
..... .
..
.
.
.
.
.
.
.
.
. ..
.
..
.
.
.
.
.
.
. .
.
.
.....
. .
.
.
.
.
.
.
.
.
.
.
.
.
. ..
.
.
.
.............
.
. .
. .......
.
.
. .
.
......
.
......
.
. ..
.
.
..
.
.
.
.
.
..
.
.
.
.
...
.
.
.
..
.
.
.
.
....
.
..
.
.
.
.
.
.
.
.
. .......
...
.
.
.
.
.
.
..
.
.
.
0..2
.
.
.
.
.
... ..
.
.
.
.
.
.
.
.
..... ..
.....
.
.
.
.....
.
.
.
.....
.
...
.
.
.
.
.....
.
.
.
....
.
.
.
.
.
.
.
.
.
.
.
..
.
...
.
.
.
.
.
.
.
.
.
...
.
.
.
.
.
.
......
.
.
.
.
.
.
.
.
.
.
.
.
.
.....
. .....
.
.
.
.
0..2
. ......
.
.
.
.
.
.
.
.
.
....
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...
.
.
.
.
.
.
.
.
.
.
.
.
.
. .......
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
..
.
.
.
.
.
.
.
.
.
.
.
.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
q
q
q
pp p p p p p pp
p pppp ppppppp
pppp
p
p p p pp p p p p p p
pp p p p p p p p
mux
pppppppp
pp pppppppppp
ppppp ppppppp
p ppppp
pppp ppppppppp
ppppppp pppppp
s
demux
k
s
qq
q
pppppppppppsppp
pppppppppppppp
pppppp
pppppp
ppppppppp pppp
pp ppppppppspp p
pppppsel
pppppppppppppp
pppppppppppppp
p
q
q
q
pp p p p p p p p pp
pppp p pppppp
pppp
p
p p p pp p p p p p p p
ppp p p ppp
q
q
q
pppp pppp
pppppp pppppppp
pppp
p
p p p pp p p p p p p
ppp p pppp
mx
asserts
dm
sl
13
U_testValues, com um lao for ... loop. A varivel de iterao itera no espao
definido pelo nmero de elementos do vetor de testes (test_vectorsrange) o
atributo range representa a faixa de valores do ndice do vetor. Se mais elementos
forem acrescentados ao vetor, o lao executar mais iteraes. O elemento do vetor
atribudo varivel v e os todos os campos do vetor so ento atribudos aos sinais
que excitam os modelos. O processo U_testValues executa concorrentemente com o
seu(s) modelo(s) e quando os sinais de teste so atribudos no lao, estes provocam
alteraes nos sinais dos modelos.
atributo
range
assert
1.6.4
&
concatenao
seleo de
campo
14
1.6.5
Usaremos o mesmo procedimento para testar os demultiplexadores. Em tb_estrut.vhd, descomente a linha com
assert saidaDEMUX2
A tabela verdade das sadas z e w do demux-2, mostrada
ao lado, e com base nela, o vetor de testes mostrado no
Programa 6.
s
0
0
1
1
a
0
1
0
1
z
0
1
0
0
w
0
0
0
1
15
Da mesma forma que com os multiplexadores, os demux-4 e demux-8 so composies de demux-2. Uma vez que o componente pequeno tenha sido verificado, a
verificao do componente grande necessita de um nmero relativamente pequeno
de testes para tambm ser verificada.
A cada tamanho testado, lembre de descomentar a linha com assert saidaDEMUXn
antes do teste, e de coment-la novamente aps o teste.
1.6.6
1.7
16
Note que voc quem deve ajustar a sada esperada para cada um dos
circuitos nos vetores de teste. O projetista dos modelos responsvel por
escrever os vetores de teste e portanto sua tarefa ajustar os campos
mx (sada esperada dos muxN), dm (sada esperada dos demuxN), e dc
(sada esperada dos decodN). Se os valores que voc atribuir queles
campos forem incorretos para as entradas, ento os asserts indicaro
falso-positivos para erros.
Os asserts que verificam a corretude dos demultiplexadores e decodificadores esto
comentados para reduzir a poluio na tela. Aps completar a verificao dos trs
multiplexadores, comente seus asserts e descomente aqueles dos demultiplexadores.
Repita para os decodificadores.
Referncias
[RH12]
Histrico das
26ago2016:
25ago2016:
24ago2016:
22ago2016:
23set2015:
12set2015:
29jul2015:
Revises:
exemplos de vetores de testes;
includas sugestes de Zanata, remoo de FPGA;
bv(0 to 3) pg. 8;
compilao VHDL;
portas CMOS;
ajustes cosmticos, diagrama com simulador;
primeira verso.
a responsabilidade
pelos testes
do
projetista!