diff --git a/libraries/io/tr_xaui/src/vhdl/tr_xaui.vhd b/libraries/io/tr_xaui/src/vhdl/tr_xaui.vhd index 91ef26c0d96f31d1fa81c08e570123b6e8945fbb..ac211ceb77d6fe66c6f641e563556adb4d08f55f 100644 --- a/libraries/io/tr_xaui/src/vhdl/tr_xaui.vhd +++ b/libraries/io/tr_xaui/src/vhdl/tr_xaui.vhd @@ -126,65 +126,39 @@ BEGIN i_tx_rst_arr <= NOT txc_tx_ready_arr; i_rx_rst_arr <= NOT rxc_rx_ready_arr; - gen_phy: IF g_sim = FALSE OR g_sim_level = 0 GENERATE - -- Altera's IP - u_tech_xaui : ENTITY tech_xaui_lib.tech_xaui - GENERIC MAP ( - g_technology => g_technology, - g_nof_xaui => g_nof_xaui - ) - PORT MAP ( - tr_clk => tr_clk, - - cal_rec_clk => cal_rec_clk, - - mm_rst => mm_rst, - mm_clk => mm_clk, - - xaui_mosi => xaui_mosi, - xaui_miso => xaui_miso, - - tx_clk_arr => tx_clk_arr, - rx_clk_arr_out => rx_clk_arr_out, - rx_clk_arr_in => rx_clk_arr_in, - - txc_tx_ready_arr => txc_tx_ready_arr, - rxc_rx_ready_arr => rxc_rx_ready_arr, - txc_rx_channelaligned_arr => txc_rx_channelaligned_arr, - - xgmii_tx_dc_arr => xgmii_tx_dc_in_arr, - xgmii_rx_dc_arr => xgmii_rx_dc_out_arr, - - xaui_tx_arr => xaui_tx_arr, - xaui_rx_arr => xaui_rx_arr - ); - END GENERATE; + u_tech_xaui : ENTITY tech_xaui_lib.tech_xaui + GENERIC MAP ( + g_technology => g_technology, + g_sim => g_sim, + g_sim_level => g_sim_level, + g_nof_xaui => g_nof_xaui + ) + PORT MAP ( + tr_clk => tr_clk, + tr_rst => tr_rst, - gen_sim: IF g_sim = TRUE AND g_sim_level = 1 GENERATE - -- Behavioural serdes model (fast) - u_sim_xaui : ENTITY tech_xaui_lib.sim_xaui - GENERIC MAP ( - g_nof_xaui => g_nof_xaui - ) - PORT MAP ( - tr_clk => tr_clk, - tr_rst => tr_rst, - - tx_clk_arr => tx_clk_arr, - rx_clk_arr_out => rx_clk_arr_out, - rx_clk_arr_in => rx_clk_arr_in, + cal_rec_clk => cal_rec_clk, - txc_tx_ready_arr => txc_tx_ready_arr, - rxc_rx_ready_arr => rxc_rx_ready_arr, - txc_rx_channelaligned_arr => txc_rx_channelaligned_arr, - - xgmii_tx_dc_arr => xgmii_tx_dc_in_arr, - xgmii_rx_dc_arr => xgmii_rx_dc_out_arr, - - xaui_tx_arr => xaui_tx_arr, - xaui_rx_arr => xaui_rx_arr - ); - END GENERATE; + mm_rst => mm_rst, + mm_clk => mm_clk, + + xaui_mosi => xaui_mosi, + xaui_miso => xaui_miso, + + tx_clk_arr => tx_clk_arr, + rx_clk_arr_out => rx_clk_arr_out, + rx_clk_arr_in => rx_clk_arr_in, + + txc_tx_ready_arr => txc_tx_ready_arr, + rxc_rx_ready_arr => rxc_rx_ready_arr, + txc_rx_channelaligned_arr => txc_rx_channelaligned_arr, + + xgmii_tx_dc_arr => xgmii_tx_dc_in_arr, + xgmii_rx_dc_arr => xgmii_rx_dc_out_arr, + + xaui_tx_arr => xaui_tx_arr, + xaui_rx_arr => xaui_rx_arr + ); ----------------------------------------------------------------------------- -- SOSI-XGMII user interface diff --git a/libraries/technology/xaui/tech_xaui.vhd b/libraries/technology/xaui/tech_xaui.vhd index be6fd7cdbe69da5960424c74ae4449b1439ab772..b9101b9c87039107d798b4f5078d0c4cf86039dc 100644 --- a/libraries/technology/xaui/tech_xaui.vhd +++ b/libraries/technology/xaui/tech_xaui.vhd @@ -31,11 +31,14 @@ USE common_lib.common_interface_layers_pkg.ALL; ENTITY tech_xaui IS GENERIC ( g_technology : NATURAL := c_tech_select_default; + g_sim : BOOLEAN := FALSE; + g_sim_level : NATURAL := 0; -- 0 = use IP; 1 = use fast serdes model g_nof_xaui : NATURAL := 1 -- Up to 3 (hard XAUI only) supported ); PORT ( -- Transceiver PLL reference clock tr_clk : IN STD_LOGIC; -- 156.25 MHz + tr_rst : IN STD_LOGIC; -- Calibration & reconfig clock cal_rec_clk : IN STD_LOGIC; @@ -65,20 +68,34 @@ ENTITY tech_xaui IS xaui_rx_arr : IN t_xaui_arr(g_nof_xaui-1 DOWNTO 0) ); END tech_xaui; + ARCHITECTURE str OF tech_xaui IS + CONSTANT c_use_technology : BOOLEAN := g_sim = FALSE OR g_sim_level = 0; + CONSTANT c_use_sim_model : BOOLEAN := NOT c_use_technology; + BEGIN - gen_ip_stratixiv : IF g_technology=c_tech_stratixiv GENERATE + gen_ip_stratixiv : IF c_use_technology=TRUE AND g_technology=c_tech_stratixiv GENERATE u0 : ENTITY work.tech_xaui_stratixiv GENERIC MAP (g_nof_xaui) - PORT MAP (tr_clk, cal_rec_clk, mm_clk, mm_rst, xaui_mosi, xaui_miso, + PORT MAP (tr_clk, tr_rst, cal_rec_clk, mm_clk, mm_rst, xaui_mosi, xaui_miso, tx_clk_arr, rx_clk_arr_out, rx_clk_arr_in, txc_tx_ready_arr, rxc_rx_ready_arr, txc_rx_channelaligned_arr, xgmii_tx_dc_arr, xgmii_rx_dc_arr, xaui_tx_arr, xaui_rx_arr); END GENERATE; - + + + gem_sim_xaui : IF c_use_sim_model=TRUE GENERATE + u0 : ENTITY work.sim_xaui + GENERIC MAP (g_nof_xaui) + PORT MAP (tr_clk, tr_rst, cal_rec_clk, mm_clk, mm_rst, xaui_mosi, xaui_miso, + tx_clk_arr, rx_clk_arr_out, rx_clk_arr_in, txc_tx_ready_arr, rxc_rx_ready_arr, txc_rx_channelaligned_arr, + xgmii_tx_dc_arr, xgmii_rx_dc_arr, + xaui_tx_arr, xaui_rx_arr); + END GENERATE; + END str; diff --git a/libraries/technology/xaui/tech_xaui_stratixiv.vhd b/libraries/technology/xaui/tech_xaui_stratixiv.vhd index f4cbe969994ffe5d5ede0e5780e3a8b0fe1ee91c..e520519669f413a8a2a64c2ec51b36fee7b2695f 100644 --- a/libraries/technology/xaui/tech_xaui_stratixiv.vhd +++ b/libraries/technology/xaui/tech_xaui_stratixiv.vhd @@ -38,6 +38,7 @@ ENTITY tech_xaui_stratixiv IS PORT ( -- Transceiver PLL reference clock tr_clk : IN STD_LOGIC; -- 156.25 MHz + tr_rst : IN STD_LOGIC; -- Calibration & reconfig clock cal_rec_clk : IN STD_LOGIC;