- Corrected write timing
This commit is contained in:
@@ -70,7 +70,7 @@ constant ctrl_command_read : std_logic_vector(2 downto 0) := "110";
|
|||||||
|
|
||||||
-- DDR-side FSM
|
-- DDR-side FSM
|
||||||
type ctrl_states is (S_RESET, S_INITIALIZE, S_WAITINITDONE, S_IDLE, S_REFRESH, S_REQUEST_INIT, S_WRITE1,
|
type ctrl_states is (S_RESET, S_INITIALIZE, S_WAITINITDONE, S_IDLE, S_REFRESH, S_REQUEST_INIT, S_WRITE1,
|
||||||
S_WRITE2, S_WRITE3, S_WRITE4, S_WRITE_END1, S_WRITE_END2, S_READ1, S_READ2,
|
S_WRITE2, S_WRITE3, S_WRITE_END1, S_WRITE_END2, S_WRITE_END3, S_READ1, S_READ2,
|
||||||
S_READ3, S_READ4, S_READ5, S_READ_END1, S_READ_END2);
|
S_READ3, S_READ4, S_READ5, S_READ_END1, S_READ_END2);
|
||||||
signal ctrl_state : ctrl_states := S_RESET;
|
signal ctrl_state : ctrl_states := S_RESET;
|
||||||
signal burst_start_adr : std_ulogic_vector(12 downto 0) := (others => '-');
|
signal burst_start_adr : std_ulogic_vector(12 downto 0) := (others => '-');
|
||||||
@@ -143,13 +143,13 @@ ctrl_fsm_state : process(ddr2_clk180)
|
|||||||
ctrl_state <= S_WRITE3;
|
ctrl_state <= S_WRITE3;
|
||||||
end if;
|
end if;
|
||||||
when S_WRITE3 =>
|
when S_WRITE3 =>
|
||||||
ctrl_state <= S_WRITE4;
|
|
||||||
when S_WRITE4 =>
|
|
||||||
ctrl_state <= S_WRITE2;
|
ctrl_state <= S_WRITE2;
|
||||||
|
|
||||||
when S_WRITE_END1 =>
|
when S_WRITE_END1 =>
|
||||||
ctrl_state <= S_WRITE_END2;
|
ctrl_state <= S_WRITE_END2;
|
||||||
when S_WRITE_END2 =>
|
when S_WRITE_END2 =>
|
||||||
|
ctrl_state <= S_WRITE_END3;
|
||||||
|
when S_WRITE_END3 =>
|
||||||
if ctrl_cmd_ack = '0' then
|
if ctrl_cmd_ack = '0' then
|
||||||
ctrl_state <= S_IDLE;
|
ctrl_state <= S_IDLE;
|
||||||
end if;
|
end if;
|
||||||
@@ -243,7 +243,7 @@ ctrl_fsm_out : process(ctrl_state, ddr2_reset, we, ctrl_cmd_ack, fifo_from_sys_v
|
|||||||
if fifo_from_sys_valid = '0' or row_addr /= burst_start_adr or
|
if fifo_from_sys_valid = '0' or row_addr /= burst_start_adr or
|
||||||
we = '0' or ctrl_auto_ref_req = '1' then
|
we = '0' or ctrl_auto_ref_req = '1' then
|
||||||
-- next request incompatible with burst type, or auto refresh requested
|
-- next request incompatible with burst type, or auto refresh requested
|
||||||
ctrl_burst_done_d <= '1';
|
|
||||||
else
|
else
|
||||||
ddr_dmask_en <= '1';
|
ddr_dmask_en <= '1';
|
||||||
ddr_dout_en <= '1';
|
ddr_dout_en <= '1';
|
||||||
@@ -257,11 +257,11 @@ ctrl_fsm_out : process(ctrl_state, ddr2_reset, we, ctrl_cmd_ack, fifo_from_sys_v
|
|||||||
ddr_dout_high <= '1';
|
ddr_dout_high <= '1';
|
||||||
ddr_address_en <= '1';
|
ddr_address_en <= '1';
|
||||||
ctrl_command_register_d <= ctrl_command_write;
|
ctrl_command_register_d <= ctrl_command_write;
|
||||||
when S_WRITE4 =>
|
|
||||||
ctrl_command_register_d <= ctrl_command_write;
|
|
||||||
fifo_from_sys_read_int <= '1';
|
fifo_from_sys_read_int <= '1';
|
||||||
when S_WRITE_END1 =>
|
when S_WRITE_END1 =>
|
||||||
ctrl_burst_done_d <= '1';
|
ctrl_burst_done_d <= '1';
|
||||||
|
when S_WRITE_END2 =>
|
||||||
|
ctrl_burst_done_d <= '1';
|
||||||
|
|
||||||
when S_READ1 =>
|
when S_READ1 =>
|
||||||
ctrl_command_register_d <= ctrl_command_read;
|
ctrl_command_register_d <= ctrl_command_read;
|
||||||
|
|||||||
Reference in New Issue
Block a user