C <= 0; WHEN 11" => C <= 0; WHEN OTHERS => C<= 1; END CASE; END PROCESS; END comportamental; ABC Tabela Verdade">

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

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

Construção sequencial CASE WHEN Sintaxe: CASE IS WHEN => ; ; : ; WHEN => ; ; : ; WHEN OTHERS => ; ; : ; END CASE;

Apresentações semelhantes


Apresentação em tema: "Construção sequencial CASE WHEN Sintaxe: CASE IS WHEN => ; ; : ; WHEN => ; ; : ; WHEN OTHERS => ; ; : ; END CASE;"— Transcrição da apresentação:

1 Construção sequencial CASE WHEN Sintaxe: CASE IS WHEN => ; ; : ; WHEN => ; ; : ; WHEN OTHERS => ; ; : ; END CASE;

2 Exemplo da construção CASE WHEN ABC 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) BEGIN CASE auxiliar is WHEN "00" => C <= 0; WHEN 11" => C <= 0; WHEN OTHERS => C<= 1; END CASE; END PROCESS; END comportamental; ABC Tabela Verdade

4 Simulação do exemplo_case ABC

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) BEGIN CASE ENTRADA is WHEN "00" => C <= '0'; WHEN "11" => C <= '0'; WHEN OTHERS => C<= '1'; END CASE; END PROCESS; END comportamental; ABC Tabela Verdade

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) BEGIN 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) BEGIN 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 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) BEGIN CASE (auxiliar) IS WHEN "00" => soma <= "00"; WHEN "01" => soma <= "01"; WHEN "10" => soma <= "10"; WHEN "11" => soma <= "11"; WHEN OTHERS => soma <= "00"; END CASE; END PROCESS; END comportamental; Síntese do circuito – Descrição RTL e Tecnologia

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

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 A B 8 bits3 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 BEGIN 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 7 -- saída inteiro de 0 a 7 ); END ordem_bit2; ARCHITECTURE comportamental OF ordem_bit2 IS BEGIN PROCESS (entrada) VARIABLE i, k : INTEGER; BEGIN 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 Sintaxe: CASE IS WHEN => ; ; : ; WHEN => ; ; : ; WHEN OTHERS => ; ; : ; END CASE;"

Apresentações semelhantes


Anúncios Google