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

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

Instanciação em VHDL. Definição Meio pelo qual componentes definidos em VHDL podem ser incorporados em outros projetos, além daquele em que foram criados.

Apresentações semelhantes


Apresentação em tema: "Instanciação em VHDL. Definição Meio pelo qual componentes definidos em VHDL podem ser incorporados em outros projetos, além daquele em que foram criados."— Transcrição da apresentação:

1 Instanciação em VHDL

2 Definição Meio pelo qual componentes definidos em VHDL podem ser incorporados em outros projetos, além daquele em que foram criados.

3 Exemplo entity nand2 is port (a, b: in bit; c : out bit); end nand2; architecture behave of nand2 is begin c <= not(a and b) after 1 ns; end behave; & a b c

4 entity mynand is port (a, b: in bit; c : out bit); end mynand; architecture version1 of mynand is begin c <= not(a and b) after 1 ns; end version1; -- nand2 e mynand são duas entidades diferentes -- que realizam a mesma função. A cláusula -- after não é sintetizável

5 ENTITY rsff IS PORT ( set, reset : IN BIT; q, qb : INOUT BIT); END rsff; ARCHITECTURE netlist OF rsff IS COMPONENT nand2 PORT ( a, b : IN BIT; c : OUT BIT); END COMPONENT; BEGIN U1: nand2 PORT MAP (set, qb, q); U2: nand2 PORT MAP (reset, q, qb); END netlist; ARCHITECTURE behave OF rsff IS BEGIN q <= NOT( qb AND set ) AFTER 2 ns; qb <= NOT( q AND reset ) AFTER 2 ns; END behave; & a b c & b a c U2 U1 set reset q qb

6 ARCHITECTURE sequential OF rsff IS BEGIN PROCESS (set, reset ) BEGIN IF set = '1' AND reset = '0' THEN q <= '0' AFTER 2 ns; qb <= '1' AFTER 4 ns; ELSIF set = '0' AND reset = '1' THEN q <= '1' AFTER 4 ns; qb <='0' AFTER 2 ns; ELSIF set = '0' AND reset = '0' THEN q <= '1' AFTER 2 ns; qb <= '1' AFTER 2 ns; END IF; END PROCESS; END sequential;

7 CONFIGURATION rsffcon1 OF rsff IS FOR netlist FOR U1,U2 : mynand USE ENTITY WORK.mynand(version1); END FOR; END rsffcon1; -- rsffcon1 tem uma configuração mais extensa pois -- possui uma estrutura mais hierarquizada. Alternati- -- vamente poderíamos ter: FOR U1: nand2 USE ENTITY WORK.nand2(behave); FOR U2: mynand USE ENTITY WORK.mynand(version1); CONFIGURATION rsffcon2 OF rsff IS FOR behave END FOR; END rsffcon2; -- A configuração rsffcon2 tem apenas um nível hie- -- rárquico, tendo portanto uma definição mais simples

8 Packages / Functions Packages representam a possibilidade de agrupamento de funções, geralmente com finalidades semelhantes. O exemplo a seguir agrupa funções matemáticas de conversão de tipos comuns em VHDL.

9 LIBRARY IEEE; USE IEEE.std_logic_1164.ALL; PACKAGE math IS TYPE st16 IS ARRAY(0 TO 15) OF std_logic; FUNCTION add(a, b: IN st16) RETURN st16; FUNCTION sub(a, b: IN st16) RETURN st16; END math; PACKAGE BODY math IS FUNCTION vect_to_int(S : st16) RETURN INTEGER IS VARIABLE result : INTEGER := 0; BEGIN FOR i IN 0 TO 7 LOOP result := result * 2; IF S(i) = '1' THEN result := result + 1; END IF; END LOOP; RETURN result; END vect_to_int;

10 FUNCTION int_to_st16(s : INTEGER) RETURN st16 IS VARIABLE result : st16; VARIABLE digit : INTEGER := 2**15; VARIABLE local : INTEGER; BEGIN local := s; FOR i IN 15 DOWNTO 0 LOOP IF local/digit >= 1 THEN result(i) := '1'; local := local - digit; ELSE result(i) := '0'; END IF; digit := digit/2; END LOOP; RETURN result; END int_to_st16;

11 FUNCTION add(a, b: IN st16) RETURN st16 IS VARIABLE result : INTEGER; BEGIN result := vect_to_int(a) + vect_to_int(b); RETURN int_to_st16(result); END add; FUNCTION sub(a, b: IN st16) RETURN st16 IS VARIABLE result : INTEGER; BEGIN result := vect_to_int(a) - vect_to_int(b); RETURN int_to_st16(result); END sub; END math; Para usar-se as funções definidas no package acima, é necessária a - --inclusão da seguinte diretiva: USE WORK.math.ALL;


Carregar ppt "Instanciação em VHDL. Definição Meio pelo qual componentes definidos em VHDL podem ser incorporados em outros projetos, além daquele em que foram criados."

Apresentações semelhantes


Anúncios Google