Você está na página 1de 93

Arquitetura de Computadores I

Prof. Leonel Tedesco


leoneltedesco@unisc.br

Aula 2 Introduo ao VHDL


Colaborao dos professores Alexandra C. P. de Aguiar, Mrcio E. Kreutz, Rafael R. dos Santos e Tatiana G. S. dos Santos

Na aula de hoje

VHDL

Viso geral Nveis de abstrao

Dicas de Modelagem
Conhecendo a linguagem Primeiros passos...

Arquitetura de Computadores I Leonel Tedesco Slide 2

Introduo

A implementao manual de componentes complexos uma tarefa quase impossvel Uma alternativa utilizar uma linguagem de programao que descreve hardware (HDL Hardware Description Languages)

Verilog; VHDL

Ferramentas de sntese fazem a compilao da linguagem para o hardware propriamente dito


Arquitetura de Computadores I Leonel Tedesco Slide 3

Introduo

VHDL: Uma linguagem para descrever sistemas digitais Outras linguagens de descrio de hardware

SystemC, VERILOG, Handel-C, SDL, ISP, Esterel, (existem dezenas)

Originalmente para especificar hardware; hoje, simulao e sntese tambm!

Arquitetura de Computadores I Leonel Tedesco Slide 4

Introduo

Origem

Linguagem para descrever hardware, no contexto do programa americano Very High Speed Integrated Circuits (VHSIC), iniciado em 1980. VHDL VHSIC Hardware Description Language Padro IEEE em 1987 (Institute of Electrical and Electronics Engineers), revisado em 1993 Linguagem utilizada mundialmente por empresas de CAD (simulao, sntese, propriedade intelectual).

Verilog: muito utilizada nos EUA.

Arquitetura de Computadores I Leonel Tedesco Slide 5

Modelando Sistemas Digitais


VHDL serve para escrever os modelos de um sistema Razes para modelagem

Especificao dos requisitos documentao Teste usando simulao Verificao formal Sntese Processo de projeto mais confivel, com custo e tempo mnimos Evitar erros de projeto
Arquitetura de Computadores I Leonel Tedesco Slide 6

Objetivo

Benefcios / Desvantagens

Benefcios (em relao a diagramas de esquemticos, vistos em Sistemas Digitais)

Especificao do sistema digital:

Projetos independentes da tecnologia (implementao fsica postergada) Ferramentas de CAD compatveis entre si Flexibilidade: reutilizao, escolha de ferramentas e fornecedores Facilidade de atualizao dos projetos Permite explorar, em um nvel mais alto de abstrao, diferentes alternativas de implementao Permite, atravs de simulao, verificar o comportamento do sistema digital

Arquitetura de Computadores I Leonel Tedesco Slide 7

Benefcios / Desvantagens

Nvel fsico:

Reduz tempo de projeto (favorece nveis abstratos de projeto) Reduz custo do projeto Elimina erros de baixo nvel (se usado como base de ferramentas automatizadas) Conseqncia: reduz time-to-market (tempo de chegada de um produto ao mercado)

Desvantagens (em relao a diagramas de esquemticos)


Hardware gerado pode ser menos otimizado Controlabilidade/Observabilidade de projeto reduzidas

Arquitetura de Computadores I Leonel Tedesco Slide 8

Nveis de abstrao
Modelo comportamental (funcionalidade)

RTL (Register Transfer Level) (funcionalidade + timing)

Modelo Estrutural (Gate Level) (funo e estrutura)

Modelo de chaveamento (switch-level) (prximo da estrutura implementada no silcio)

Arquitetura de Computadores I Leonel Tedesco Slide 9

VHDL uma linguagem de programao?

Resposta curta: No, uma linguagem de descrio de hardware! Cdigo executado em um simulador

no h um compilador de VHDL, no h um cdigo executvel visvel

Projeto do usurio

especificado tipicamente no estilo RTL

Arquitetura de Computadores I Leonel Tedesco Slide 10

VHDL Testbench

Testbench: descrio VHDL para teste do projeto em desenvolvimento


