Entity: MUXcomplexNto1
- File: MUXcomplexNto1top.vhd
Diagram
Description
(c) Copyright: OscillatorIMP Digital Author : Gwenhael Goavec-Merougwenhael.goavec-merou@trabucayre.com modified: Ivan Ryger om1air@gmail.com Creation date : 2015/04/08 last modified : 2021/07/19 IR extended the switch interface to 32 inputs to work as a multiplexor N -> 1. added AXI interface attribute X_INTERFACE_PARAMETER to the reset signal to be regarded as active-high. See:
https://forums.xilinx.com/t5/Design-Entry/RTL-block-designs/td-p/1159
library xil_defaultlib; use xil_defaultlib.mylib.all;
Generics
| Generic name | Type | Value | Description |
|---|---|---|---|
| ID | NATURAL | 1 | |
| INPUTS | positive range 1 to 32 | 4 | |
| DATA_SIZE | natural | 16 | DEFAULT_INPUT : natural := 0; |
| C_S00_AXI_DATA_WIDTH | integer | 32 | |
| C_S00_AXI_ADDR_WIDTH | integer | 4 |
Ports
| Port name | Direction | Type | Description |
|---|---|---|---|
| data_0_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | rocessing |
| data_0_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_0_en_i | in | STD_LOGIC | |
| data_0_clk_i | in | STD_LOGIC | |
| data_0_eof_i | in | STD_LOGIC | |
| data_0_rst_i | in | STD_LOGIC | |
| data_1_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_1_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_1_en_i | in | STD_LOGIC | |
| data_1_clk_i | in | STD_LOGIC | |
| data_1_eof_i | in | STD_LOGIC | |
| data_1_rst_i | in | STD_LOGIC | |
| data_2_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_2_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_2_en_i | in | STD_LOGIC | |
| data_2_clk_i | in | STD_LOGIC | |
| data_2_eof_i | in | STD_LOGIC | |
| data_2_rst_i | in | STD_LOGIC | |
| data_3_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_3_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_3_en_i | in | STD_LOGIC | |
| data_3_clk_i | in | STD_LOGIC | |
| data_3_eof_i | in | STD_LOGIC | |
| data_3_rst_i | in | STD_LOGIC | |
| data_4_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_4_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_4_en_i | in | STD_LOGIC | |
| data_4_clk_i | in | STD_LOGIC | |
| data_4_eof_i | in | STD_LOGIC | |
| data_4_rst_i | in | STD_LOGIC | |
| data_5_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_5_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_5_en_i | in | STD_LOGIC | |
| data_5_clk_i | in | STD_LOGIC | |
| data_5_eof_i | in | STD_LOGIC | |
| data_5_rst_i | in | STD_LOGIC | |
| data_6_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_6_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_6_en_i | in | STD_LOGIC | |
| data_6_clk_i | in | STD_LOGIC | |
| data_6_eof_i | in | STD_LOGIC | |
| data_6_rst_i | in | STD_LOGIC | |
| data_7_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_7_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_7_en_i | in | STD_LOGIC | |
| data_7_clk_i | in | STD_LOGIC | |
| data_7_eof_i | in | STD_LOGIC | |
| data_7_rst_i | in | STD_LOGIC | |
| data_8_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_8_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_8_en_i | in | STD_LOGIC | |
| data_8_clk_i | in | STD_LOGIC | |
| data_8_eof_i | in | STD_LOGIC | |
| data_8_rst_i | in | STD_LOGIC | |
| data_9_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_9_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_9_en_i | in | STD_LOGIC | |
| data_9_clk_i | in | STD_LOGIC | |
| data_9_eof_i | in | STD_LOGIC | |
| data_9_rst_i | in | STD_LOGIC | |
| data_10_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_10_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_10_en_i | in | STD_LOGIC | |
| data_10_clk_i | in | STD_LOGIC | |
| data_10_eof_i | in | STD_LOGIC | |
| data_10_rst_i | in | STD_LOGIC | |
| data_11_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_11_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_11_en_i | in | STD_LOGIC | |
| data_11_clk_i | in | STD_LOGIC | |
| data_11_eof_i | in | STD_LOGIC | |
| data_11_rst_i | in | STD_LOGIC | |
| data_12_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_12_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_12_en_i | in | STD_LOGIC | |
| data_12_clk_i | in | STD_LOGIC | |
| data_12_eof_i | in | STD_LOGIC | |
| data_12_rst_i | in | STD_LOGIC | |
| data_13_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_13_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_13_en_i | in | STD_LOGIC | |
| data_13_clk_i | in | STD_LOGIC | |
| data_13_eof_i | in | STD_LOGIC | |
| data_13_rst_i | in | STD_LOGIC | |
| data_14_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_14_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_14_en_i | in | STD_LOGIC | |
| data_14_clk_i | in | STD_LOGIC | |
| data_14_eof_i | in | STD_LOGIC | |
| data_14_rst_i | in | STD_LOGIC | |
| data_15_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_15_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_15_en_i | in | STD_LOGIC | |
| data_15_clk_i | in | STD_LOGIC | |
| data_15_eof_i | in | STD_LOGIC | |
| data_15_rst_i | in | STD_LOGIC | |
| data_16_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_16_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_16_en_i | in | STD_LOGIC | |
| data_16_clk_i | in | STD_LOGIC | |
| data_16_eof_i | in | STD_LOGIC | |
| data_16_rst_i | in | STD_LOGIC | |
| data_17_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_17_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_17_en_i | in | STD_LOGIC | |
| data_17_clk_i | in | STD_LOGIC | |
| data_17_eof_i | in | STD_LOGIC | |
| data_17_rst_i | in | STD_LOGIC | |
| data_18_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_18_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_18_en_i | in | STD_LOGIC | |
| data_18_clk_i | in | STD_LOGIC | |
| data_18_eof_i | in | STD_LOGIC | |
| data_18_rst_i | in | STD_LOGIC | |
| data_19_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_19_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_19_en_i | in | STD_LOGIC | |
| data_19_clk_i | in | STD_LOGIC | |
| data_19_eof_i | in | STD_LOGIC | |
| data_19_rst_i | in | STD_LOGIC | |
| data_20_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_20_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_20_en_i | in | STD_LOGIC | |
| data_20_clk_i | in | STD_LOGIC | |
| data_20_eof_i | in | STD_LOGIC | |
| data_20_rst_i | in | STD_LOGIC | |
| data_21_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_21_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_21_en_i | in | STD_LOGIC | |
| data_21_clk_i | in | STD_LOGIC | |
| data_21_eof_i | in | STD_LOGIC | |
| data_21_rst_i | in | STD_LOGIC | |
| data_22_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_22_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_22_en_i | in | STD_LOGIC | |
| data_22_clk_i | in | STD_LOGIC | |
| data_22_eof_i | in | STD_LOGIC | |
| data_22_rst_i | in | STD_LOGIC | |
| data_23_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_23_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_23_en_i | in | STD_LOGIC | |
| data_23_clk_i | in | STD_LOGIC | |
| data_23_eof_i | in | STD_LOGIC | |
| data_23_rst_i | in | STD_LOGIC | |
| data_24_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_24_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_24_en_i | in | STD_LOGIC | |
| data_24_clk_i | in | STD_LOGIC | |
| data_24_eof_i | in | STD_LOGIC | |
| data_24_rst_i | in | STD_LOGIC | |
| data_25_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_25_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_25_en_i | in | STD_LOGIC | |
| data_25_clk_i | in | STD_LOGIC | |
| data_25_eof_i | in | STD_LOGIC | |
| data_25_rst_i | in | STD_LOGIC | |
| data_26_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_26_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_26_en_i | in | STD_LOGIC | |
| data_26_clk_i | in | STD_LOGIC | |
| data_26_eof_i | in | STD_LOGIC | |
| data_26_rst_i | in | STD_LOGIC | |
| data_27_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_27_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_27_en_i | in | STD_LOGIC | |
| data_27_clk_i | in | STD_LOGIC | |
| data_27_eof_i | in | STD_LOGIC | |
| data_27_rst_i | in | STD_LOGIC | |
| data_28_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_28_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_28_en_i | in | STD_LOGIC | |
| data_28_clk_i | in | STD_LOGIC | |
| data_28_eof_i | in | STD_LOGIC | |
| data_28_rst_i | in | STD_LOGIC | |
| data_29_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_29_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_29_en_i | in | STD_LOGIC | |
| data_29_clk_i | in | STD_LOGIC | |
| data_29_eof_i | in | STD_LOGIC | |
| data_29_rst_i | in | STD_LOGIC | |
| data_30_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_30_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_30_en_i | in | STD_LOGIC | |
| data_30_clk_i | in | STD_LOGIC | |
| data_30_eof_i | in | STD_LOGIC | |
| data_30_rst_i | in | STD_LOGIC | |
| data_31_i_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_31_q_i | in | STD_LOGIC_VECTOR(DATA_SIZE -1 downto 0) | |
| data_31_en_i | in | STD_LOGIC | |
| data_31_clk_i | in | STD_LOGIC | |
| data_31_eof_i | in | STD_LOGIC | |
| data_31_rst_i | in | STD_LOGIC | |
| data_i_o | out | STD_LOGIC_VECTOR(DATA_SIZE-1 downto 0) | select_i : in STD_LOGIC_VECTOR(integer(log2(real(INPUTS))) - 1 downto 0); |
| data_q_o | out | STD_LOGIC_VECTOR(DATA_SIZE-1 downto 0) | |
| data_en_o | out | STD_LOGIC | |
| data_clk_o | out | STD_LOGIC | |
| data_eof_o | out | STD_LOGIC | |
| data_rst_o | out | STD_LOGIC | |
| s00_axi_aclk | in | std_logic | |
| s00_axi_reset | in | std_logic | |
| s00_axi_awaddr | in | std_logic_vector(C_S00_AXI_ADDR_WIDTH-1 downto 0) | |
| s00_axi_awvalid | in | std_logic | 00_axi_awprot : in std_logic_vector(2 downto 0); |
| s00_axi_awready | out | std_logic | |
| s00_axi_wdata | in | std_logic_vector(C_S00_AXI_DATA_WIDTH-1 downto 0) | |
| s00_axi_wvalid | in | std_logic | 00_axi_wstrb : in std_logic_vector((C_S00_AXI_DATA_WIDTH/8)-1 downto 0); |
| s00_axi_wready | out | std_logic | |
| s00_axi_bresp | out | std_logic_vector(1 downto 0) | |
| s00_axi_bvalid | out | std_logic | |
| s00_axi_bready | in | std_logic | |
| s00_axi_araddr | in | std_logic_vector(C_S00_AXI_ADDR_WIDTH-1 downto 0) | |
| s00_axi_arvalid | in | std_logic | 00_axi_arprot : in std_logic_vector(2 downto 0); |
| s00_axi_arready | out | std_logic | |
| s00_axi_rdata | out | std_logic_vector(C_S00_AXI_DATA_WIDTH-1 downto 0) | |
| s00_axi_rresp | out | std_logic_vector(1 downto 0) | |
| s00_axi_rvalid | out | std_logic | |
| s00_axi_rready | in | std_logic |
Signals
| Name | Type | Description |
|---|---|---|
| addr_s | std_logic_vector(1 downto 0) | |
| write_en_s | std_logic | |
| read_en_s | std_logic | |
| select_s | std_logic_vector(SEL_SIZE - 1 downto 0) | signal witchIn : std_logic; |
| select_s_sync | std_logic_vector(SEL_SIZE - 1 downto 0) | signal witchIn : std_logic; |
| witchIn_sync | std_logic | |
| data_i_s | STD_LOGIC_VECTOR_ARRAY(0 to INPUTS - 1) | |
| data_q_s | STD_LOGIC_VECTOR_ARRAY(0 to INPUTS - 1) | |
| data_en_s | STD_LOGIC_ARRAY(INPUTS - 1 downto 0) | |
| data_clk_s | STD_LOGIC_ARRAY(INPUTS - 1 downto 0) | |
| data_eof_s | STD_LOGIC_ARRAY(INPUTS - 1 downto 0) | |
| data_rst_s | STD_LOGIC_ARRAY(INPUTS - 1 downto 0) |
Constants
| Name | Type | Value | Description |
|---|---|---|---|
| SEL_SIZE | integer | integer(ceil(log2(real(INPUTS)))) |
Types
| Name | Type | Description |
|---|---|---|
| STD_LOGIC_VECTOR_ARRAY | array (natural range <>) of std_logic_vector(DATA_SIZE-1 downto 0) | |
| STD_LOGIC_ARRAY | array (natural range<>) of std_logic |
Instantiations
- MUXcomplexNto1_synch_inst: work.MUXcomplexNto1_synch
Description
clock domain synchronizer
- MUXComplexWb_inst: work.MUXcomplexNto1_wb
Description
inteface between AXI and MUX block
- handle_comm: work.MUXComplex_handComm
Description
Instantiation of Axi Bus Interface S00_AXI