Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
E
EtherBone Core
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Releases
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Projects
EtherBone Core
Commits
ec7602d7
Commit
ec7602d7
authored
4 years ago
by
Mathias Kreider
Browse files
Options
Downloads
Patches
Plain Diff
EBM: fixed bogus TX data injection when send is called on empty EB data
parent
90d405a9
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
hdl/eb_master_core/eb_framer.vhd
+3
-1
3 additions, 1 deletion
hdl/eb_master_core/eb_framer.vhd
with
3 additions
and
1 deletion
hdl/eb_master_core/eb_framer.vhd
+
3
−
1
View file @
ec7602d7
...
@@ -66,6 +66,7 @@ signal s_slave_stall,
...
@@ -66,6 +66,7 @@ signal s_slave_stall,
r_slave_ack
:
std_logic
;
r_slave_ack
:
std_logic
;
signal
send_now
,
signal
send_now
,
s_tx_send_now
,
s_tx_send_now
,
s_not_idle
,
r_tx_send_now
:
std_logic
;
-- queued version
r_tx_send_now
:
std_logic
;
-- queued version
...
@@ -223,13 +224,14 @@ begin
...
@@ -223,13 +224,14 @@ begin
s_tx_push
<=
(
tx_cyc
and
tx_stb
and
not
master_i
.
stall
);
s_tx_push
<=
(
tx_cyc
and
tx_stb
and
not
master_i
.
stall
);
op_fifo_pop
<=
(
s_tx_push
or
send_now
)
and
r_pop_cmd
and
not
op_fifo_empty
;
op_fifo_pop
<=
(
s_tx_push
or
send_now
)
and
r_pop_cmd
and
not
op_fifo_empty
;
op_fifo_push
<=
((
slave_i
.
cyc
and
slave_i
.
stb
and
not
s_slave_stall
)
or
s_tx_send_now
)
and
not
op_fifo_full
;
op_fifo_push
<=
((
slave_i
.
cyc
and
slave_i
.
stb
and
not
s_slave_stall
)
or
(
s_tx_send_now
and
s_not_idle
)
)
and
not
op_fifo_full
;
op_fifo_d
(
31
downto
0
)
<=
slave_i
.
dat
when
slave_i
.
we
=
'1'
op_fifo_d
(
31
downto
0
)
<=
slave_i
.
dat
when
slave_i
.
we
=
'1'
else
slave_i
.
adr
;
else
slave_i
.
adr
;
op_fifo_d
(
32
)
<=
s_tx_send_now
;
op_fifo_d
(
32
)
<=
s_tx_send_now
;
--prolong tx_send_now if the buffer is full until it can be written
--prolong tx_send_now if the buffer is full until it can be written
s_tx_send_now
<=
r_tx_send_now
or
tx_send_now_i
;
s_tx_send_now
<=
r_tx_send_now
or
tx_send_now_i
;
s_not_idle
<=
'0'
when
r_state
=
S_IDLE
else
'1'
;
-- send must be in order, so it comes from the op buffer
-- send must be in order, so it comes from the op buffer
send_now
<=
op_fifo_q
(
32
)
when
op_fifo_empty
=
'0'
else
'0'
;
send_now
<=
op_fifo_q
(
32
)
when
op_fifo_empty
=
'0'
else
'0'
;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment