1.3 Isim симуляторда ЛЭ өнімділігін тексеру
Өнімділігін тексеру кодын нұсқаға сәйкес жазамыз. Нұсқа бойынша D мәндері уақыттық диаграммада келесі суретте көрсетілген:
Сур. 1.3 – D мәні 9 нұсқа бойынша
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY D_trigger_VHDL IS
END D_trigger_VHDL;
ARCHITECTURE behavior OF D_trigger_VHDL IS
COMPONENT D_trigger
PORT( D:IN STD_LOGIC;
C:IN STD_LOGIC;
Q:OUT STD_LOGIC);
END COMPONENT;
signal D : std_logic := '0';
signal C : std_logic := '0';
signal Q : std_logic;
constant C_period : time := 100 ns;
BEGIN
uut: D_trigger_VHDL PORT MAP (
D => D,
C => C,
Q => Q
);
C_process :process
begin C <= '0';
wait for C_period/2;
C <= '1';
wait for C_period/2;
end process;
stim_proc: process
begin
D<='0';
wait for 50 ns;
D<='1';
wait for 50 ns;
D<='1';
wait for 50 ns;
D<='0';
wait for 50 ns;
D<='0';
wait for 50 ns;
D<='0';
wait for 50 ns;
D<='1';
wait for 50 ns;
D<='1';
wait for 50 ns;
D<='0';
wait for 50 ns;
D<='1';
wait for 50 ns;
wait;
end process;
END;
Симуляторда TestBench коды келесідей уақыттық диаграммасын және Q мәндерін береді:
Сур. 1.4 – Симулятордағы уақыттық диаграмма
2 JK-триггер зерттеу
2.1 Ақиқат кестесі
JK-триггер ақиқат кестесі келесідей:
Кесте 2.1
J
|
K
|
Qt
|
0
|
0
|
Qt-1
|
1
|
0
|
1
|
0
|
1
|
0
|
1
|
1
|
Q
|
2.2 VHDL тілінде берілген логикалық элементтің сипаттамасы
JK-триггер құру коды келесідей.
library ieee;
use ieee.std_logic_1164.all;
entity jk_trigger is
port (
Clk, Clr, Cls, J, K : in std_logic;
Q, notQ : out std_logic);
end jk_trigger;
architecture behaviour of jk_trigger is
signal Qtmp : std_logic := '0';
signal notQtmp : std_logic := '1';
begin
Q <= Qtmp;
notQ <= notQtmp;
process (Clk, Clr, Cls)
begin
if Clr = '1' then Qtmp <= '0';
notQtmp <= '1';
elsif Clk'event and Clk = '0' then
if Cls = '1' then Qtmp <= '1';
notQtmp <= '0';
elsif Clk'event and Clk = '0' then
if (J = '1') and (K = '0') then Qtmp <= '1';
notQtmp <= '0';
elsif (J = '0') and (K = '1') then Qtmp <= '0';
notQtmp <= '1';
elsif (J = '1') and (K = '1') then Qtmp <= not Qtmp;
notQtmp <= not notQtmp;
end if;
end if;
end if;
end process;
end behaviour;
Сонда кодты тексеріп, дұрыс болған кезде біз келесідей схеманы аламыз.
Сур. 2.1 – JK-триггер схемасы
2.3 Isim симуляторда ЛЭ өнімділігін тексеру
Өнімділігін тексеру кодына беретін нұсқа бойынша мәндерді келесі суреттен алуға болады:
Сур. 2.2 – 9-нұсқа бойынша берілген мәндер
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY jk_trigger IS
END jk_trigger;
ARCHITECTURE behavior OF jk_trigger IS
COMPONENT jk_trigger
PORT( J:IN STD_LOGIC;
K:IN STD_LOGIC;
Clk:IN STD_LOGIC;
Clr:IN STD_LOGIC;
Cls:IN STD_LOGIC;
Q:OUT STD_LOGIC;
notQ:OUT STD_LOGIC);
END COMPONENT;
signal Clk : std_logic := '0';
signal J : std_logic := '0';
signal K : std_logic := '0';
signal Cls : std_logic := '0';
signal Clr : std_logic := '0';
signal Q : std_logic;
signal notQ : std_logic;
constant Clk_period : time := 100 ns;
BEGIN
uut: jk_trigger PORT MAP (
Clk => Clk,
Clr => Clr,
Cls => Cls,
J=> J,
K=> K,
Q => Q,
notQ => notQ);
Clk_process :process
begin
J<='0';
K<='0';
wait for 50 ns;
J<='0';
K<='1';
wait for 60 ns;
J<='1';
wait for 140 ns;
Clr<='1';
wait for 100 ns;
K<='0';
wait for 150 ns;
J<='0';
wait for 20 ns;
Clr<='0' ;
wait for 200 ns;
J<='1';
wait for 100 ns;
Cls<='1';
wait for 60 ns;
K<='1';
wait for 150 ns;
J<='0';
Cls<='0';
wait for 420 ns;
K<='0';
wait;
end process;
END;
Симуляторда TestBench коды келесідей уақыттық диаграммасын
береді:
Сур. 2.3 – Симулятордағы уақыттық диаграмма
ҚОРЫТЫНДЫ
Бұл зертханалық жұмыста жалпы триггерлерді қайталап, олардың нақты екі түрін VHDL тілінде сипаттамасын жазып зерттедік. Кодын жазып тексергенде олардың уақыттық диаграммаларын алып бақыладық.
Бірінші тапсырмада D-триггердің сипаттамасын модульде архитектурасын және денесін жаздық. Кейін нұсқа бойынша D мәндерін беріп шығысындағы сигналды уақыттық диаграммада симуляторда бақыладық.
Екінші тапсырмада JK-триггерін қарастырдық. J, K, R, S, C мәндерін енгізе алатындай архитектурасын жазып, денесінде if және else функциялары арқылы триггер жұмыс жасау режимін жаздық. Нұсқа бойынша мәндер беріп симуляторда сигналды алдық.
Достарыңызбен бөлісу: |