11 USE ieee.std_logic_1164.
all;
12 use ieee.numeric_std.
all;
18 clk_320 : in std_logic;
20 fifo_data : in std_logic_vector (63 DOWNTO 0);
21 fifo_valid : in std_logic;
22 fifo_last : in std_logic;
24 fifo_data_A : out std_logic_vector (63 DOWNTO 0);
25 fifo_valid_A : out std_logic;
26 fifo_last_A : out std_logic;
28 fifo_data_B : out std_logic_vector (63 DOWNTO 0);
29 fifo_valid_B : out std_logic;
30 fifo_last_B : out std_logic;
32 destination_enable : in std_logic_vector(1 downto 0) := (Others => '0')
39 Signal destination_selected: std_logic_vector(1 downto 0) := (Others => '0');
40 Signal fifo_valid_buf, fifo_last_buf: std_logic;
41 Signal fifo_data_buf: std_logic_vector (63 DOWNTO 0);
45 buffer_block:
process(clk_320)
47 if rising_edge(clk_320) then
48 fifo_valid_buf <= fifo_valid
53 fifo_last_buf <= fifo_last
58 fifo_data_buf <= fifo_data
64 End process buffer_block;
66 tob_fifo_select:
process(clk_320)
67 Variable active: std_logic := '0';
69 if rising_edge(clk_320) then
70 if (fifo_valid_buf = '1') and (fifo_last_buf = '1') then
72 elsif (fifo_valid = '1') and (active = '0') then
74 if (destination_enable = "11") then
76 destination_selected <= (not fifo_data(32)) & fifo_data(32)
82 destination_selected <= destination_enable
88 elsif (active = '0') then
89 destination_selected <= (Others => '0')
96 End process tob_fifo_select;
98 transmit_block :
process(clk_320)
100 if rising_edge(clk_320) then
101 fifo_data_A <= fifo_data_buf
106 fifo_data_B <= fifo_data_buf
111 fifo_valid_A <= fifo_valid_buf and destination_selected(0)
116 fifo_valid_B <= fifo_valid_buf and destination_selected(1)
121 fifo_last_A <= fifo_last_buf and destination_selected(0)
126 fifo_last_B <= fifo_last_buf and destination_selected(1)
132 End process transmit_block;
134 END Architecture rtl;
Switch FIFO data to correct stream depending on destination_enable...
Switch FIFO data to correct stream depending on destination_enable...