adding ecen 320 final project
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
use ieee.numeric_std.all;
|
||||
|
||||
entity tx_top is
|
||||
generic(COUNTER_BIT: natural := 20);
|
||||
port(
|
||||
clk: in std_logic;
|
||||
sw: in std_logic_vector(7 downto 0);
|
||||
seg : out std_logic_vector(6 downto 0);
|
||||
an : out std_logic_vector(3 downto 0) := "1100";
|
||||
dp : out std_logic;
|
||||
tx_out: out std_logic;
|
||||
btn: in std_logic_vector(3 downto 0);
|
||||
data_out : out std_logic_vector(15 downto 0)
|
||||
);
|
||||
end tx_top;
|
||||
|
||||
architecture top_arch of tx_top is
|
||||
|
||||
-- component seven_segment_display
|
||||
-- generic(
|
||||
-- COUNTER_BITS: natural := 15
|
||||
-- );
|
||||
-- port(
|
||||
-- clk: in std_logic;
|
||||
-- data_in: in std_logic_vector(15 downto 0);
|
||||
-- dp_in: in std_logic_Vector(3 downto 0);
|
||||
-- blank: in std_logic_vector(3 downto 0);
|
||||
-- seg : out std_logic_vector(6 downto 0);
|
||||
-- dp : out std_logic;
|
||||
-- an : out std_logic_vector(3 downto 0)
|
||||
-- );
|
||||
-- end component;
|
||||
|
||||
component tx
|
||||
port(
|
||||
clk: in std_logic;
|
||||
rst: in std_logic;
|
||||
data_in: in std_logic_vector(7 downto 0);
|
||||
send_character: in std_logic;
|
||||
tx_out: out std_logic;
|
||||
tx_busy: out std_logic
|
||||
|
||||
);
|
||||
end component;
|
||||
|
||||
signal reset: std_logic := '0';
|
||||
signal dp_in: std_logic_vector(3 downto 0) := "0000";
|
||||
signal blank4: std_logic_vector(3 downto 0) := (others=>'0');
|
||||
signal data_in: std_logic_vector(7 downto 0) := (others=>'0');
|
||||
signal send_character: std_logic;
|
||||
signal counter: unsigned(COUNTER_BIT downto 0) := (others=>'0');
|
||||
signal debouncing: std_logic;
|
||||
signal data_in2: std_logic_vector(15 downto 0) := (others=>'0');
|
||||
|
||||
begin
|
||||
|
||||
-- bottom_segment: seven_segment_display
|
||||
-- generic map(COUNTER_BITS=>15)
|
||||
-- port map(clk=>clk, an=>an, seg=>seg, dp=>dp, blank=>blank4,
|
||||
-- data_in=>data_in2, dp_in=>dp_in
|
||||
-- );
|
||||
|
||||
bottom_tx: tx
|
||||
port map(clk=>clk, rst=>reset, send_character=>send_character,
|
||||
tx_out=>tx_out, tx_busy=>open, data_in=>data_in
|
||||
);
|
||||
|
||||
data_out <= "00000000" & sw;
|
||||
data_in <= sw;
|
||||
data_in2 <= "00000000" & sw;
|
||||
-- debouncer
|
||||
process(clk)
|
||||
begin
|
||||
if(rising_edge(clk)) then
|
||||
if(counter = "111111111111111111111") then
|
||||
debouncing <= '1';
|
||||
counter <= (others=>'0');
|
||||
else
|
||||
debouncing <= '0';
|
||||
counter <= counter+1;
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
-- button logic
|
||||
process(clk,btn)
|
||||
begin
|
||||
if(rising_edge(clk)) then
|
||||
if (btn(3)='1') then
|
||||
reset <= '1';
|
||||
elsif (btn(0)='1') then
|
||||
if(debouncing='1') then
|
||||
send_character <= '1';
|
||||
end if;
|
||||
else
|
||||
reset <= '0';
|
||||
send_character <= '0';
|
||||
end if;
|
||||
end if;
|
||||
end process;
|
||||
|
||||
end top_arch;
|
||||
Reference in New Issue
Block a user