especificao comportamental do ambiente externo ao projeto interage com o projeto no precisa ser descrito em VHDL (o projeto VHDL pode ser validado em ambiente C/C++!!)
Testbench
Gerao de estmulos e Captura de sadas

Projeto RTL

Comparao

Resultados

Arquitetura de Computadores I Leonel Tedesco Slide 11

Resultados esperados

Dicas de modelagem

Modelos comportamentais e RTL podem servir de documentao do projeto

Conveno de nomes

Use nomes descritivos (n1 no um nome descritivo) Use nomes consistentes

Empregue comentrios de maneira apropriada

Descreva PORQUE algo foi feito e no o que foi feito

Empregue tcnicas de programao estruturada


Separe lgicas de tipos diferentes Use funes e subrotinas para modularizar

Arquitetura de Computadores I Leonel Tedesco Slide 12

Processamento do projeto

Isso ser realizado pela ferramenta de sntese utilizada:

Anlise

Elaborao
Simulao Sntese

Arquitetura de Computadores I Leonel Tedesco Slide 13

Anlise

Checagem de erros sintticos e semnticos


sintaxe: gramtica da linguagem semntica: significado do modelo Declarao de entidade Corpo da arquitetura Melhor se cada unidade de design um arquivo separado

Analisa cada unidade separadamente


Unidades analisadas so colocadas em uma biblioteca (library)

Biblioteca atual chamada work


Arquitetura de Computadores I Leonel Tedesco Slide 14

Elaborao

Cria a hierarquia do projeto


Cria portas Cria sinais e processos dentro do corpo da arquitetura Para cada instncia de um componente, copia a entidade instanciada e seu corpo de arquitetura Repete recursivamente

Termina com corpos de arquitetura puramente comportamenais

Resultado final da elaborao

Coleo de redes e sinais


Arquitetura de Computadores I Leonel Tedesco Slide 15

Exemplo de Elaborao
reg4(struct) d0 bit0 d_latch d q clk bit1 d_latch d q clk bit2 d_latch d q clk bit3 d_latch d q gate and2 a y b clk int_clk

q0

d1

q1

d2

q2

d3

q3

en clk

Arquitetura de Computadores I Leonel Tedesco Slide 16

Exemplo de Elaborao
reg4(struct) d0 bit0 d_latch(basic) d q clk bit1 d_latch(basic) d q clk bit2 d_latch(basic) d q clk bit3 d_latch(basic) d q gate and2(basic) a y b clk int_clk

q0

d1

q1

d2

q2

d3

q3

en clk

process with variables and statements

Arquitetura de Computadores I Leonel Tedesco Slide 17

Simulao

Execuo de processos do modelo elaborado

Simulao de eventos

Tempo avana discretamente Quando os valores dos sinais mudam ocorrem eventos

Um processo sensvel a eventos nos sinais de entrada

Arquitetura de Computadores I Leonel Tedesco Slide 18

Sntese

Traduz RTL para um netlist em nvel de portas lgicas Prepara para sntese em FPGA ou ASIC (fluxo de projetos diferenciados)

Arquitetura de Computadores I Leonel Tedesco Slide 19

Metodologia de projeto bsica


Requisitos

Modelo RTL

Simulao

Sntese

Modelo em nvel de portas lgicas ASIC ou FPGA

Simulao

Test Bench

Place & Route

Modelo com temporizao

Simulao

Arquitetura de Computadores I Leonel Tedesco Slide 20

Primeiros passos em VHDL

A linguagem NO case-sensitive

mas freqentemente so usadas maisculas para as palavras reservadas

Comentrios

Iniciados por -- Terminados pelo fim de linha (no h comentrio multilinha)

Arquitetura de Computadores I Leonel Tedesco Slide 21

Definies

RTL: Register Transfer Level Nvel de transferncia de registradores VHDL RTL: VHDL sintetizvel
Behavioral VHDL: VHDL comportamental Sntese dependente da forma de escrita e da ferramenta utilizada

