Commit 461b30fe authored by Tristan Gingold's avatar Tristan Gingold

Relax timing pressure on dma_ctrl_direction

parent c6293643
......@@ -291,6 +291,8 @@ begin
dma_attrib_chain_reg <= dma_async_attrib_chain;
dma_attrib_dir_reg <= dma_async_attrib_dir;
dma_ctrl_byte_swap_reg <= dma_ctrl_byte_swap;
-- Set it early to ease timing.
dma_ctrl_direction_o <= dma_async_attrib_dir;
-- Starts a new transfer
dma_ctrl_current_state <= DMA_START_TRANSFER;
end if;
......
......@@ -255,6 +255,7 @@ architecture rtl of gn4124_core is
signal dma_ctrl_start_p2l : std_logic;
signal dma_ctrl_start_next : std_logic;
signal dma_ctrl_direction : std_logic;
signal dma_ctrl_direction_d : std_logic;
signal dma_ctrl_done : std_logic;
signal dma_ctrl_error : std_logic;
......@@ -669,10 +670,17 @@ begin
p2l_dma_in.rty <= dma_rty_i;
-- NOTE: dma_ctrl_direction crosses clock domains.
p_dma_wb_mux : process (dma_ack_i, dma_ctrl_direction, dma_stall_i,
process (dma_clk_i)
begin
if rising_edge(dma_clk_i) then
dma_ctrl_direction_d <= dma_ctrl_direction;
end if;
end process;
p_dma_wb_mux : process (dma_ack_i, dma_ctrl_direction_d, dma_stall_i,
l2p_dma_out, p2l_dma_out)
begin
if (dma_ctrl_direction = '0') then
if dma_ctrl_direction_d = '0' then
dma_adr_o <= l2p_dma_out.adr;
dma_dat_o <= l2p_dma_out.dat;
dma_sel_o <= l2p_dma_out.sel;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment