Készítünk most egy buffert VHDL nyelven. Ha az engedélyező jel (EN) logikai nullában van, akkor a kimenet nagyimpedanciás állapotban legyen, egyébként a kimeneten a bemenet jelenjen meg.
A megoldás paraméteresen került megvalósításra, az az, a buffer szélessége változtatható a fordítás előtt.
library IEEE;
use ieee.std_logic_1164.all;entity buffer1 is
generic(m : integer := 8);
port(BE : in std_logic_vector(m-1 downto 0);
EN : in std_logic;
KI : out std_logic_vector(m-1 downto 0));
end buffer1;architecture BEH of buffer1 is
begin
process(BE, EN)
begin
if EN = '0' then
for i in 0 to m-1 loop
KI(i) <= 'Z';
end loop;
else
KI <= BE;
end if;
end process;
end BEH;
A for ciklus segítségével tudjuk a kimenetet nagyimpedanciás állapotba vezérelni. A ciklusra azért van szükségünk, hogy a bemenet/kimenet felbontását csak a generic-ben változtathassuk meg. Ezt a ciklust egyébként kiválthatjuk egy others-sel.
process(BE, EN)
begin
if EN = '0' then
KI <= (others=>'Z');
else
KI <= BE;
end if;
end process;
Helyezzük bele a megoldásunkat a következő szimulációs tesztkörnyezetbe, ahol a process-ben a szimulációs vektor található. A projekt (work space) neve a "gyak2" volt.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;entity buffer1sim is
generic(m : integer := 8);
port(KI : out std_logic_vector(m-1 downto 0));
end buffer1sim;architecture sim of buffer1sim is
signal SENG : std_logic;
signal SBE : std_logic_vector(m-1 downto 0);
beginnev : entity gyak2.buffer1 port map(SBE, SENG, KI);
process
begin
SBE <= "01010101";
SENG <= '0';
wait for 10 ns;
SENG <= '1';
wait for 10 ns;
SENG <= '0';
wait for 10 ns;
SBE <= "10101010";
SENG <= '1';
wait for 30 ns;
end process;end sim;
Végül szimuláljuk le az áramkörünk működését (1. ábra).
1. ábra A VHDL szimuláció eredménye
Elkészítünk most VHDL nyelven egy PWM modult. Természetesen digitális úton állítunk elő PWM jelet.. . . .
Készítünk VHDL nyelven most egy programozható szélességű multiplexert, amelyet azután elhelyezünk egy Spartan 6-os FPGA-ban. A bemenet (és a kiválasztó jel) szélessége paraméteresen állítható be a fordítás előtt.. . . .
Készítünk VHDL nyelven most egy programozható szélességű multiplexert, amelyet azután elhelyezünk egy Spartan 6-os FPGA-ban. A bemenet (és a kiválasztó jel) szélessége paraméteresen állítható be a fordítás előtt.. . . .