Definio comum: VHDL RTL tudo que pode ser sintetizvel (pode virar um hardware)
Arquitetura de Computadores I Leonel Tedesco Slide 22

Ferramentas

ghdl (Linux)

Front-end do gcc para VHDL

Altera Quartus II (Windows/Linux)

Sntese para FPGA da Altera


Sntese para FPGA da Xilinx Simulador Sntese para diversos fabricantes

Xilinx ISE (Windows/Linux)

Modelsim (Windows/Linux)

Mentor Leonardo ou Precision (Windows/Linux)

Active HDL (pode ser instalado em casa)

Arquitetura de Computadores I Leonel Tedesco Slide 23

Modelando interfaces

Declarao de entidade Entity

Descreve entradas e sadas de um mdulo


Nome da porta Direo da porta

Nome da entidade

entity reg4 is port ( d0, d1, d2, d3, en, clk : in bit; q0, q1, q2, q3 : out bit ); end entity reg4;

pontuao

Palavras reservadas

Tipo da porta

Arquitetura de Computadores I Leonel Tedesco Slide 24

Modelando comportamento

Architecture

Descreve a implementao de uma entidade Pode ter vrias arquiteturas para uma nica entidade

Behavioral (arquitetura comportamental)

Descreve o algoritmo de uma arquitetura contm

Processos, com instrues sequenciais e paralelas


Atribuies de sinais e declaraes do tipo wait

Arquitetura de Computadores I Leonel Tedesco Slide 25

Exemplo comportamental
architecture behav of reg4 is begin storage : process is variable stored_d0, stored_d1, stored_d2, stored_d3 : bit; begin if en = '1' and clk = '1' then stored_d0 := d0; stored_d1 := d1; stored_d2 := d2; stored_d3 := d3; end if; q0 <= stored_d0 after 5 ns; q1 <= stored_d1 after 5 ns; q2 <= stored_d2 after 5 ns; q3 <= stored_d3 after 5 ns; wait on d0, d1, d2, d3, en, clk; end process storage; end architecture behav;
Arquitetura de Computadores I Leonel Tedesco Slide 26

Modelando estrutura

Arquitetura Structural (estrutural)


Implementa o mdulo como um componente de vrios subsistemas Contm

Declaraes de sinais para interconexes internas


Portas da entidade tratadas como sinais

Instncias de componentes port maps nas instncias de componentes


Conectar sinais a portas de componentes

Declaraes wait

Arquitetura de Computadores I Leonel Tedesco Slide 27

Exemplo estrutural
bit0 d_latch d q clk bit1 d_latch d q clk bit2 d_latch d q clk bit3 d_latch d q gate and2 a y b clk int_clk

d0

q0

d1

q1

d2

q2

d3

q3

en clk

Arquitetura de Computadores I Leonel Tedesco Slide 28

Exemplo estrutural

entity d_latch is port ( d, clk : in bit; q : out bit ); end entity d_latch; architecture basic of d_latch is begin latch_behavior : process is begin if clk = 1 then q <= d after 2 ns; end if; wait on clk, d; end process latch_behavior; end architecture basic;

entity and2 is port ( a, b : in bit; y : out bit ); end entity and2; architecture basic of and2 is begin and2_behavior : process is begin y <= a and b after 2 ns; wait on a, b; end process and2_behavior; end architecture basic;

Arquitetura de Computadores I Leonel Tedesco Slide 29

Exemplo estrutural

Usar o que foi feito para implementar um registrador


architecture struct of reg4 is signal int_clk : bit; begin bit0 : entity work.d_latch(basic) port map ( d0, int_clk, q0 ); bit1 : entity work.d_latch(basic) port map ( d1, int_clk, q1 ); bit2 : entity work.d_latch(basic) port map ( d2, int_clk, q2 ); bit3 : entity work.d_latch(basic) port map ( d3, int_clk, q3 ); gate : entity work.and2(basic) port map ( en, clk, int_clk ); end architecture struct;
Arquitetura de Computadores I Leonel Tedesco Slide 30

Comportamental e Estrutural (misturado)

