]> rtime.felk.cvut.cz Git - fpga/lx-cpu1/lx-dad.git/blob - hw/bus_measurement.vhd
modified LED blinking speed to be less distractive
[fpga/lx-cpu1/lx-dad.git] / hw / bus_measurement.vhd
1 library ieee;
2 use ieee.std_logic_1164.all;
3 use ieee.numeric_std.all;
4 use work.lx_dad_pkg.all;
5
6 -- Memory bus measurement
7 -- Holds the signal for one clock to simulate longest route
8
9 entity bus_measurement is
10         port
11         (
12                 -- Clock
13                 clk_i     : in std_logic;
14                 -- Reset
15                 reset_i   : in std_logic;
16                 -- Chip enable
17                 ce_i      : in std_logic;
18                 -- Address
19                 address_i : in std_logic_vector(1 downto 0);
20                 -- Data bus
21                 data_i    : in std_logic_vector(31 downto 0);
22                 data_o    : out std_logic_vector(31 downto 0);
23                 -- Bus signals
24                 bls_i     : in std_logic_vector(3 downto 0)
25         );
26 end bus_measurement;
27
28 architecture Behavioral of bus_measurement is
29
30         -- Wiring
31         signal meas1_out_s    : std_logic_vector(31 downto 0);
32         signal meas1_ce_s     : std_logic;
33         --
34         signal meas2_out_s    : std_logic_vector(31 downto 0);
35         signal meas2_ce_s     : std_logic;
36
37 begin
38
39         -- First measurement register (0xAAAAAAAA)
40 measurement1: measurement_register
41         generic map
42         (
43                 id_g   => "10101010101010101010101010101010"
44         )
45         port map
46         (
47                 clk_i    => clk_i,
48                 ce_i     => meas1_ce_s,
49                 switch_i => address_i(0),
50                 reset_i  => reset_i,
51                 bls_i    => bls_i,
52                 data_i   => data_i,
53                 data_o   => meas1_out_s
54         );
55
56         -- Second measurement register (=0x55555555)
57 measurement2: measurement_register
58         generic map
59         (
60                 id_g   => "01010101010101010101010101010101"
61         )
62         port map
63         (
64                 clk_i    => clk_i,
65                 ce_i     => meas2_ce_s,
66                 switch_i => address_i(0),
67                 reset_i  => reset_i,
68                 bls_i    => bls_i,
69                 data_i   => data_i,
70                 data_o   => meas2_out_s
71         );
72
73 -- Bus process
74 update:
75         process (ce_i, address_i, meas1_out_s, meas2_out_s)
76         begin
77
78                 -- Defaults
79                 meas1_ce_s <= '0';
80                 meas2_ce_s <= '0';
81                 data_o     <= (others => 'X');
82
83                 -- Chip Enable
84                 if ce_i = '1' then
85                         if address_i(1) = '0' then
86                                 meas1_ce_s  <= '1';
87                                 data_o      <= meas1_out_s;
88                         else
89                                 meas2_ce_s  <= '1';
90                                 data_o      <= meas2_out_s;
91                         end if;
92                 end if;
93
94         end process;
95
96 end Behavioral;
97