Professional Documents
Culture Documents
Bai05 Nhom10 TNDT2 Thu5
Bai05 Nhom10 TNDT2 Thu5
Bai05 Nhom10 TNDT2 Thu5
5.1 Chương trình VHDL cho flip flop JK gồm có các ngõ vào J, K, CLK,
̅.
PRE, CLR và các ngõ ra Q, 𝐐
5.1.1 Sơ đồ khối
PRL
J Q
CLK
K ̅
Q
CLR
5.1.3 Code
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
1
SVTH: Đàm Văn Kiên
Bài 05: Chương trình VHDL cho Flip-Flop, thanh ghi dịch
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity JKFF is
Port(
J : in STD_LOGIC;
K : in STD_LOGIC;
CLK : in STD_LOGIC;
PRE : in STD_LOGIC;
CLR : in STD_LOGIC;
Q : out STD_LOGIC;
QD : out STD_LOGIC
);
end JKFF;
begin
begin
elsif (PRE='0') and (CLR='1') then QT <= '1'; QDT <= '0';
elsif (PRE='1') and (CLR='0') then QT <= '0'; QDT <= '1';
2
SVTH: Đàm Văn Kiên
Bài 05: Chương trình VHDL cho Flip-Flop, thanh ghi dịch
JK <= J & K;
case JK is
when "11" => QT <= not QT; QDT <= not QDT;
end case;
end if;
end if;
end process;
Q <= QT;
QD <= QDT;
end Behavioral;
3
SVTH: Đàm Văn Kiên
Bài 05: Chương trình VHDL cho Flip-Flop, thanh ghi dịch
5.2 Chương trình VHDL cho D Flip-flop có các ngõ vào D, CLK, Enable
̅.
và các ngõ ra Q, 𝐐
5.2.1 Sơ đồ khối
4
SVTH: Đàm Văn Kiên
Bài 05: Chương trình VHDL cho Flip-Flop, thanh ghi dịch
D Q
CLK
E ̅
Q
5.2.3 Code
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity ff_de is
port(
D : in STD_LOGIC;
E : in STD_LOGIC;
CLK : in STD_LOGIC;
Q : out STD_LOGIC;
QD : out STD_LOGIC
);
end ff_de;
5
SVTH: Đàm Văn Kiên
Bài 05: Chương trình VHDL cho Flip-Flop, thanh ghi dịch
begin
if E='1' then
if CLK='0' and CLK'event then QT <= D;
end if;
end if;
end process;
Q <= QT;
QD <= NOT QT;
end Behavioral;
6
SVTH: Đàm Văn Kiên
Bài 05: Chương trình VHDL cho Flip-Flop, thanh ghi dịch
5.3 Viết chương trình VHDL cho thanh ghi dịch 4 bit như hình vẽ sau
5.3.1 Sơ đồ khối
D Q0
Q1
CLK
Q2
CLR Q3
5.3.3 Code
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity thanhghidich4bit is
Port(
D : in STD_LOGIC;
CLK : in STD_LOGIC;
CLR : in STD_LOGIC;
Q : out STD_LOGIC_VECTOR(3 downto 0)
);
end thanhghidich4bit;
7
SVTH: Đàm Văn Kiên
Bài 05: Chương trình VHDL cho Flip-Flop, thanh ghi dịch
begin
process(D, CLK, CLR)
variable QT : STD_LOGIC_VECTOR(3 downto 0);
begin
if CLR='0' then QT:="0000";
elsif CLK='1' and CLK'event then
QT(3 downto 0):= QT(2 downto 0)&D;
end if;
Q <= QT;
end process;
end Behavioral;
8
SVTH: Đàm Văn Kiên
Bài 05: Chương trình VHDL cho Flip-Flop, thanh ghi dịch
5.4 Ứng dụng kết quả bài 5.3 viết chương trình VHDL cho thanh ghi dịch
8 bit.
5.4.1 Sơ đồ khối
D Q0
Q1
CLK
Q2
CLR Q3
Q4
Q5
Q6
Q7
9
SVTH: Đàm Văn Kiên
Bài 05: Chương trình VHDL cho Flip-Flop, thanh ghi dịch
5.4.3 Code
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity thanhghidich8bit is
Port(
D : in STD_LOGIC;
CLK : in STD_LOGIC;
CLR : in STD_LOGIC;
Q : out STD_LOGIC_VECTOR(7 downto 0)
);
end thanhghidich8bit;
begin
process(D, CLK, CLR)
variable QT : STD_LOGIC_VECTOR(7 downto 0);
begin
if CLR='0' then QT:="00000000";
elsif CLK='1' and CLK'event then
QT(7 downto 0):= QT(6 downto 0)&D;
end if;
Q <= QT;
end process;
end Behavioral;
10
SVTH: Đàm Văn Kiên
Bài 05: Chương trình VHDL cho Flip-Flop, thanh ghi dịch
11
SVTH: Đàm Văn Kiên