diff --git a/libraries/io/ddr/src/vhdl/io_ddr_driver.vhd b/libraries/io/ddr/src/vhdl/io_ddr_driver.vhd index 346fa6ea9d96688c341e366bc4b75ac0112f34dd..c4211c9f661910c66043ac319260751cc1da292e 100644 --- a/libraries/io/ddr/src/vhdl/io_ddr_driver.vhd +++ b/libraries/io/ddr/src/vhdl/io_ddr_driver.vhd @@ -172,6 +172,8 @@ BEGIN rd_src_out.valid <= ctlr_miso.rdval; rd_src_out.data <= RESIZE_DP_DATA(ctlr_miso.rddata); + wr_snk_out.xon <= ctlr_miso.done; -- xon when controller init is done so ready for access + p_state : PROCESS(prev_state, state, dvr_en, dvr_wr_not_rd, dvr_start_address, dvr_nof_data, ctlr_miso, wr_snk_in, rd_src_in, @@ -186,7 +188,6 @@ BEGIN ctlr_mosi.burstbegin <= burstbegin_evt; -- only used for legacy DDR controllers, because the controller can derive it internally by counting wr and rd accesses ctlr_mosi.burstsize <= TO_MEM_CTLR_BURSTSIZE(burst_size); -- burstsize >= 1, -- no need to hold during burst, because the Avalon constantBurstBehaviour=FALSE (default) of the DDR IP slave - wr_snk_out.xon <= '1'; -- xon is fixed '1' wr_snk_out.ready <= '0'; nxt_dvr_done <= '0'; nxt_cur_address <= cur_address;