Uma arquitetura pode conter partes comportamentais e estruturais

Declaraes de processos e instncias de componentes Processos leem e atribuem valores a sinais


Caminho de dados descrito estruturalmente Seo de controle descrita comportamentalmente

Exemplo: modelo register-transfer-level


Arquitetura de Computadores I Leonel Tedesco Slide 31

Exemplo misto
multiplier multiplicand

shift_reg

control_ section

shift_ adder

reg

product

Arquitetura de Computadores I Leonel Tedesco Slide 32

Exemplo misto
entity multiplier is port ( clk, reset : in bit; multiplicand, multiplier : in integer; product : out integer ); end entity multiplier; architecture mixed of mulitplier is signal partial_product, full_product : integer; signal arith_control, result_en, mult_bit, mult_load : bit; begin arith_unit : entity work.shift_adder(behavior) port map ( addend => multiplicand, augend => full_product, sum => partial_product, add_control => arith_control ); result : entity work.reg(behavior) port map ( d => partial_product, q => full_product, en => result_en, reset => reset ); ...
Arquitetura de Computadores I Leonel Tedesco Slide 33

Exemplo misto
multiplier_sr : entity work.shift_reg(behavior) port map ( d => multiplier, q => mult_bit, load => mult_load, clk => clk ); product <= full_product; control_section : process is -- variable declarations for control_section -- begin -- sequential statements to assign values to control signals -- wait on clk, reset; end process control_section; end architecture mixed;

Arquitetura de Computadores I Leonel Tedesco Slide 34

Test Benches
Testando um projeto por simulao Usar um modelo de test bench

Um corpo de arquitetura inclui uma unidade que ser testada (unit under test) Aplica srie de testes s entradas Monitora os valores da sada

Arquitetura de Computadores I Leonel Tedesco Slide 35

Exemplo Test Bench


entity test_bench is end entity test_bench; architecture test_reg4 of test_bench is signal d0, d1, d2, d3, en, clk, q0, q1, q2, q3 : bit; begin dut : entity work.reg4(behav) port map ( d0, d1, d2, d3, en, clk, q0, q1, q2, q3 ); stimulus : process is begin d0 <= 1; d1 <= 1; d2 <= 1; d3 <= 1; wait for 20 ns; en <= 0; clk <= 0; wait for 20 ns; en <= 1; wait for 20 ns; clk <= 1; wait for 20 ns; d0 <= 0; d1 <= 0; d2 <= 0; d3 <= 0; wait for 20 ns; en <= 0; wait for 20 ns; wait; end process stimulus; end architecture test_reg4;
Arquitetura de Computadores I Leonel Tedesco Slide 36

Primeiros exemplos em VHDL


Fazer os exerccios de prtica EM SALA DE AULA. Dvidas!? (QUAISQUER) chamar o professor.

Exemplos: HALF ADDER


A Sum

Carry

entity halfadd is port (A, B: in std_logic; Sum, Carry: out std_logic); end halfadd; architecture comp of halfadd is begin Sum <= A xor B; Carry <= A and B; end comp;
Arquitetura de Computadores I Leonel Tedesco Slide 38

Exemplo do Somador
library IEEE; use IEEE.Std_Logic_1164.all;
A biblioteca define os tipos

entity halfadd is port (A, B: in std_logic; Sum, Carry: out std_logic); end halfadd;
architecture comp of halfadd is begin Sum <= A xor B; Carry <= A and B; end comp;

Arquitetura de Computadores I Leonel Tedesco Slide 39

Teste do somador (test bench)


library ieee; use ieee.std_logic_1164.all; entity halfadd_tb is end halfadd_tb;

Testador no tem pinos externos

architecture TB_ARCHITECTURE of halfadd_tb is signal aa,bb,soma,vaium : std_logic; begin

Seleo da arquitetura Instanciao do projeto Gerao dos estmulos

UUT : entity work.halfadd port map ( A => aa, B => bb, Sum => soma, Carry => vaium );

