ddrctrl reacts to wr_fifo_usedw
Compare changes
@@ -116,6 +116,7 @@ ARCHITECTURE rtl OF ddrctrl_controller IS
@@ -116,6 +116,7 @@ ARCHITECTURE rtl OF ddrctrl_controller IS
@@ -127,7 +128,7 @@ ARCHITECTURE rtl OF ddrctrl_controller IS
@@ -127,7 +128,7 @@ ARCHITECTURE rtl OF ddrctrl_controller IS
CONSTANT c_t_reg_init : t_reg := (RESET, '0', '0', TO_UVEC(g_max_adr, c_adr_w), (OTHERS => '0'), 0, '1', '1', '0', (OTHERS => '0'), 0, '0', c_mem_ctlr_mosi_rst, c_dp_sosi_init);
@@ -140,7 +141,7 @@ BEGIN
@@ -140,7 +141,7 @@ BEGIN
p_state : PROCESS(q_reg, rst, inp_of, inp_sosi, inp_adr, inp_bsn_adr, inp_data_stopped, dvr_miso, rd_fifo_usedw, stop_in)
@@ -175,31 +176,33 @@ BEGIN
@@ -175,31 +176,33 @@ BEGIN
IF TO_UINT(wr_fifo_usedw) > g_burstsize AND dvr_miso.done = '1' AND v.wr_burst_en = '1' AND q_reg.dvr_mosi.burstbegin = '0' THEN
v.dvr_mosi.address(c_adr_w-1 DOWNTO 0) := TO_UVEC(TO_UINT(q_reg.last_adr_to_write_to(c_adr_w-1 DOWNTO 0))+q_reg.stop_burstsize, c_adr_w);
v.dvr_mosi.burstsize(dvr_mosi.burstsize'length-1 DOWNTO 0) := TO_UVEC(g_burstsize-q_reg.stop_burstsize, dvr_mosi.burstsize'length);
-- this state generates the rest of the write bursts, it also checks if there is a stop signal or if it needs to stop writing.
IF TO_UINT(wr_fifo_usedw) > g_burstsize AND dvr_miso.done = '1' AND q_reg.wr_burst_en = '1' AND q_reg.dvr_mosi.burstbegin = '0' THEN
v.dvr_mosi.address(c_bitshift_w-1 DOWNTO 0) := c_zeros(c_bitshift_w-1 DOWNTO 0); -- makes sure that a burst is only started on a multiple of g_burstsize
@@ -209,8 +212,10 @@ BEGIN
@@ -209,8 +212,10 @@ BEGIN
IF TO_UVEC(inp_adr, c_adr_w)(c_bitshift_w-1 DOWNTO 0) = c_zeros AND q_reg.dvr_mosi.burstbegin = '0'THEN
@@ -241,17 +246,20 @@ BEGIN
@@ -241,17 +246,20 @@ BEGIN
IF TO_UVEC(inp_adr, c_adr_w)(c_bitshift_w-1 DOWNTO 0) = c_zeros AND q_reg.dvr_mosi.burstbegin = '0'THEN
v.dvr_mosi.address(c_bitshift_w-1 DOWNTO 0) := c_zeros(c_bitshift_w-1 DOWNTO 0); -- makes sure that a burst is only started on a multiple of g_burstsize
@@ -278,7 +286,7 @@ BEGIN
@@ -278,7 +286,7 @@ BEGIN
@@ -288,17 +296,20 @@ BEGIN
@@ -288,17 +296,20 @@ BEGIN
IF TO_UVEC(inp_adr, c_adr_w)(c_bitshift_w-1 DOWNTO 0) = c_zeros AND q_reg.dvr_mosi.burstbegin = '0'THEN
v.dvr_mosi.address(c_bitshift_w-1 DOWNTO 0) := c_zeros(c_bitshift_w-1 DOWNTO 0); -- makes sure that a burst is only started on a multiple of g_burstsize