DIGITAL MOTION TRACKING SYSTEM
Authors: Anthony Eshpeter & Andrew Dunmore
Description: This file incorporates all of the components of the digital motion tracking system.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
library lpm;
use lpm.lpm_components.ALL;
use work.test_pkg.all;
entity mc_uart is
port( clk : in std_logic;
CTS_comp : out std_logic;
send_req_comp : in std_logic;
data_in_comp : in std_logic_vector(7 downto 0);
ack_comp : in std_logic;
rec : in std_logic;
trans_req_comp : out std_logic;
data_out_comp : out std_logic_vector(3 downto 0);
BCDdisplay1 : out std_logic_vector(6 downto 0);
BCDdisplay2 : out std_logic_vector(6 downto 0);
sp1_out, sp2_out, sp3_out, sp4_out : out std_logic;
mic_address : out std_logic_vector(4 downto 0);
pos2_data : out std_logic_vector(12 downto 0));
end mc_uart;
architecture behavioural of mc_uart is
signal data_in : std_logic_vector(7 downto 0); --from UART
signal data_rec, ready_to_send : std_logic; --from UART
signal data_ack, data_send : std_logic; --to UART
signal data_out : std_logic_vector(7 downto 0); --to UART
signal state_bin : std_logic_vector(7 downto 0); --to BCD encoder
signal slowclk : std_logic;
signal count : std_logic_vector(5 downto 0);
signal e_go1, e_go2, e_go3, e_go4 : std_logic;
signal d_go, data_ack_d : std_logic; --to detector
signal detected_data, timeout : std_logic; --from detector
signal dumpdata : std_logic; --to pos_alu
signal posx, posy, posz : std_logic_vector(12 downto 0); --from pos_alu
signal pos1_data : std_logic_vector(12 downto 0);
begin
slowclk <= count(5);
slow_clock: process(clk)
begin
if clk'EVENT and clk = '1' then
count <= count + '1';
end if;
end process;
use_emitter : component emitter
port map( clk => clk,
sp1_go => e_go1,
sp2_go => e_go2,
sp3_go => e_go3,
sp4_go => e_go4,
sp1_out => sp1_out,
sp2_out => sp2_out,
sp3_out => sp3_out,
sp4_out => sp4_out);
use_mc: component main_controller
port map( clk => slowclk,
detected_data => detected_data,
timeout => timeout,
data_in => data_in(5 downto 0),
data_rec => data_rec,
ready_to_send => ready_to_send,
data_ack => data_ack,
data_send => data_send,
data_out => data_out,
posx => posx,
posy => posy,
posz => posz,
e_go1 => e_go1,
e_go2 => e_go2,
e_go3 => e_go3,
e_go4 => e_go4,
dumpdata => dumpdata,
data_ack_d => data_ack_d,
d_go => d_go,
mic_address => mic_address,
state_bin => state_bin);
use_uart: component uart2
port map( clk => slowclk,
data_rec => data_rec,
data_ack => data_ack,
data_in => data_in,
ready_to_send => ready_to_send,
data_send => data_send,
data_out => data_out,
CTS_comp => CTS_comp,
send_req_comp => send_req_comp,
data_in_comp => data_in_comp,
ack_comp => ack_comp,
trans_req_comp => trans_req_comp,
data_out_comp => data_out_comp);
use_detector: component detector
port map( clk => clk,
go => d_go,
data_ack => data_ack_d,
rec => rec,
done => detected_data,
timeout => timeout,
pos1 => pos1_data,
pos2 => pos2_data);
use_pos_alu: component pos_alu
port map( clk => clk,
dumpdata => dumpdata,
data_in => pos1_data,
data1 => posx,
data2 => posy,
data3 => posz);
use_bcd1: component tobcd
port map( bitin => state_bin(3 downto 0),
BCDout => BCDdisplay1);
use_bcd2: component tobcd
port map( bitin => state_bin(7 downto 4),
BCDout => BCDdisplay2);
end architecture behavioural;