aa <= '0', '1' after 10 ns, '0' after 20 ns, '1' after 30 ns; bb <= '0', '1' after 20 ns; end TB_ARCHITECTURE;

Arquitetura de Computadores I Leonel Tedesco Slide 40

Prtica

Usando o ISE

Criar um mdulo de half-adder Criar um testbench do half-adder, com estmulos de entrada Fazer a sntese e simular o circuito Essa prtica deve ser feita em sala de aula!

Arquitetura de Computadores I Leonel Tedesco Slide 41

Full_Adder

A partir do exemplo ao lado (que une dois half_adder para fazer um somador completo de um bit) faa:

Simule o somador completo de 1 bit Estenda o somador completo para um de 4 bits. Faa o cdigo VHDL e a simulao do somador de 4 bits Dica (consulte slides finais com informaes sobre somadores)
Arquitetura de Computadores I Leonel Tedesco Slide 42

Prtica

Fazer o somador completo EM SALA DE AULA

Estender o meio somador e fazer o testbench

Arquitetura de Computadores I Leonel Tedesco Slide 43

Estruturas da linguagem
Consultar quando tiver dvidas na sintaxe.

Constantes
constant number_of_bytes : integer := 4; constant number_of_bits : integer := 8 * number_of_bytes; constant e : real := 2.718281828; constant prop_delay : time := 3 ns; constant size_limit, count_limit : integer := 255;

Arquitetura de Computadores I Leonel Tedesco Slide 45

Variveis
variable index : integer := 0; variable sum, average, largest : real; variable start, finish : time := 0 ns;

Arquitetura de Computadores I Leonel Tedesco Slide 46

Onde declarar?
architecture exemplo of entidade is constant pi : real := 3.14159; begin process is variable contador : integer; begin -- uso de pi e contador end process; end architecture exemplo;

Arquitetura de Computadores I Leonel Tedesco Slide 47

Tipos

Declarao de tipos
type apples is range 0 to 100; type oranges is range 0 to 100; type grapes is range 100 downto 0;

O tipo apples incompatvel com oranges


constant number_of_bits : integer := 32; type bit_index is range 0 to number_of_bits-1;

O valor padro o mais a esquerda do intervalo

Arquitetura de Computadores I Leonel Tedesco Slide 48

Modos do Sinal

IN: dados fluem para dentro da Entidade, que no pode escrever estes sinais

Ex. Clock, entradas de controle, entradas unidirecionais de dados

OUT: dados fluem para fora da Entidade, que no pode ler estes sinais

O modo OUT usado quando a Entidade nunca l estes dados

Arquitetura de Computadores I Leonel Tedesco Slide 49

Modos do Sinal

BUFFER: dados fluem para fora da Entidade, que pode ler estes sinais, permitindo realimentao interna

No entanto, o BUFFER no pode ser usado para entrada de dados

INOUT: dados podem fluir para dentro ou para fora da Entidade


S deve ser usado se necessrio

Ex. Barramento de dados bidirecional

Design menos compreensvel


Arquitetura de Computadores I Leonel Tedesco Slide 50

Tipos do Sinal

BIT, BIT_VECTOR

Valores: 0 ou 1 Atribuio de valor: bit_signal <= '0'; Nativos da linguagem VHDL, no precisam de declarao de biblioteca

STD_LOGIC, STD_LOGIC_VECTOR

Valores: 0, 1, - (dont care), Z (alta impedncia), X (indeterminado) Biblioteca ieee Declaraes necessrias

LIBRARY USE
Arquitetura de Computadores I Leonel Tedesco Slide 51

Operadores Aritmticos
+ soma ou identidade - subtrao ou negao * multiplicao / diviso mod mdulo rem resto da diviso abs valor absoluto ** exponenciao

Arquitetura de Computadores I Leonel Tedesco Slide 52

Exemplos de Nmeros
23 23.1 46E5 1.234E09 2#11111101# 2#0.100# 2#1#E10 123_456 0 146 0.0 3.14159 1E+12 19e00 98.6E+21 34.0e-08 = 16#FD# = 16#0fd# = 8#0.4# = 12#0.6# = 16#4#E2 = 10#1024#E+00 3.131_592_6 2#1111_1100_0 000_0000#
Arquitetura de Computadores I Leonel Tedesco Slide 53

