21/10/2013
PCS 2215 - Sistemas Digitais I
Módu Módulo lo 06 – Lingua Linguagen genss de Descri Descrição ção de Hardware – HDL – Introdução M ar argi gi,, Cín ti a Bor B orge ges s Pr of essor essora a Responsável
versão versão:: 1.0 (out (outubr ubro o de 2.013) 2.013)
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
1
Sistemas Digitais I
1
Conteúdo • •
•
Perspectiva Histórica O que é uma linguagem de descrição de Hardware? Como e por que utilizar HDLs?
© Andrade, Corrêa, Gomi e Margi 2.013
•
VHDL – Histórico – Requisitos – Componentes – Tipos de dados e
operadores – Bancada de testes – Modelo de tempo – Exemplo PCS 2215
2
Sistemas Digitais I
2
1
21/10/2013
Perspectiva Histórica •
Há + de 30 anos: – Lápis, papel, gabarito
•
Anos 80: – Editor de esquemáticos; – Introdução de HDL.
•
Anos 90: crescimento do uso de HDL – Maior disponibilidade e menor custo de dispositivos programáveis (PLD, CPLD’s, FPGA’s); – Aumento da densidade de componentes ASIC’s Application-Specific Integrated Circuit ): ( Application-Specific ): + 1 milhão de
componentes.
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
33
O que é uma linguagem l inguagem de descrição de Hardware? •
Linguagem para: – Modelar circuitos eletrônicos; – Descrever circuitos; – Testar circuitos; – Descrever lista de ligações de um circuito.
•
Posteriormente, suporte a síntese de circuitos digitais.
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
4
2
21/10/2013
Como estas linguagens são usadas? •
• •
Para a especificação de projetos em qualquer nível de abstração. Para a descrição de projetos. Para modelagem funcional e detalhada de “timing ”.
• •
Para a documentação de projetos. Como uma interface padronizada para ferramentas de projeto.
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
55
Níveis de abstração Architectural
Behavioral
Structural
Algorithmic Processor Functional Block Systems Hardware Modules Algorithms Logic ALUs, Registers Register Transfer Gates, FFs Circuit Logic Transistors Transfer Functions Rectangles Cell, Module Plans Floor Plans Clusters Physical Partitions Physical/Geometry
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
66
3
21/10/2013
Níveis de abstração
Especificação funcional : descrição mais abstrata
possível.
Algoritmo: descrição do algoritmo lógico executado
pelo sistema.
Transferências entre Registradores (RTL):
descrição do algoritmo, porém em etapas que envolvam transferência de dados entre registradores. Chaveamento : descrição do algoritmo como uma máquina de estados. Circuito lógico: descrição do algoritmo através de elementos lógicos mapeáveis em componentes físicos existentes numa dada tecnologia.
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
77
Possibilidades de Uso Descrição
Síntese
Descrição de Teste
Simulação funcional
Mapeamento
© Andrade, Corrêa, Gomi e Margi 2.013
Simulação de tempo
PCS 2215
Sistemas Digitais I
88
4
21/10/2013
Por que usar VHDL? Aumentar a produtividade (mas não na primeira vez!). • Aumentar a capacidade de reutilização de componentes. • Ter acesso a ferramentas avançadas de projeto. • Facilitar futuras migrações de projeto. • É linguagem padronizada! •
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
99
VHDL •
VHDL = VHSIC Hardware Description Language
•
VHSIC = Very High Speed Integrated Circuit
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
10
5
21/10/2013
VHDL - Datas • • • • • •
1981: Requisitos iniciais (DoD) 1983-1985: Especificação da VHDL (Intermetrics, IBM, TI) 1987: IEEE Standard 1076-1987 1991: IEEE Standard 1164 (padronização de uma lógica de 9 valores) 1993: IEEE Standard 1076-1993 1995: IEEE Standards 1076.3, 1076.4
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
11
VHDL - Requisitos •
•
•
•
•
Projetos podem ser decompostos hierarquicamente (estabelecidos pelo DoD). Elementos devem ter interface bem definida e especificação funcional precisa. Especificação funcional pode ser comportamental ou estrutural. Modelar concorrência, temporização e clock . Simulação de operações lógicas e comportamento temporal.
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
12
6
21/10/2013
Componentes • • •
•
Entidades (entities) Arquiteturas (architectures) Configurações (configurations) – opcional Bibliotecas de funções/procedimentos ( packages) – opcional
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
13
Declaração de Entidade Especifica o nome da entidade. • Especifica tipo e direção de todas as portas. • Define completamente a interface da entidade. • É utilizada para caracterizar um elemento real do projeto. •
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
14
7
21/10/2013
Exemplo: Entidade entity entity-name is port (signal-names: mode signal-type;
signal-names: mode signal-type; .... signal-names: mode signal-type); end entity-name; © Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
15
Arquitetura •
•
•
Associada a uma entidade pelo nome – Pode definir o comportamento desta. Pode definir a estrutura interna da entida-de (múltiplos níveis). Uma entidade pode ter várias arquiteturas associadas a ela. – Comportamento puro; – Estrutura pura; – Mista.
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
16
8
21/10/2013
Arquitetura (cont.) architecture architecture-name of entity-name is
type declarations signal declarations constant declarations function definitions procedure definitions component declarations
Opcionais
begin
concurrent-statement .... concurrent-statement end architecture-name; © Andrade, Corrêa, Gomi e Margi 2.013
Funcionamento concorrente PCS 2215
Sistemas Digitais I
17
Arquitetura: Níveis de abstração •
Comportamento: – Comandos sequenciais, baseados em
processos (como uma linguagem de programação) que são uma sequência de ações.
•
Estrutura: – Comandos concorrentes com registradores
explícitos (fluxo de dados e unidade de controle); – Conectividade: conexão no nível de componente (netlist ). © Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
18
9
21/10/2013
Definição de Processo architecture arch of ent is begin
nome_processo: process (clock) begin comando sequencial; comando sequencial; wait until (condição); comando sequencial; ... wait for (time); ... end process; end arch; © Andrade, Corrêa, Gomi e Margi 2.013
Um processo deve ter uma lista de sensibilidade OU ... ... OU, pelo menos, deve ter um comando wait . PCS 2215
Sistemas Digitais I
19
Exemplo: Comportamento
entity reg2 is port ( d0, d1, en, clk : in bit; q0, q1 : out bit ); end entity reg2;
architecture behav of reg2 is begin storage : process is variable stored_d0, stored_d1 : bit; begin wait until clk = '1'; if en = '1' then
stored_d0 := d0; stored_d1 := d1; end if ;
q0 <= stored_d0 after 5 ns; q1 <= stored_d1 after 5 ns; end process storage; end architecture behav; © Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
20
10
21/10/2013
Exemplo: Estrutura entity reg2 is port ( d0, d1, en, clk : in bit; q0, q1 : out bit ); end entity reg2; architecture struct of reg2 is signal int_clk : bit; begin bit0 : entity work.d_ff(basic) port map (d0, int_clk, q0); bit1 : entity work.d_ff(basic) port map (d1, int_clk, q1); gate : entity work.and2(basic) port map (en, clk, int_clk); end architecture struct; © Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
21
Tipos de Dados • • • •
• •
Todos os sinais possuem um tipo. Tipos são verificados na compilação. Cada tipo possui um conjunto definido de valores. Cada tipo possui um conjunto definido de operadores válidos. Tipos podem ser definidos pelos usuários. Ao iniciar a simulação, os sinais recebem '0' (default ).
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
22
11
21/10/2013
Tipos pré-definidos bit • bit_vector • boolean • character
• • • • •
•
© Andrade, Corrêa, Gomi e Margi 2.013
integer real severity_level string time
PCS 2215
Sistemas Digitais I
23
Tipos Enumerados •
Muitos tipos comuns em VHDL são tipos enumerados: – boolean (TRUE, FALSE); – bit (‘1’, ‘0’) – char (...,‘A’, ‘B’, ‘C’, ...)
•
Extensões de usuários: – type estados is (st0,st1,st2,st3,st4,st5,st6,st7,st8, st9,st10,st11,st12,st13,st14,st15);
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
24
12
21/10/2013
Tipos - IEEE 1164 •
Substituem bit e bit_vector.
•
É preciso incluir bibliotecas: library ieee; use ieee.std_logic_1164.all;
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
25
Sistemas Digitais I
25
Tipos - IEEE 1164 •
std_logic, std_logic_vector – 'U' - Uninitialized – 'X' - Forcing Unknown – '0' - Forcing 0 – '1' - Forcing 1 – 'Z' - High Impedance – 'W' - Weak Unknown – 'L' - Weak 0 – 'H' - Weak '1' – '-' - Don't care
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
26
13
21/10/2013
Operadores Aritméticos adição subtração Multiplicação Divisão Módulo Resto da divisão Valor absoluto Exponenciação
Booleanos + * / mod rem abs **
© Andrade, Corrêa, Gomi e Margi 2.013
AND OR NAND NOR OU exclusivo NOU exclusivo complementação PCS 2215
and or nand nor xor xnor not
27
Sistemas Digitais I
27
Projeto Simples Package
Standard Libraries
Package Entity/Architecture Entity/Architecture Entity/Architecture Arquivo fonte VHDL © Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
28
14
21/10/2013
Projeto mais complexo Package
Standard Libraries
Package User Libraries
Entity/Architecture Entity/Architecture
Entity/Architecture
Configuration
Entity/Architecture © Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
29
Bancadas de teste • • •
•
•
Ou testbenchs. Semelhante à bancada de laboratório. Descrita usando comandos de comportamento (sequencial) do VHDL. Use uma descrição de estrutura para incluir o componente em teste. Em geral, é utilizada para gerar testes automáticos.
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
30
15
21/10/2013
Bancadas de teste: “Circuitos Virtuais”
Data
Q
Load
Aplica os Estímulos
Verifica Resultados
Clk Rst A EQ
B
Dispositivo em Teste © Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
31
Exemplo de bancada de teste entity testbnch is end testbnch; architecture behavior of testbnch is component rotcomp is
port(Clk, Rst, Load: std_ulogic; Init: std_ulogic_vector(0 to 7); Test: std_ulogic_vector(0 to 7); Limit: out std_ulogic; end component; signal s_Clk, s_Rst, s_Load: std_ulogic; signal s_Init: std_ulogic_vector(0 to 7); signal s_Test: std_ulogic_vector(0 to 7); signal s_Limit: std_ulogic; begin © Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
32
16
21/10/2013
Exemplo de bancada (cont.) begin
DUT: rotcomp port map -- Mapeamento (s_Clk, s_Rst, s_Load, s_Init, s_Test, s_Limit); clock : process begin
s_Clk <= '0'; s_Rst <= '0'; s_Load <= '1'; s_Init <= "00001111"; s_Test <= "11110000"; wait for 10 ns; s_Clk <= '1'; wait for 10 ns; s_Load <= ‘0';
... end process; © Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
33
Lendo Vetores de Teste (1)
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
34
17
21/10/2013
Lendo Vetores de Teste (2) stimulus: process
file vecFile : text is in "test4.vec"; variable vecLine : line; variable vecString : string;
begin
while not endfile(vecFile) loop readline(vecFile, vecLine); read(vecLine, r, good => good_number); read (file_line,vecString); - - Converte os dados de entrada em estímulos - - Aplica os estímulos, espere algum tempo, etc. end loop; assert false report "Teste completo"; wait; end process; © Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
35
Modelo de tempo do VHDL •
•
•
O tempo em VHDL é uma variável contínua, assíncrona, porém que varia em intervalos discretos. As atribuições podem especificar um instante onde elas devem acontecer. Por exemplo: – ready <= ‘1’ after 10 ns;
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
36
18
21/10/2013
Ciclo de Simulação O tempo de simulação avança até o tempo do próximo evento na lista de eventos; • Todas as transações escalonadas para este tempo são executadas; • Isto pode incluir novos eventos para serem executados neste instante ou em instantes posteriores; •
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
37
Ciclo de Simulação (cont) •
•
•
Durante a execução de um processo, atribuições a sinais são definidas e escalonadas para o instante atual ou instantes posteriores; Quando todos os processos que foram reativados forem suspensos, o ciclo de simulação se encerra e podemos iniciar um novo ciclo; Quando se atinge um estágio onde não existe nenhuma transação escalonada a simulação termina.
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
38
19
21/10/2013
Exemplo: Somador de 4 bits
•
Equação para somador de 1 bit é: – sum <=
a xor b xor ci; – co <= (a and b) or (ci and (a or b)); © Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
39
Sistemas Digitais I
39
Exemplo: Somador de 4 bits [1/2]
library ieee; use ieee.std_logic_1164.all; entity adder4bit is port ( a,b: in std_logic_vector(3 downto 0); cin : in std_logic; cout: out std_logic; sum: out std_logic_vector(3 downto 0) ); end adder4bit; architecture bruteforce of adder4bit is -- temporary signals for internal carries signal c : std_logic_vector(4 downto 0); . begin process (a, b, cin, c) begin c(0) <= cin; -- full adder 0 sum(0) <= a(0) xor b(0) xor c(0); c(1) <= (a(0) and b(0)) or (c(0) and (a(0) or b(0))); © Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
40
20
21/10/2013
Exemplo: Somador de 4 bits [2/2] -- full adder 1 sum(1) <= a(1) xor b(1) xor c(1); c(2) <= (a(1) and b(1)) or (c(1) and (a(1) or b(1))); -- full adder 2 sum(2) <= a(2) xor b(2) xor c(2); c(3) <= (a(2) and b(2)) or (c(2) and (a(2) or b(2))); -- full adder 3 sum(3) <= a(3) xor b(3) xor c(3); c(4) <= (a(3) and b(3)) or (c(3) and (a(3) or b(3))); cout <= c(4); end process; end bruteforce; © Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
41
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
42
21
21/10/2013
Formas de onda para simulação do somador de 4 bits
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
43
Testbench: Somador de 4 bits [1/2] LIBRARY ieee; USE ieee.std_logic_1164.all; use ieee.NUMERIC_STD.all; entity tb is end tb ; architecture struct of tb is signal s_a : std_logic_vector(3 downto 0); signal s_b : std_logic_vector(3 downto 0); signal s : std_logic_vector(3 downto 0); signal s_cout : std_logic; component adder4bits port ( a : in std_logic_vector (3 downto 0); b : in std_logic_vector (3 downto 0); cin : in std_logic; cout : out std_logic; sum : out std_logic_vector (3 downto 0) ); end component; © Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
44
22
21/10/2013
Testbench: Somador de 4 bits [2/2] begin proc_test: process begin for x in 0 to 15 loop for y in 0 to 15 loop s_a <= std_logic_vector(to_unsigned(x, 4)); s_b <= std_logic_vector(to_unsigned(y, 4)); wait for 10 ns; end loop; end loop; wait; end process; i_adder4bits : adder4bits port map (s_a, s_b, '0', s_cout, s); end struct; © Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
45
Exercício 1
Desenhe o circuito digital quivalente a descrição em VHDL, indicando os sinais
library IEEE; use IEEE.std_logic_1164.all; entity caixa is port(
x : in STD_LOGIC; y : in STD_LOGIC; z : in STD_LOGIC; f : out STD_LOGIC ); end caixa;
© Andrade, Corrêa, Gomi e Margi 2.013
architecture caixa_arch of caixa is signal NotX : STD_LOGIC; signal NotY : STD_LOGIC; signal NotZ : STD_LOGIC; signal F1 : STD_LOGIC; signal F2 : STD_LOGIC; signal F3 : STD_LOGIC; signal F4 : STD_LOGIC; begin NotX <= not(x); NotY <= not(y); NotZ <= not(z);
F1 <= z and NotY and NotX; F2 <= NotZ and y and NotX; F3 <= NotZ and NotY and x; F4 <= z and y and x; f <= F4 or F3 or F2 or F1; end caixa_arch;
PCS 2215
Sistemas Digitais I
46
23
21/10/2013
Exercício 2 library IEEE;
Desenhe o circuito use IEEE.std_logic_1164. all; entity funcaoF is digital port(a : in STD_LOGIC_VECTOR(1 downto 0); b : in STD_LOGIC_VECTOR(1 downto 0); correspondente. eq : out STD_LOGIC ); Qual a tabela da end funcaoF; verdade architecture funcaoF of funcaoF is signal eq1 : STD_LOGIC; correspondente a signal eq2 : STD_LOGIC; função F? begin eq1 <= not (b(1) xor a(1)); Qual uma aplicação eq2 <= not (b(0) xor a(0)); eq <= eq2 and eq1; para a função F?
end funcaoF;
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
47
Exercício desafio 1 Instale a ferramenta Altera Quartus II, que é utilizada em Lab. Digital, disponível em http://www.pcs.usp.br/~labdig/download.html Tutoriais e manuais disponíveis em http://www.pcs.usp.br/~labdig/apostilas.2sem .html
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
48
24
21/10/2013
Exercício desafio 1 (cont.) Crie um worksite para o somador de 4 bits, mostrado como exemplo em slides anteriores. Execute a simulação do módulo adder4bit e gere formas de onda para pelo menos 3 valores diferentes de entrada.
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
49
Lição de Casa
Leitura Obrigatória: – Capítulo 5, seção 5.1 e 5.3 do Livro Texto. Exercícios: – Capítulo 5 do Livro Texto.
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
50
25
21/10/2013
Bibliografia •
•
•
Wakerly, John F. Digital Design: Principles and Practices. Prentice-Hall, 4 th edition, 2006. Peter J. Ashenden VHDL Tutorial. Elsevier, 2004. Disponível no Ae. Cartão de referência de VHDL http://www.vhdl.org/rassp/vhdl/guidelines/ vhdlqrc.pdf
© Andrade, Corrêa, Gomi e Margi 2.013
PCS 2215
Sistemas Digitais I
51
26