Prévia do material em texto
1. O que é um FPGA e a linguagem VHDL? Field programmable gate away - Arranjo de portas programáveis em campo, é um conjunto integrado projetado para ser programável pelo operador. Ou seja, é uma placa com portas lógicas e elementos de memória organizados em formato de matriz. É um arranjo de portas lógicas NAND programáveis. É a linguagem de programação utilizada para programar o FPGA. Ele permite descrever em um software o comportamento e a estrutura do hardware. 2. Como um FPGA pode ser usado em equipamentos de Telecomunicações? O FPGA pode ser usado em telecomunicações para processamento de imagens, modulação e demodulação 3. Diferente código concorrente e sequencial em VHDL. A diferença entre eles é que os comandos concorrentes executam simultaneamente várias instruções e a sequência que são apresentados não altera a execução , no entanto, os comandos sequenciais avaliam uma sequência determinada,uma de cada vez, na ordem em que aparecem. 4. Defina a tabela verdade. Dê exemplos de aplicações e suas respectivas tabelas verdade. A tabela verdade define todas as possíveis entradas e saídas das portas lógicas associadas a um circuito lógico. NOT - inverte o valor da saída A X 0 1 1 0 AND - o valor da saída só será igual a 1 quando as duas entradas forem 1 A B X 0 0 0 0 1 0 1 0 0 1 1 1 OR - o valor da saída será igual a 1 sempre que uma das entradas estiverem ligadas, ou seja, apresentando o 1 (no A, ou no B ou em A e B) NAND - como essa porta NEGA o valor da saída então será o oposto a porta AND, portanto, quando as duas entradas forem 1, a saída será 0 e as demais será 1 NOR - como essa porta NEGA o valor da saída então será o oposto a porta OR, portanto, quando as duas entradas forem 0, a saída será 1 e as demais será 0 XOR - é uma porta OR exclusiva, ou seja quanto uma das entradas forem iguais as saídas serão igual a 0 e quando as entradas forem diferentes a saída será 1, da mesma forma, a porta XNOR, realiza a o mesmo processo, porém ele inverte a saída. A B X 0 0 0 0 1 1 1 0 1 1 1 1 A B X 0 0 1 0 1 1 1 0 1 1 1 0 A B X 0 0 1 0 1 0 1 0 0 1 1 0 A B X XN 0 0 0 1 0 1 1 0 1 0 1 0 5. Como se obtém uma expressão Booleana a partir de uma tabela verdade? Uma expressão Booleana é obtida a partir da tabela verdade, analisando os valores da entrada que resultam uma saída de valor igual a 1, a partir disso, é necessário construir um produto com todas as variáveis nessas linhas. Exemplo: M = -ABC + A-BC + AB-C + ABC (-) representa a negação da porta (+) representa a porta OR Entre as letras existe um (.) representa a porta AND, porém não é necessário a sua representação 6. Como se implementa a expressão Booleana em VHDL? Dê um exemplo. Para implementar uma expressão booleana em VHDL é necessário descrever as operações lógicas ( AND, OR, NOT) usando sinais e operadores. exemplo: Y = (A.B) + (Ā.C) ENTITY boolean_expression IS -- define as entradas e saída PORT ( A, B, C : IN BIT; Y : OUT BIT); END boolean_expression; ARCHITECTURE behavior of boolean_expression IS BEGIN -- Implementa a expressão booleana 1 1 0 1 A B C M expressão L1 0 0 0 0 -A-B-C L2 0 0 1 0 -A-BC L3 0 1 0 0 -AB-C L4 0 1 1 1 -ABC L5 1 0 0 0 A-B-C L6 1 0 1 1 A-BC L7 1 1 0 1 AB-C L8 1 1 1 1 ABC Y q q q q '0'); -- Registrador de deslocamento begin process(clk, reset) begin if reset = '1' then reg '0'); -- Limpa o registrador se reset estiver ativo elsif rising_edge(clk) then regsoma_sub; BEGIN soma_sub(a_i, b_i, c_i, som_con, sub_con); END teste; 14. Como se implementa a sensibilidade de borda em VHDL? Existem duas formas de implementação da sensibilidade de borda. A primeira é a inicialização síncrona, esse tipo de sensibilidade emprega duas construções do tipo IF ELSE: a primeira detecta a condição do sinal de controle, e a segunda testa sucessivamente as condições para realizar operações de set, reset ou armazenamento. ENTITY flip3_2 IS PORT (ck : IN BIT; -- relogio rst : IN BIT; -- rst=1 leva q=000 sincrono set : IN BIT; -- set=1 leva q=111 sincrono d : IN BIT_VECTOR(2 DOWNTO 0); q : OUT BIT_VECTOR(2 DOWNTO 0)); END flip3_2; ARCHITECTURE teste OF flip3_2 IS BEGIN PROCESS (ck) BEGIN IF (ck'EVENT AND ck = '1') THEN -- condicao do sinal relogio IF (rst = '1') THEN q '0'); -- inicializa com zeros -- bit menos significativo de B if B(0) = '1' then temp(1 downto 0) := A; -- adiciona A na posição correta end if; -- bit mais significativo de B if B(1) = '1' then temp(3 downto 2) := A; -- adiciona A na posição correta end if; P y(2), a => x(2), s => s(2), ve => v(2), vs => v(3)); x3: som_1a PORT MAP( x(3), y(3), v(3), s(3), zs); END estrutural; 18. Diferencie function e procedure em VHDL; O FUNCTION e o PROCEDURE são subprogramas que contêm comandos sequenciais. Na FUNCTION retorna um único valor, enquanto o PROCEDURE pode retornar vários valores. ENTITY sb_fct0 IS PORT (a_i, b_i : IN INTEGER RANGE 0 TO 15; s_conc : OUT INTEGER RANGE 0 TO 15); END sb_fct0; ARCHITECTURE exemplo OF sb_fct0 IS FUNCTION soma (a : INTEGER; b : INTEGER) RETURN INTEGER IS VARIABLE s : INTEGER; BEGIN s := a + b; RETURN s; END soma; BEGIN s_conc -- Soma s_dec -- Subtração s_dec -- Multiplicaçãos_dec -- Divisão s_dec s_dec '0'); s_cre '0'); END CASE; END PROCESS; END behavior;