Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
G
Gennum GN4124 core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
Gennum GN4124 core
Commits
c211ed08
Commit
c211ed08
authored
Aug 29, 2019
by
Tristan Gingold
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
l2p_dma_master: minor refactoring (remove in-between signal).
parent
d601caf2
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
21 additions
and
32 deletions
+21
-32
l2p_dma_master.vhd
hdl/rtl/l2p_dma_master.vhd
+21
-32
No files found.
hdl/rtl/l2p_dma_master.vhd
View file @
c211ed08
...
...
@@ -132,10 +132,6 @@ architecture behavioral of l2p_dma_master is
signal
l2p_last_packet
:
std_logic
;
signal
l2p_lbe_header
:
std_logic_vector
(
3
downto
0
);
signal
ldm_arb_data_l
:
std_logic_vector
(
31
downto
0
)
:
=
(
others
=>
'0'
);
signal
ldm_arb_valid
:
std_logic
;
signal
data_fifo_valid
:
std_logic
;
signal
addr_fifo_valid
:
std_logic
;
-- Counter
...
...
@@ -164,9 +160,6 @@ begin
data_i
=>
fifo_rst_n
,
synced_o
=>
wb_fifo_rst_n
);
ldm_arb_valid_o
<=
ldm_arb_valid
;
ldm_arb_data_o
<=
ldm_arb_data_l
;
---------------------
-- L2P FSM
---------------------
...
...
@@ -176,13 +169,12 @@ begin
if
(
rst_n_i
=
'0'
)
then
l2p_dma_current_state
<=
L2P_IDLE
;
ldm_arb_req_o
<=
'0'
;
ldm_arb_valid
<=
'0'
;
ldm_arb_valid
_o
<=
'0'
;
ldm_arb_dframe_o
<=
'0'
;
data_fifo_rd
<=
'0'
;
dma_ctrl_done_o
<=
'0'
;
l2p_edb_o
<=
'0'
;
fifo_rst_t
<=
'1'
;
data_fifo_valid
<=
'0'
;
else
case
l2p_dma_current_state
is
...
...
@@ -191,23 +183,20 @@ begin
l2p_edb_o
<=
'0'
;
fifo_rst_t
<=
'0'
;
ldm_arb_req_o
<=
'0'
;
ldm_arb_data_
l
<=
(
others
=>
'0'
);
ldm_arb_valid
<=
'0'
;
ldm_arb_data_
o
<=
(
others
=>
'0'
);
ldm_arb_valid
_o
<=
'0'
;
ldm_arb_dframe_o
<=
'0'
;
data_fifo_rd
<=
'0'
;
data_fifo_valid
<=
'0'
;
dma_ctrl_done_o
<=
'0'
;
data_fifo_valid
<=
'0'
;
if
(
dma_ctrl_start_l2p_i
=
'1'
)
then
l2p_dma_current_state
<=
L2P_SETUP
;
end
if
;
when
L2P_SETUP
=>
ldm_arb_valid
<=
'0'
;
ldm_arb_valid
_o
<=
'0'
;
ldm_arb_dframe_o
<=
'0'
;
data_fifo_rd
<=
'0'
;
data_fifo_valid
<=
'0'
;
l2p_timeout_cnt
<=
(
others
=>
'0'
);
if
(
l2p_rdy_i
=
'1'
)
then
l2p_dma_current_state
<=
L2P_HEADER
;
...
...
@@ -215,12 +204,12 @@ begin
end
if
;
when
L2P_HEADER
=>
ldm_arb_valid
<=
'0'
;
ldm_arb_valid
_o
<=
'0'
;
if
(
arb_ldm_gnt_i
=
'1'
and
l_wr_rdy_i
=
'1'
)
then
ldm_arb_req_o
<=
'0'
;
-- Bus has been granted
-- Send header
ldm_arb_data_
l
<=
s_l2p_header
;
ldm_arb_valid
<=
'1'
;
ldm_arb_data_
o
<=
s_l2p_header
;
ldm_arb_valid
_o
<=
'1'
;
ldm_arb_dframe_o
<=
'1'
;
-- Keep asserted to stay bus master
if
(
l2p_64b_address
=
'1'
)
then
l2p_dma_current_state
<=
L2P_ADDR_H
;
...
...
@@ -230,15 +219,15 @@ begin
end
if
;
when
L2P_ADDR_H
=>
ldm_arb_data_
l
<=
l2p_address_h
;
ldm_arb_data_
o
<=
l2p_address_h
;
l2p_dma_current_state
<=
L2P_ADDR_L
;
when
L2P_ADDR_L
=>
ldm_arb_data_
l
<=
l2p_address_l
;
ldm_arb_data_
o
<=
l2p_address_l
;
l2p_dma_current_state
<=
L2P_DATA
;
when
L2P_DATA
=>
ldm_arb_data_
l
<=
x"DEADBEEF"
;
ldm_arb_data_
o
<=
x"DEADBEEF"
;
if
(
data_fifo_empty
=
'0'
and
l2p_rdy_i
=
'1'
)
then
data_fifo_rd
<=
'1'
;
else
...
...
@@ -246,18 +235,19 @@ begin
end
if
;
if
(
data_fifo_rd
=
'1'
and
data_fifo_empty
=
'0'
and
l2p_data_cnt
=
1
)
then
ldm_arb_data_l
<=
f_byte_swap
(
g_BYTE_SWAP
,
data_fifo_dout
,
l2p_byte_swap
);
ldm_arb_valid
<=
'1'
;
ldm_arb_data_o
<=
f_byte_swap
(
g_BYTE_SWAP
,
data_fifo_dout
,
l2p_byte_swap
);
ldm_arb_valid_o
<=
'1'
;
-- DFRAME is released one clock before the packet ends.
ldm_arb_dframe_o
<=
'0'
;
l2p_dma_current_state
<=
L2P_LAST_DATA
;
data_fifo_rd
<=
'0'
;
-- Don't read too much
elsif
(
data_fifo_rd
=
'1'
and
data_fifo_empty
=
'0'
and
l2p_data_cnt
>
1
)
then
ldm_arb_data_
l
<=
f_byte_swap
(
g_BYTE_SWAP
,
data_fifo_dout
,
l2p_byte_swap
);
ldm_arb_valid
<=
'1'
;
ldm_arb_data_
o
<=
f_byte_swap
(
g_BYTE_SWAP
,
data_fifo_dout
,
l2p_byte_swap
);
ldm_arb_valid
_o
<=
'1'
;
ldm_arb_dframe_o
<=
'1'
;
else
ldm_arb_data_
l
<=
f_byte_swap
(
g_BYTE_SWAP
,
data_fifo_dout
,
l2p_byte_swap
);
ldm_arb_valid
<=
'0'
;
ldm_arb_data_
o
<=
f_byte_swap
(
g_BYTE_SWAP
,
data_fifo_dout
,
l2p_byte_swap
);
ldm_arb_valid
_o
<=
'0'
;
ldm_arb_dframe_o
<=
'1'
;
end
if
;
...
...
@@ -274,11 +264,10 @@ begin
end
if
;
when
L2P_LAST_DATA
=>
ldm_arb_data_
l
<=
x"DEADBEEF"
;
ldm_arb_data_
o
<=
x"DEADBEEF"
;
ldm_arb_dframe_o
<=
'0'
;
ldm_arb_valid
<=
'0'
;
ldm_arb_valid
_o
<=
'0'
;
data_fifo_rd
<=
'0'
;
data_fifo_valid
<=
'0'
;
if
(
dma_ctrl_abort_i
=
'1'
or
tx_error_i
=
'1'
)
then
l2p_dma_current_state
<=
L2P_IDLE
;
dma_ctrl_done_o
<=
'1'
;
...
...
@@ -290,9 +279,9 @@ begin
end
if
;
when
L2P_ERROR
=>
ldm_arb_data_
l
<=
x"DEADBEEF"
;
ldm_arb_data_
o
<=
x"DEADBEEF"
;
ldm_arb_dframe_o
<=
'0'
;
ldm_arb_valid
<=
'1'
;
ldm_arb_valid
_o
<=
'1'
;
l2p_edb_o
<=
'1'
;
fifo_rst_t
<=
'1'
;
l2p_dma_current_state
<=
L2P_IDLE
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment