Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
W
White Rabbit Switch - Gateware
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
12
Issues
12
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Projects
White Rabbit Switch - Gateware
Commits
6b3c0e71
Commit
6b3c0e71
authored
Jun 19, 2018
by
Tomasz Wlostowski
Committed by
Grzegorz Daniluk
Aug 30, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wrsw_rt_subsystem: allow externally sampled RX clocks (DDMTD inside the PHY module)
parent
205a4500
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
65 additions
and
58 deletions
+65
-58
wrsw_rt_subsystem.vhd
modules/wrsw_rt_subsystem/wrsw_rt_subsystem.vhd
+65
-58
No files found.
modules/wrsw_rt_subsystem/wrsw_rt_subsystem.vhd
View file @
6b3c0e71
...
...
@@ -6,7 +6,7 @@
-- Author : Tomasz Wlostowski
-- Company : CERN BE-CO-HT
-- Created : 2012-01-10
-- Last update: 201
4-02-06
-- Last update: 201
7-06-22
-- Platform : FPGA-generic
-- Standard : VHDL
-------------------------------------------------------------------------------
...
...
@@ -45,21 +45,23 @@ use work.wrs_sdb_pkg.all;
entity
wrsw_rt_subsystem
is
generic
(
g_num_rx_clocks
:
integer
;
g_num_ext_clks
:
integer
;
g_simulation
:
boolean
);
g_num_rx_clocks
:
integer
;
g_num_ext_clks
:
integer
;
g_simulation
:
boolean
;
g_use_sampled_rx_clocks
:
boolean
);
port
(
clk_ref_i
:
in
std_logic
;
clk_sys_i
:
in
std_logic
;
clk_dmtd_i
:
in
std_logic
;
clk_rx_i
:
in
std_logic_vector
(
g_num_rx_clocks
-1
downto
0
);
clk_ext_i
:
in
std_logic
;
clk_ext_mul_i
:
in
std_logic_vector
(
g_num_ext_clks
-1
downto
0
);
clk_ext_mul_locked_i
:
in
std_logic
;
clk_aux_p_o
:
out
std_logic
;
clk_aux_n_o
:
out
std_logic
;
clk_500_o
:
out
std_logic
;
clk_ref_i
:
in
std_logic
;
clk_sys_i
:
in
std_logic
;
clk_dmtd_i
:
in
std_logic
;
clk_rx_i
:
in
std_logic_vector
(
g_num_rx_clocks
-1
downto
0
);
clk_rx_sampled_i
:
in
std_logic_vector
(
g_num_rx_clocks
-1
downto
0
);
clk_ext_i
:
in
std_logic
;
clk_ext_mul_i
:
in
std_logic_vector
(
g_num_ext_clks
-1
downto
0
);
clk_ext_mul_locked_i
:
in
std_logic
;
clk_aux_p_o
:
out
std_logic
;
clk_aux_n_o
:
out
std_logic
;
clk_500_o
:
out
std_logic
;
rst_sys_n_i
:
in
std_logic
;
rst_ref_n_i
:
in
std_logic
;
...
...
@@ -108,7 +110,7 @@ entity wrsw_rt_subsystem is
-- Wired to IODelay in the top module for precise 1-PPS out alignment
-- with clk_aux
ppsdel_tap_i
:
in
std_logic_vector
(
4
downto
0
)
:
=
(
others
=>
'0'
);
ppsdel_tap_i
:
in
std_logic_vector
(
4
downto
0
)
:
=
(
others
=>
'0'
);
ppsdel_tap_o
:
out
std_logic_vector
(
4
downto
0
);
ppsdel_tap_wr_o
:
out
std_logic
;
...
...
@@ -145,7 +147,7 @@ entity wrsw_rt_subsystem is
ljd_pll_locked_i
:
in
std_logic
;
-- Debug
spll_dbg_o
:
out
std_logic_vector
(
5
downto
0
)
spll_dbg_o
:
out
std_logic_vector
(
5
downto
0
)
);
end
wrsw_rt_subsystem
;
...
...
@@ -153,17 +155,18 @@ architecture rtl of wrsw_rt_subsystem is
component
xwr_softpll_ng
generic
(
g_tag_bits
:
integer
;
g_num_ref_inputs
:
integer
;
g_num_outputs
:
integer
;
g_num_exts
:
integer
;
g_with_debug_fifo
:
boolean
;
g_divide_input_by_2
:
boolean
;
g_reverse_dmtds
:
boolean
;
g_ref_clock_rate
:
integer
;
g_ext_clock_rate
:
integer
;
g_interface_mode
:
t_wishbone_interface_mode
;
g_address_granularity
:
t_wishbone_address_granularity
);
g_tag_bits
:
integer
;
g_num_ref_inputs
:
integer
;
g_num_outputs
:
integer
;
g_num_exts
:
integer
;
g_with_debug_fifo
:
boolean
;
g_divide_input_by_2
:
boolean
;
g_reverse_dmtds
:
boolean
;
g_ref_clock_rate
:
integer
;
g_ext_clock_rate
:
integer
;
g_use_sampled_ref_clocks
:
boolean
;
g_interface_mode
:
t_wishbone_interface_mode
;
g_address_granularity
:
t_wishbone_address_granularity
);
port
(
clk_sys_i
:
in
std_logic
;
rst_sys_n_i
:
in
std_logic
;
...
...
@@ -171,6 +174,7 @@ architecture rtl of wrsw_rt_subsystem is
rst_ext_n_i
:
in
std_logic
;
rst_dmtd_n_i
:
in
std_logic
;
clk_ref_i
:
in
std_logic_vector
(
g_num_ref_inputs
-1
downto
0
);
clk_ref_sampled_i
:
in
std_logic_vector
(
g_num_ref_inputs
-1
downto
0
);
clk_fb_i
:
in
std_logic_vector
(
g_num_outputs
-1
downto
0
);
clk_dmtd_i
:
in
std_logic
;
clk_ext_i
:
in
std_logic
;
...
...
@@ -198,18 +202,18 @@ architecture rtl of wrsw_rt_subsystem is
g_interface_mode
:
t_wishbone_interface_mode
:
=
PIPELINED
;
g_address_granularity
:
t_wishbone_address_granularity
:
=
WORD
);
port
(
rst_n_i
:
in
std_logic
;
clk_i
:
in
std_logic
;
pps_i
:
in
std_logic
;
pps_valid_i
:
in
std_logic
;
clk_aux_p_o
:
out
std_logic
;
clk_aux_n_o
:
out
std_logic
;
clk_500_o
:
out
std_logic
;
rst_n_i
:
in
std_logic
;
clk_i
:
in
std_logic
;
pps_i
:
in
std_logic
;
pps_valid_i
:
in
std_logic
;
clk_aux_p_o
:
out
std_logic
;
clk_aux_n_o
:
out
std_logic
;
clk_500_o
:
out
std_logic
;
ppsdel_tap_i
:
in
std_logic_vector
(
4
downto
0
);
ppsdel_tap_o
:
out
std_logic_vector
(
4
downto
0
);
ppsdel_tap_wr_o
:
out
std_logic
;
slave_i
:
in
t_wishbone_slave_in
;
slave_o
:
out
t_wishbone_slave_out
);
slave_i
:
in
t_wishbone_slave_in
;
slave_o
:
out
t_wishbone_slave_out
);
end
component
;
...
...
@@ -224,8 +228,8 @@ architecture rtl of wrsw_rt_subsystem is
constant
c_NUM_GPIO_PINS
:
integer
:
=
9
;
constant
c_NUM_WB_SLAVES
:
integer
:
=
9
;
constant
c_MASTER_CPU
:
integer
:
=
0
;
constant
c_MASTER_LM32
:
integer
:
=
1
;
constant
c_MASTER_CPU
:
integer
:
=
0
;
constant
c_MASTER_LM32
:
integer
:
=
1
;
constant
c_SLAVE_DPRAM
:
integer
:
=
0
;
constant
c_SLAVE_UART
:
integer
:
=
1
;
...
...
@@ -254,9 +258,9 @@ architecture rtl of wrsw_rt_subsystem is
signal
dac_out_data
,
dac_dmtd_data
:
std_logic_vector
(
15
downto
0
);
signal
dac_out_load
,
dac_dmtd_load
:
std_logic
;
signal
clk_rx_vec
:
std_logic_vector
(
g_num_rx_clocks
-1
downto
0
);
signal
pps_csync
:
std_logic
;
signal
pps_valid
:
std_logic
;
signal
clk_rx_vec
,
clk_rx_sampled_vec
:
std_logic_vector
(
g_num_rx_clocks
-1
downto
0
);
signal
pps_csync
:
std_logic
;
signal
pps_valid
:
std_logic
;
function
f_pick
(
cond
:
boolean
;
...
...
@@ -277,7 +281,8 @@ architecture rtl of wrsw_rt_subsystem is
begin
-- rtl
clk_rx_vec
(
g_num_rx_clocks
-1
downto
0
)
<=
clk_rx_i
;
clk_rx_vec
(
g_num_rx_clocks
-1
downto
0
)
<=
clk_rx_i
;
clk_rx_sampled_vec
(
g_num_rx_clocks
-1
downto
0
)
<=
clk_rx_sampled_i
;
cnx_slave_in
(
c_MASTER_CPU
)
<=
wb_i
;
wb_o
<=
cnx_slave_out
(
c_MASTER_CPU
);
...
...
@@ -344,23 +349,25 @@ begin -- rtl
U_SoftPLL
:
xwr_softpll_ng
generic
map
(
g_tag_bits
=>
22
,
g_interface_mode
=>
PIPELINED
,
g_address_granularity
=>
BYTE
,
g_num_ref_inputs
=>
g_num_rx_clocks
,
g_num_outputs
=>
1
,
g_num_exts
=>
g_num_ext_clks
,
g_reverse_dmtds
=>
true
,
g_divide_input_by_2
=>
false
,
g_with_debug_fifo
=>
true
,
g_ref_clock_rate
=>
62500000
,
g_ext_clock_rate
=>
10000000
)
g_tag_bits
=>
22
,
g_interface_mode
=>
PIPELINED
,
g_address_granularity
=>
BYTE
,
g_num_ref_inputs
=>
g_num_rx_clocks
,
g_num_outputs
=>
1
,
g_num_exts
=>
g_num_ext_clks
,
g_reverse_dmtds
=>
true
,
g_divide_input_by_2
=>
false
,
g_with_debug_fifo
=>
true
,
g_ref_clock_rate
=>
62500000
,
g_ext_clock_rate
=>
10000000
,
g_use_sampled_ref_clocks
=>
g_use_sampled_rx_clocks
)
port
map
(
clk_sys_i
=>
clk_sys_i
,
rst_sys_n_i
=>
rst_sys_n_i
,
rst_ref_n_i
=>
rst_ref_n_i
,
rst_ext_n_i
=>
rst_ext_n_i
,
rst_dmtd_n_i
=>
rst_dmtd_n_i
,
clk_ref_sampled_i
=>
clk_rx_sampled_vec
,
clk_ref_i
=>
clk_rx_vec
,
clk_fb_i
(
0
)
=>
clk_ref_i
,
clk_dmtd_i
=>
clk_dmtd_i
,
...
...
@@ -406,7 +413,7 @@ begin -- rtl
tm_cycles_o
=>
tm_cycles_o
,
tm_time_valid_o
=>
tm_time_valid_o
);
pps_csync_o
<=
pps_csync
;
pps_csync_o
<=
pps_csync
;
pps_valid_o
<=
pps_valid
;
cpu_irq_vec
(
31
downto
1
)
<=
(
others
=>
'0'
);
...
...
@@ -476,8 +483,8 @@ begin -- rtl
slave_i
=>
cnx_master_out
(
c_SLAVE_TIMER
),
slave_o
=>
cnx_master_in
(
c_SLAVE_TIMER
),
desc_o
=>
open
);
U_GEN_10_MHZ
:
xwrsw_gen_10mhz
U_GEN_10_MHZ
:
xwrsw_gen_10mhz
generic
map
(
g_interface_mode
=>
PIPELINED
,
g_address_granularity
=>
BYTE
)
...
...
@@ -492,8 +499,8 @@ begin -- rtl
ppsdel_tap_i
=>
ppsdel_tap_i
,
ppsdel_tap_o
=>
ppsdel_tap_o
,
ppsdel_tap_wr_o
=>
ppsdel_tap_wr_o
,
slave_i
=>
cnx_master_out
(
c_SLAVE_GEN10
),
slave_o
=>
cnx_master_in
(
c_SLAVE_GEN10
));
slave_i
=>
cnx_master_out
(
c_SLAVE_GEN10
),
slave_o
=>
cnx_master_in
(
c_SLAVE_GEN10
));
sel_clk_sys_o
<=
gpio_out
(
0
);
pll_reset_n_o
<=
gpio_out
(
1
);
...
...
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