Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Rimfaxe
vme_core
Commits
475ab6f8
Commit
475ab6f8
authored
Aug 27, 2020
by
Michael Munch
Browse files
Fire data strobe when ADDR_ERR or TRANSFER_ERR
parent
214f5552
Pipeline
#26422
failed with stage
in 38 seconds
Changes
1
Pipelines
1
Show whitespace changes
Inline
Side-by-side
src/vme_data_bus.vhd
View file @
475ab6f8
...
...
@@ -200,7 +200,7 @@ architecture rtl of vme_data_bus is
LATCH_DATA
,
-- 6
BLT_READ_WAIT
,
-- 7
BLT_WRITE_WAIT
,
-- 8
IDLE_DELAY
,
-- 9
FIRE_DATA_STROBE
,
-- 9
TIMEOUT
,
-- 10
TIMEOUT_WAIT
,
-- 11
BERR_HIGH_WAIT
-- 12
...
...
@@ -336,10 +336,10 @@ begin
if
addr_mode
=
ADDR_ERR
then
int_err_code
<=
c_ERR_ADDR_MODE
;
state
<=
IDLE_DELAY
;
state
<=
FIRE_DATA_STROBE
;
elsif
transfer_mode
=
TRANSFER_ERR
then
int_err_code
<=
c_ERR_TRANSFER_MODE
;
state
<=
IDLE_DELAY
;
state
<=
FIRE_DATA_STROBE
;
else
-- Table 2-4 and Table 2-29
-- A[0] = LWORD*
...
...
@@ -659,11 +659,13 @@ begin
-- are not working on behalf of the client.
-- Delay
return to IDLE.
when
IDLE_DELAY
=>
-- Delay
firing of data strobe
when
FIRE_DATA_STROBE
=>
state
<=
IDLE
;
int_data_strobe
<=
c_DATA_PRESENT
;
busy
<=
'0'
;
-- Timeout! Something is preventing the state machine
-- from completing. Either an external error (e.g. a
-- non-responding module), or a bug in this code.
...
...
@@ -737,7 +739,6 @@ begin
if
(
last_ds_n
/=
vme_ds_n_i
or
--
state
=
IDLE
or
state
=
IDLE_DELAY
or
state
=
TIMEOUT
or
state
=
TIMEOUT_WAIT
or
state
=
BERR_HIGH_WAIT
)
then
...
...
@@ -848,14 +849,14 @@ begin
-- psl when_unsupported_addr_mode_issue_error_code:
-- assert always {state = IDLE and int_vme_go = '1' and addr_mode = ADDR_ERR}
-- |=> int_err_code = c_ERR_ADDR_MODE
-- and state =
IDLE_DELAY
;
-- and state =
FIRE_DATA_STROBE
;
-- psl when_unsupported_transfer_mode_issue_error_code:
-- assert always {state = IDLE and int_vme_go = '1'
-- and transfer_mode = TRANSFER_ERR
-- and addr_mode /= ADDR_ERR}
-- |=> int_err_code = c_ERR_TRANSFER_MODE
-- and state =
IDLE_DELAY
;
-- and state =
FIRE_DATA_STROBE
;
-- -- If DTACK* is LOW after AS_DELAY,
-- -- then we must wait for data lines to clear.
...
...
Write
Preview
Supports
Markdown
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