A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Construção sequencial CASE WHEN

Apresentações semelhantes


Apresentação em tema: "Construção sequencial CASE WHEN"— Transcrição da apresentação:

1 Construção sequencial CASE WHEN
Sintaxe: CASE <sinal> IS WHEN <alvo1> => <expressão 1>; <expressão 2>; : <expressão n>; WHEN <alvo2> => <expressão 1>; WHEN OTHERS => <expressão 1>; END CASE;

2 Exemplo da construção CASE WHEN
B C 1 Descrever a função da tabela verdade ao lado em VHDL, usando a instrução CASE WHEN

3 Exemplo da construção CASE WHEN
ENTITY exemplo_case IS PORT( A, B : IN BIT; C : OUT BIT ); END exemplo_case; ARCHITECTURE comportamental OF exemplo_case IS SIGNAL auxiliar IS BIT_VECTOR (2 DOWNTO 1); BEGIN auxiliar <= A&B; & operador de concatenação PROCESS (auxiliar) CASE auxiliar is WHEN "00" => C <= ‘0’; WHEN “11" => WHEN OTHERS => C<= ‘1’; END CASE; END PROCESS; END comportamental; Tabela Verdade A B C 1

4 Simulação do exemplo_case
B C 1

5 Exemplo2 da construção CASE WHEN
ENTITY exemplo_case IS PORT( ENTRADA : IN BIT_VECTOR(2 DOWNTO 1); C : OUT BIT ); END exemplo_case; ARCHITECTURE comportamental OF exemplo_case IS BEGIN PROCESS (ENTRADA) CASE ENTRADA is WHEN "00" => C <= '0'; WHEN "11" => WHEN OTHERS => C<= '1'; END CASE; END PROCESS; END comportamental; Tabela Verdade A B C 1

6 Exemplo 3 da construção CASE WHEN
ENTITY decodificador IS PORT( controle : IN BIT_VECTOR(2 DOWNTO 1); saida : OUT BIT_VECTOR(4 DOWNTO 1) ); END decodificador; ARCHITECTURE comportamental OF decodificador IS BEGIN PROCESS (controle) CASE controle is WHEN "00" => saida <= "0001"; -- vetor (entre aspas duplas “) WHEN "01" => saida <= "0010"; WHEN "10" => saida <= "0100"; WHEN "11" => saida <= "1000"; END CASE; END PROCESS; END comportamental;

7 Exemplo 4 da construção CASE WHEN
library IEEE; use ieee.std_logic_1164.all; ENTITY decodificador IS PORT( controle : IN STD_LOGIC_VECTOR(2 DOWNTO 1); saida : OUT STD_LOGIC_VECTOR(4 DOWNTO 1) ); END decodificador; ARCHITECTURE comportamental OF decodificador IS BEGIN PROCESS (controle) CASE controle is WHEN "00" => saida <= "0001"; -- vetor (entre aspas duplas ) WHEN "01" => saida <= "0010"; WHEN "10" => saida <= "0100"; WHEN "11" => saida <= "1000"; END CASE; END PROCESS; END comportamental;

8 Síntese do circuito – Descrição RTL e Tecnologia
library IEEE; use ieee.std_logic_1164.all; ENTITY circuito_soma IS PORT ( a, b : IN STD_LOGIC; soma : OUT STD_LOGIC_VECTOR (2 DOWNTO 1) ); END circuito_soma; ARCHITECTURE comportamental OF circuito_soma IS SIGNAL auxiliar : STD_LOGIC_VECTOR (2 DOWNTO 1); BEGIN auxiliar <= a&b; PROCESS (auxiliar) CASE (auxiliar) IS WHEN "00" => soma <= "00"; WHEN "01" => soma <= "01"; WHEN "10" => soma <= "10"; WHEN "11" => soma <= "11"; WHEN OTHERS => END CASE; END PROCESS; END comportamental; Síntese do circuito – Descrição RTL e Tecnologia

9 Construção FOR LOOP Sintaxe: FOR i IN <valor inicial> TO <valor final> LOOP <expressão 1>; -- i é uma variável do tipo inteiro <expressão 2>; valor inicial < valor final : valor inicial e valor final não podem ser <expressão n>; -- expressão END LOOP OU FOR i IN <valor inicial> DOWNTO <valor final> LOOP <expressão 1>; i é uma variável do tipo inteiro <expressão 2>; valor inicial > valor final : <expressão n>;

10 Exemplo da construção FOR LOOP
Descrever em VHDL um circuito para determinar a ordem do bit ‘1’ de mais alta significância em um vetor de entrada de 8 bits. Solução: ordem_bit B A 8 bits 3 bits

11 Exemplo da construção FOR LOOP
library IEEE; -- Biblioteca IEEE use ieee.std_logic_1164.all; -- Define o tipo STD_LOGIC use ieee.std_logic_arith.all; e funções envolvendo os tipos STD_LOGIC e inteiro ENTITY ordem_bit IS PORT ( entrada : IN STD_LOGIC_VECTOR (7 DOWNTO 0); z : OUT STD_LOGIC_VECTOR (3 DOWNTO 1) ); END ordem_bit; ARCHITECTURE comportamental OF ordem_bit IS BEGIN PROCESS (entrada) VARIABLE i, k : INTEGER; -- definição das variáveis do processo FOR i IN 0 TO 7 LOOP IF entrada(i) = '1' THEN k := i; operador de atribuição de variável END IF; END LOOP; z <= CONV_STD_LOGIC_VECTOR(k,3); -- função para conversão de inteiro para END PROCESS; sinal do tipo STD_LOGIC_VECTOR END comportamental; representado com 3 bits

12 Simulação do ordem_bit

13 Exemplo da construção FOR LOOP
library IEEE; -- Biblioteca IEEE use ieee.std_logic_1164.all; -- Define o tipo STD_LOGIC use ieee.std_logic_arith.all; e funções envolvendo os tipos STD_LOGIC e inteiro ENTITY ordem_bit2 IS PORT ( entrada : IN STD_LOGIC_VECTOR (7 DOWNTO 0); -- z : OUT STD_LOGIC_VECTOR (3 DOWNTO 1) z : OUT INTEGER RANGE 0 TO saída inteiro de 0 a 7 ); END ordem_bit2; ARCHITECTURE comportamental OF ordem_bit2 IS BEGIN PROCESS (entrada) VARIABLE i, k : INTEGER; FOR i IN 0 TO 7 LOOP IF entrada(i) = '1' THEN k := i; END IF; END LOOP; z <= k; -- índice é passado para a saída que também é inteiro -- z <= CONV_STD_LOGIC_VECTOR(k,3); -- não precisa conversão END PROCESS; END comportamental;


Carregar ppt "Construção sequencial CASE WHEN"

Apresentações semelhantes


Anúncios Google