Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
CompactRIO White Rabbit CRIO-WR
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
CompactRIO White Rabbit CRIO-WR
Commits
717c46cb
Commit
717c46cb
authored
7 years ago
by
Dimitris Lampridis
Browse files
Options
Downloads
Patches
Plain Diff
Implement 50Hz PPS-aligned PMU pulse
parent
e1e6b1cd
Branches
Branches containing commit
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
hdl/ip_cores/wr-cores
+1
-1
1 addition, 1 deletion
hdl/ip_cores/wr-cores
hdl/syn/crio_wr_pmu/crio_wr_pmu.ucf
+5
-3
5 additions, 3 deletions
hdl/syn/crio_wr_pmu/crio_wr_pmu.ucf
hdl/top/crio_wr_pmu/crio_wr_pmu_top.vhd
+52
-3
52 additions, 3 deletions
hdl/top/crio_wr_pmu/crio_wr_pmu_top.vhd
with
58 additions
and
7 deletions
wr-cores
@
b1c8072c
Subproject commit
3589794b7ba369849db05a4b75c4811c1c4b9e5b
Subproject commit
b1c8072cd4496a68f63373a0d6c52fac935fb2c1
This diff is collapsed.
Click to expand it.
hdl/syn/crio_wr_pmu/crio_wr_pmu.ucf
+
5
−
3
View file @
717c46cb
...
...
@@ -134,6 +134,11 @@ NET "led_3_o" IOSTANDARD = "LVCMOS33";
NET "led_4_o" LOC = A18;
NET "led_4_o" IOSTANDARD = "LVCMOS33";
NET "userio_1_o" LOC = B2;
NET "userio_1_o" IOSTANDARD = "LVCMOS33";
NET "userio_2_o" LOC = A2;
NET "userio_2_o" IOSTANDARD = "LVCMOS33";
#NET "userio_1_p_b" LOC = B2;
#NET "userio_1_p_b" IOSTANDARD = "LVDS_33";
#NET "userio_1_n_b" LOC = A2;
...
...
@@ -190,6 +195,3 @@ INST "*/U_SOFTPLL/U_Wrapped_Softpll/gen_feedback_dmtds*/clk_in" TNM = skew_limit
INST "*/U_SOFTPLL/U_Wrapped_Softpll/gen_ref_dmtds*/clk_in" TNM = skew_limit;
TIMESPEC TS_ = FROM "skew_limit" TO "FFS" 1 ns DATAPATHONLY;
# Force PPS output to always be placed as IOB register
#INST "cmp_board_common/cmp_xwr_core/WRPC/PPS_GEN/WRAPPED_PPSGEN/pps_out_o" IOB = FORCE;
This diff is collapsed.
Click to expand it.
hdl/top/crio_wr_pmu/crio_wr_pmu_top.vhd
+
52
−
3
View file @
717c46cb
...
...
@@ -156,6 +156,8 @@ entity crio_wr_pmu_top is
--userio_4_n_b : out std_logic; -- CON730_4 front panel (DSUB HD15)
--userio_5_p_b : out std_logic; -- CON730_10 front panel (DSUB HD15), GCLK
--userio_5_n_b : out std_logic; -- CON730_5 front panel (DSUB HD15), GCLK
userio_1_o
:
out
std_logic
;
-- CON730_6 PPS output
userio_2_o
:
out
std_logic
;
-- CON730_1 PMU output (PPS-aligned)
-- Front panel LEDs
led_1_o
:
out
std_logic
;
-- LED750 (quad) front panel top
...
...
@@ -193,6 +195,8 @@ end entity crio_wr_pmu_top;
architecture
top
of
crio_wr_pmu_top
is
attribute
iob
:
string
;
-----------------------------------------------------------------------------
-- Constants
-----------------------------------------------------------------------------
...
...
@@ -287,6 +291,7 @@ architecture top of crio_wr_pmu_top is
signal
onewire_en
:
std_logic_vector
(
1
downto
0
);
-- WRPC
signal
pps_csync
:
std_logic
;
signal
pps_pulse
:
std_logic
;
signal
pps_led
:
std_logic
;
signal
pps_led_ext
:
std_logic
;
...
...
@@ -296,6 +301,13 @@ architecture top of crio_wr_pmu_top is
signal
tm_tai
:
std_logic_vector
(
39
downto
0
);
signal
tm_cycles
:
std_logic_vector
(
27
downto
0
);
-- PMU
signal
pmu_pulse
:
std_logic
;
-- Force PPS and PMU pulses to IOBs
attribute
IOB
of
pps_pulse
:
signal
is
"FORCE"
;
attribute
IOB
of
pmu_pulse
:
signal
is
"FORCE"
;
begin
-- architecture top
------------------------------------------------------------------------------
...
...
@@ -446,6 +458,7 @@ begin -- architecture top
tm_cycles_o
=>
tm_cycles
,
led_act_o
=>
led_act
,
led_link_o
=>
led_link
,
pps_csync_o
=>
pps_csync
,
pps_p_o
=>
pps_pulse
,
pps_led_o
=>
pps_led
);
...
...
@@ -526,9 +539,42 @@ begin -- architecture top
data_reg_scratch2_o
=>
open
);
------------------------------------------------------------------------------
-- Front panel
------------------------------------------------------------------------------
-----------------------------------------------------------------------------
-- PMU pulse generation
-- for now this is 50Hz, 50% duty cycle, in the future we can make
-- it configurable.
-- A better implementation could be to borrow the 10MHz
-- clock generation module from the WR Switch project, which makes use
-- of an OSERDES and ODELAY block (to allow fine alignment of the PMU pulse
-- to the actual PPS).
-- Don't forget to force the placement of the output to an IOB, to get
-- consistent timing.
-----------------------------------------------------------------------------
p_pmu_pulse_gen
:
process
(
clk_pll_125m
)
is
variable
v_pmu_cnt
:
unsigned
(
21
downto
0
);
begin
-- process p_pmu_pulse_gen
if
rising_edge
(
clk_pll_125m
)
then
-- in case of reset, pps_csync or PMU pulse period
-- reset the counter, otherwise inc by 1
if
(
rst_ref_125m_n
=
'0'
)
or
(
pps_csync
=
'1'
)
or
(
v_pmu_cnt
=
to_unsigned
(
2500000
,
v_pmu_cnt
'length
))
then
v_pmu_cnt
:
=
to_unsigned
(
1
,
v_pmu_cnt
'length
);
else
v_pmu_cnt
:
=
v_pmu_cnt
+
1
;
end
if
;
-- drive the PMU pulse based on the counter value
if
v_pmu_cnt
>
to_unsigned
(
1250000
,
v_pmu_cnt
'length
)
then
pmu_pulse
<=
'0'
;
else
pmu_pulse
<=
'1'
;
end
if
;
end
if
;
end
process
p_pmu_pulse_gen
;
------------------------------------------------------------------------------
-- Front panel
------------------------------------------------------------------------------
cmp_extend_pps
:
gc_extend_pulse
generic
map
(
...
...
@@ -546,4 +592,7 @@ begin -- architecture top
led_3_o
<=
not
tm_time_valid
;
-- LED is active L
led_4_o
<=
not
pps_led_ext
;
-- LED is active L, at the bottom
userio_1_o
<=
pps_pulse
;
userio_2_o
<=
pmu_pulse
;
end
architecture
top
;
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