Ponto Flutuante
VHDL 2000 exige, no mnimo, 64 bits VHDL 87 e VHDL 93 exigem, no mnimo, 32 bits

type input_level is range -10.0 to +10.0; variable x : input_level; variable y : real;

O valor padro o mais a esquerda do intervalo

Arquitetura de Computadores I Leonel Tedesco Slide 54

Tipos Fsicos

Um nmero + uma unidade


type length is range 0 to 1E9 units um; mm = 1000 um; m = 1000 mm; inch = 25400 um; foot = 12 inch; end units length;

Arquitetura de Computadores I Leonel Tedesco Slide 55

Tipos Fsicos

Ateno para as unidades


S possvel somar e subtrair tipos da mesma unidade Multiplicao e diviso por inteiro ou real mantm a unidade

Uso
variable distance : length := 100 m;

Arquitetura de Computadores I Leonel Tedesco Slide 56

Tipos Enumerados

Exemplo
type alu_funcion is (disable, pass, add, subtract, multiply, divide); type octal_digit is (0, 1, 2, 3, 4, 5, 6, 7); type control is (stop, pass);

Uso
variable command : alu_function := pass; variable status : control := pass;

Arquitetura de Computadores I Leonel Tedesco Slide 57

Caracteres

VHDL 87 s aceitava ASCII padro (128 valores)

Gerava problemas, inclusive, com os comentrios

VHDL 2000 usa ISO 8859 Latin 1, representado com 8 bits


variable cmd_char, terminator : character; cmd_char := P; terminator := cr;

Arquitetura de Computadores I Leonel Tedesco Slide 58

Booleans
type boolean is (false, true); Operadores

and, or, nand, nor, xor, xnor, not

and, or, nand e nor fazem lazy evaluation (ou short circuit)

O segundo operando no ser avaliado se o primeiro j indicar a resposta

Arquitetura de Computadores I Leonel Tedesco Slide 59

Bits
type bit is (0, 1); Todos os operadores lgicos valem para bits Valores entre aspas simples
variable switch : bit := 0;

Arquitetura de Computadores I Leonel Tedesco Slide 60

Standard Logic
Pacote std_logic_1164 type std_ulogic is ( U, -- no iniciado (unitialized) X, -- desconhecido (unknow) forte 0, -- zero forte 1, -- um forte Z, -- alta impedncia ou desconectado (tri-state) W, -- desconhecido fraco L, -- zero fraco H, -- um fraco -); -- indiferente (dont care)

Arquitetura de Computadores I Leonel Tedesco Slide 61

Construtores seqenciais
Vlidos quando dentro de processos Nem todos so sintetizveis

if, case, null, for while, loop, exit, next

Arquitetura de Computadores I Leonel Tedesco Slide 62

if
[if_label:] if expresso_lgica then elsif expresso_lgica then else end if [if_label];

Arquitetura de Computadores I Leonel Tedesco Slide 63

case
[case_label:] case expression is when opo1 => when opo2 => when others => end case [case_label];

Arquitetura de Computadores I Leonel Tedesco Slide 64

case (Exemplo)
case opcode is when load | add | subtract => operand := memory_operand; when store | jump | jumpsub | branch => operand := address_operand; when others => operand := none; end case;

Arquitetura de Computadores I Leonel Tedesco Slide 65

case

Tambm pode ser indicado intervalo


when 0 to 9 =>

Para sntese, necessrio cobrir todas as opes

Usar others quando em dvida std_logic tem 9 valores!

Arquitetura de Computadores I Leonel Tedesco Slide 66

for
[for_label:] for identificador in intervalo loop end loop [for_label]; Para hardware, significa replicao identificador no precisa ser declarado

e no pode ter valor atribudo

Arquitetura de Computadores I Leonel Tedesco Slide 67

