Full10+cau3 09
Full10+cau3 09
IEEE.STD_LOGIC_1164.ALL; use
IEEE.STD_LOGIC_ARITH.ALL; use
IEEE.STD_LOGIC_UNSIGNED.ALL;
Entity FF_JK is
Port ( J,K,CLK,S,R: in STD_LOGIC;
Q,Qd : out STD_LOGIC);
End FF_JK;
Architecture BHV of FF_JK is signal
Qt,Qdt: std_logic;
signal jk : std_logic_vector(1 downto 0);
Begin
Process(J,K,Clk,S,R)
Begin
if (S='0') and (R='0') then
Qt <='1'; Qdt <='1';
elsif (S='0') and (R='1')
then
qt <='1'; qdt <='0';
elsif (S='1') and (R='0') then
Qt <='0';
Qdt <='1';
elsif (S='1') and (R='1') then
if Clk='0' and clk'event then
JK <= J & K;
case JK is
when "11" => Qt <=not Qt;
Qdt <=not Qdt;
when "10" => Qt <='1';
Qdt <='0';
when "01" => Qt <='0';
Qdt <='1';
when others => null; -- khong doi tt
end case;
end if;
end if;
end
process; Q
<= Qt; Qd
<= Qdt;
end Behav;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Binary_DownCounter_4bit is
Port (
Clk : in STD_LOGIC; -- Xung nhịp 1Hz
Clr : in STD_LOGIC; -- Tín hiệu xóa
PL : in STD_LOGIC; -- Tín hiệu nạp giá trị đặt trước
Data : in STD_LOGIC_VECTOR(3 downto 0); -- Giá trị đặt trước
Q : out STD_LOGIC_VECTOR(3 downto 0); -- Đầu ra bộ đếm
Seg : out STD_LOGIC_VECTOR(6 downto 0) -- Led 7 đoạn (Katode chung)
);
end Binary_DownCounter_4bit;
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity denGT is
Port (
Clk : in STD_LOGIC; -- Xung nhịp 50MHz
Sel : in STD_LOGIC_VECTOR(1 downto 0); -- Tín hiệu điều khiển
Led : out STD_LOGIC_VECTOR(5 downto 0) -- Đầu ra Led(0) đến Led(5)
);
end denGT
architecture Behavioral of denGT is
signal dent: STD_LOGIC_VECTOR (5 downto 0);
signal den: STD_LOGIC_VECTOR (5 downto 0);
signal qt: Integer range 0 to 59;
signal yt: Integer range 0 to 113;
begin process(clk,sel,qt,yt) begin if (CLK='1' and CLK'event)
then qt<=qt +1;
if qt = 59 then qt <= 0;
end if;
end if;
case qt is
when 0 to 26 => den <="001100";
when 26 to 29 => den <="001010 ";
when 29 to 56 => den <="100001";
when 56 to 59 => den <="010001";
when others => null;
end case;
if (CLK='1' and CLK'event) then yt <= yt + 1;
if yt = 113thenyt<= 0;
end if;
end if;
case yt is
when 0 to 53 => dent <="001100";
when 53 to 56 => dent <="001010 ";
when 56 to 110 => dent <="100001";
when 110 to 113 => dent <="010001";
when others => null;
end case;
case sel is
when “00” => led<= den;
when "01" => Led <= '0'&clk&"00"&clk&'0';
when "10" => Led <= den;
when "10" => Led <= dent;
when others => Led <= “000000”;
end case;
end process;
end Behavioral;