Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
H
HDL
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Jira
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
RTSD
HDL
Commits
bd06c78b
Commit
bd06c78b
authored
3 years ago
by
Reinier van der Walle
Browse files
Options
Downloads
Patches
Plain Diff
Updated jesd IP for e2sg
parent
331c8264
Branches
Branches containing commit
No related tags found
1 merge request
!170
fixed bug in common_areset and synchronized reset signals in
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
libraries/technology/ip_arria10_e2sg/jesd204b/ip_arria10_e2sg_jesd204b.vhd
+51
-25
51 additions, 25 deletions
...ogy/ip_arria10_e2sg/jesd204b/ip_arria10_e2sg_jesd204b.vhd
with
51 additions
and
25 deletions
libraries/technology/ip_arria10_e2sg/jesd204b/ip_arria10_e2sg_jesd204b.vhd
+
51
−
25
View file @
bd06c78b
...
...
@@ -101,11 +101,14 @@ ARCHITECTURE str OF ip_arria10_e2sg_jesd204b IS
SIGNAL
dev_lane_aligned_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rx_csr_lane_powerdown_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
xcvr_rst_ctrl_rx_ready_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rx_xcvr_ready_in_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rx_xcvr_ready_in_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
pll_reset_async_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
pll_reset_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
xcvr_rst_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
)
:
=
(
OTHERS
=>
'1'
);
SIGNAL
rx_avs_rst_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rxlink_rst_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rx_avs_rst_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rxlink_rst_async_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rxlink_rst_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rxframe_rst_async_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rxframe_rst_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rx_avs_rst_n_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
);
SIGNAL
rxlink_rst_n_arr
:
STD_LOGIC_VECTOR
(
g_nof_streams
-1
DOWNTO
0
);
...
...
@@ -117,8 +120,6 @@ ARCHITECTURE str OF ip_arria10_e2sg_jesd204b IS
SIGNAL
jesd204b_sysref_2
:
STD_LOGIC
;
SIGNAL
jesd204b_sysref_frameclk_1
:
STD_LOGIC
;
SIGNAL
jesd204b_sysref_frameclk_2
:
STD_LOGIC
;
SIGNAL
jesd204b_sysref_linkclk_1
:
STD_LOGIC
;
SIGNAL
jesd204b_sysref_linkclk_2
:
STD_LOGIC
;
-- Data path
SIGNAL
jesd204b_rx_link_data_arr
:
STD_LOGIC_VECTOR
(
c_jesd204b_rx_data_w
*
g_nof_streams
-1
DOWNTO
0
);
...
...
@@ -176,7 +177,7 @@ ARCHITECTURE str OF ip_arria10_e2sg_jesd204b IS
rx_islockedtodata
:
out
std_logic_vector
(
0
downto
0
);
-- rx_is_lockedtodata
rx_serial_data
:
in
std_logic_vector
(
0
downto
0
)
:
=
(
others
=>
'X'
);
-- rx_serial_data
rxlink_clk
:
in
std_logic
:
=
'X'
;
-- clk
rxlink_rst_n_reset_n
:
in
std_logic
:
=
'X'
;
-- reset_n
rxlink_rst_n_reset_n
:
in
std_logic
:
=
'X'
;
-- reset_n
rxphy_clk
:
out
std_logic_vector
(
0
downto
0
);
-- export
sof
:
out
std_logic_vector
(
3
downto
0
);
-- export
somf
:
out
std_logic_vector
(
c_jesd204b_rx_somf_w
-1
downto
0
);
-- export
...
...
@@ -328,16 +329,43 @@ BEGIN
reset2_dsrt_qual
=>
'1'
,
-- Tied to '1' in example design. Tx xcvr is not used.
reset5_dsrt_qual
=>
rx_xcvr_ready_in_arr
(
i
),
reset_in0
=>
mm_rst
,
reset_out0
=>
pll_reset_arr
(
i
),
-- Use channel 0 to reset the core pll
reset_out0
=>
pll_reset_
async_
arr
(
i
),
-- Use channel 0 to reset the core pll
reset_out1
=>
xcvr_rst_arr
(
i
),
-- Use channel 1 to reset the transceiver reset controller
reset_out2
=>
open
,
reset_out3
=>
open
,
reset_out4
=>
open
,
reset_out5
=>
rx_avs_rst_arr
(
i
),
reset_out6
=>
rxlink_rst_arr
(
i
),
reset_out7
=>
rxframe_rst_arr
(
i
)
reset_out5
=>
rx_avs_rst_arr
(
i
),
-- mm_clk domain
reset_out6
=>
rxlink_rst_
async_
arr
(
i
),
reset_out7
=>
rxframe_rst_
async_
arr
(
i
)
);
-- synchronize pll_reset
u_common_areset_pll
:
ENTITY
common_lib
.
common_areset
PORT
MAP
(
in_rst
=>
pll_reset_async_arr
(
i
),
clk
=>
jesd204b_refclk
,
out_rst
=>
pll_reset_arr
(
i
)
);
-- No need to synchronize xcvr_rst as it is synchronized in ip_arria10_e1sg_jesd204b_rx_xcvr_reset_control_12
-- synchronize rxlink reset
u_common_areset_rxlink
:
ENTITY
common_lib
.
common_areset
PORT
MAP
(
in_rst
=>
rxlink_rst_async_arr
(
i
),
clk
=>
rxlink_clk
,
out_rst
=>
rxlink_rst_arr
(
i
)
);
-- synchronize rxframe reset
u_common_areset_rxframe
:
ENTITY
common_lib
.
common_areset
PORT
MAP
(
in_rst
=>
rxframe_rst_async_arr
(
i
),
clk
=>
rxframe_clk
,
out_rst
=>
rxframe_rst_arr
(
i
)
);
rx_xcvr_ready_in_arr
(
i
)
<=
'1'
when
rx_csr_lane_powerdown_arr
(
i
)
=
'1'
OR
xcvr_rst_ctrl_rx_ready_arr
(
i
)
=
'1'
else
'0'
;
-- Invert thr active-low resets
...
...
@@ -399,7 +427,6 @@ BEGIN
END
IF
;
END
PROCESS
;
-----------------------------------------------------------------------------
-- Move sysref from rxlink_clk to rxframe_clk
-----------------------------------------------------------------------------
...
...
@@ -412,7 +439,7 @@ BEGIN
ELSE
IF
rising_edge
(
rxframe_clk
)
THEN
jesd204b_sysref_frameclk_1
<=
jesd204b_sysref_2
;
-- sysref from rxlink_clk domain
jesd204b_sysref_frameclk_2
<=
jesd204b_sysref_
link
clk_1
;
jesd204b_sysref_frameclk_2
<=
jesd204b_sysref_
frame
clk_1
;
IF
jesd204b_sysref_frameclk_1
=
'1'
and
jesd204b_sysref_frameclk_2
=
'0'
THEN
rx_sysref
<=
'1'
;
ELSE
...
...
@@ -435,25 +462,24 @@ BEGIN
);
END
GENERATE
;
p_pll_locked_reg
:
PROCESS
(
mm_rst
,
mm_clk
)
BEGIN
IF
mm_rst
=
'1'
THEN
core_pll_locked_reg
<=
'0'
;
ELSE
IF
rising_edge
(
mm_clk
)
THEN
core_pll_locked_reg
<=
core_pll_locked
;
END
IF
;
END
IF
;
END
PROCESS
;
u_common_areset_pll_locked
:
ENTITY
common_lib
.
common_areset
GENERIC
MAP
(
g_rst_level
=>
'0'
-- synchronises the rising edge input.
)
PORT
MAP
(
in_rst
=>
core_pll_locked
,
clk
=>
mm_clk
,
out_rst
=>
core_pll_locked_reg
);
-- Transceiver reset controller. Use g_nof_streams out of 12 channels. Receive only
-- Clock set to 100MHz (use
mm
_clk)
-- Clock set to 100MHz (use
rxlink
_clk)
u_ip_arria10_e2sg_jesd204b_rx_xcvr_reset_control
:
ip_arria10_e2sg_jesd204b_rx_xcvr_reset_control_12
PORT
MAP
(
clock
=>
mm
_clk
,
reset
=>
xcvr_rst_arr
(
0
),
-- From Reset Sequencer output1 as per example design
clock
=>
rxlink
_clk
,
reset
=>
xcvr_rst_arr
(
0
),
-- From Reset Sequencer output1 as per example design
, the reset input is synchronised internally.
rx_analogreset
=>
rx_analogreset_arr
,
-- output to reset RX PMA. Release before deasserting link and avs resets (Intel JESD204B-UG p70)
rx_cal_busy
=>
rx_cal_busy_arr
,
-- input from PHY
rx_digitalreset
=>
rx_digitalreset_arr
,
-- output to reset RX PCS. Release before deasserting link and avs resets (Intel JESD204B-UG p70)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
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