for (exemplo)
for count_value in 0 to 127 loop count_out <= count_value; wait for 5 ns; end loop;

Arquitetura de Computadores I Leonel Tedesco Slide 68

for (exemplo)
type controller_state is (initial, idle, active, error); for state in controller_state loop end loop;

Arquitetura de Computadores I Leonel Tedesco Slide 69

Vetores
type word is array (0 to 31) of bit; type word is array (31 downto 0) of bit; type controller_state is (initial, idle, active, error); type state_counts is array (idle to error) of natural; type matrix is array (1 to 3, 1 to 3) of real;

Arquitetura de Computadores I Leonel Tedesco Slide 70

Valores para vetores


subtype coeff_ram_address is integer range 0 to 63; type coeff_array is array (coeff_ram_address) of real; variable coeff : coeff_array := (0 => 1.6, 1 => 2.3, 2 => 1.6, 3 to 63 => 0.0); variable coeff: coeff_array := (0 => 1.6, 1 => 2.3, others => 0.0); variable coeff : coeff_array := (0 | 2 => 1.6, 1 => 2.3, others => 0.0);

Arquitetura de Computadores I Leonel Tedesco Slide 71

Vetores
type bit_vector is array (natural range <>) of bit; subtype byte is bit_vector(7 downto 0); type std_ulogic_vector is array (natural range <>) of std_ulogic; variable channel_busy_register : bit_vector(1 to 4); variable current_test : std_ulogic_vector(0 to 13) := ZZZZZZZZZZ----;

Arquitetura de Computadores I Leonel Tedesco Slide 72

Estrutura Bsica de um Arquivo VHDL


entity and2 is port (a, b : in bit; c : out bit); end entity and2; architecture behavior of and2 is begin c <= a and b; end architecture behavior;

Arquitetura de Computadores I Leonel Tedesco Slide 73

Estrutura Bsica de um Arquivo VHDL


entity and2 is port (a, b : in bit; c : out bit); end entity and2; architecture behavior of and2 is begin comb: process (a, b) is begin c <= a and b; end process comb; end architecture behavior;

Arquitetura de Computadores I Leonel Tedesco Slide 74

Flip-Flop D (entidade)
entity FlipFlopD is
port (d, clk : in bit; q, notq : out bit);

end entity FlipFlopD;

Arquitetura de Computadores I Leonel Tedesco Slide 75

Flip-Flop D (arquitetura)
architecture behavior of FlipFlopD is signal state : bit; begin tem que incluir process (clk) is state tambm begin if (clkevent and clk = 1) then state <= d; end if; q <= state; notq <= not state; end process; end architecture behavior;

q <= d; notq <= not d;

Arquitetura de Computadores I Leonel Tedesco Slide 76

Comandos Paralelos
Executados fora dos processos Possuem equivalentes para serem executados dentro dos processos Cada um tem o seu lugar, no permitida a troca

Arquitetura de Computadores I Leonel Tedesco Slide 77

when (if)
architecture bhv of M is begin process (sel, d0, d1) is if (sel = 0) then z <= d0; else z <= d1; end if; end process; end architecture bhv; architecture bhv of M is begin z <= d0 when sel = 0 else d1; end architecture bhv;

Arquitetura de Computadores I Leonel Tedesco Slide 78

when
architecture bhv of M is begin z <= d0 when sel0 = 0 and sel1 = 0 else d1 when sel0 = 0 and sel1 = 1 else unaffected when sel0 = 1 and sel1 = 0 else d2; end architecture bhv;

Arquitetura de Computadores I Leonel Tedesco Slide 79

select (case)
with alu_function select result <= a + b when alu_add | alu_add_u, a b when alu_sub | alu_sub_u, a and b when alu_and, a or b when alu_or a when alu_pass_a;

Arquitetura de Computadores I Leonel Tedesco Slide 80

Atributos

Atributos

type A is array ( 1 to 4 , 31 downto

0) of boolean;

Aleft(N) Arirht(N) Alow(N) Ahigh(N) Arange(N) Areverse_range(N) Alength(N) Aascending(N)

Aleft(1) = 1 Arirht(2) = 0 Alow(1) = 1 Ahigh(2) = 31 Arange(1) is 1 to 4 Areverse_range(2) is 0 to 31 Alength(2) = 32 Aascending(1) = true Aascending(2) = false

Arquitetura de Computadores I Leonel Tedesco Slide 81

Atributos
type resistance is range 0 to 1E9 units ohm; kohm = 1000 ohm; Mohm = 1000 kohm; end units resistance; resistance'left = 0 ohm; resistance'right = 1E9 ohm; resistance'low = 0 ohm; resistance'high = 1E9 ohm; resistance'ascending = true; resistance'image(2 kohm) = "2000 ohm"; resistance'value("5 Mohm") = 5_000_000 ohm;

Arquitetura de Computadores I Leonel Tedesco Slide 82

Atributos
type set_index_range is range 21 downto 11; type logic_level is (unknown, low, undriven, high);

set_index_range'left = 21; set_index_range'right = 11; set_index_range'low = 11; set_index_range'high = 21; set_index_range'ascending = false; set_index_range'image(14) = "14"; set_index_range'value("20") = 20;

logic_level'left = unknown; logic_level'right = high; logic_level'low = unknown; logic_level'high = high; logic_level'ascending = true; logic_level'image(undriven) = "undriven"; logic_level'value("Low") = low; logic_level'pos(unknown) = 0; logic_level'val(3) = high; logic_level'succ(unknown) = low; logic_level'pred(undriven) = low;

Arquitetura de Computadores I Leonel Tedesco Slide 83

SOMADORES
Slides de apoio

Introduo

Antes de iniciarmos, vamos relembrar o processo de adio binria:


111 10101 + 11100 110001 (d) (b) 1111 100110 + 11100 1000010 1 011 + 110 1001

(a)

(c)

100 + 010 110

Arquitetura de Computadores I Leonel Tedesco Slide 85

Introduo

Regra: 0+0=0 0+1=1 1+0=1 1 + 1 = 0 e vai 1

Regra 1: Regra 2: Regra 3: Regra 4:

Arquitetura de Computadores I Leonel Tedesco Slide 86

Meio somador

possvel montar um circuito com portaslgicas que efetuar est adio. Para isto, montaremos inicialmente uma tabela-verdade, de 2 variveis, a partir das regras dadas acima, atentando que a sada ser a soma () e o vai 1 ser o carry-out (Co).

Arquitetura de Computadores I Leonel Tedesco Slide 87

Meio somador
ENTRADA
A 0 0 1 1 A+B
XOR

SADA
SOMA 0 1 1 0 VAI 1 0 0 0 1 Co
AND

B 0 1 0 1

Arquitetura de Computadores I Leonel Tedesco Slide 88

Meio somador
Esta tabela verdade de um Circuito Meio Somador (Half Adder - HA) Construindo o circuito, teremos:

A B HA

Co

Smbolo em Bloco

Arquitetura de Computadores I Leonel Tedesco Slide 89

Somador total

Quando ocorrer situaes tais como as letras (a), (b) e (d) (lmina 85), o meio somador deixa de ser utilizado e passa-se a usar o Somador Total (Full Adder - FA). A nova tabela-verdade ter:

3 variveis de entrada: A, B e o Vem 1 (Carry in - Cin); 2 variveis de sada: soma () e o vai 1 (carry out - Co).

Arquitetura de Computadores I Leonel Tedesco Slide 90

Somador total

Entradas
A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 Cin 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1

Sadas
Co 0 0 0 1 0 1 1 1

Arquitetura de Computadores I Leonel Tedesco Slide 91

Somador Total

Construindo o circuito, teremos:


Cin A B
FA Co

Smbolo em Bloco

Cin

A B

A B HA

Co

HA Co

Co

Arquitetura de Computadores I Leonel Tedesco Slide 92

Somador total

Arquitetura de Computadores I Leonel Tedesco Slide 93

Você também pode gostar