From c1a195102eb17e706881bfced326a07923e24009 Mon Sep 17 00:00:00 2001 From: Eric Kooistra <kooistra@astron.nl> Date: Mon, 22 Aug 2022 10:30:42 +0200 Subject: [PATCH] Clarified c_min_nof_pps_interval. --- .../base/dp/tb/vhdl/tb_dp_bsn_source_v2.vhd | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/libraries/base/dp/tb/vhdl/tb_dp_bsn_source_v2.vhd b/libraries/base/dp/tb/vhdl/tb_dp_bsn_source_v2.vhd index c3ccfaac5d..c6ace124e0 100644 --- a/libraries/base/dp/tb/vhdl/tb_dp_bsn_source_v2.vhd +++ b/libraries/base/dp/tb/vhdl/tb_dp_bsn_source_v2.vhd @@ -59,15 +59,27 @@ END tb_dp_bsn_source_v2; ARCHITECTURE tb OF tb_dp_bsn_source_v2 IS - CONSTANT c_gcd : NATURAL := gcd(g_pps_interval, g_block_size); - CONSTANT c_min_nof_interval : NATURAL := g_block_size / c_gcd; - - -- choose c_nof_pps and c_nof_repeat > c_min_nof_interval, because the - -- fractional sync pattern will repeat every c_min_nof_interval number + -- The nof block per sync interval will be the same after every + -- c_min_nof_pps_interval. The c_gcd is the greatest common divider of + -- g_pps_interval and g_block_size, so g_block_size / c_gcd yields an + -- integer. When g_pps_interval and g_block_size are relative prime, + -- then c_gcd = 1, and then it takes g_block_size nof g_pps_interval + -- for the pattern of c_nof_block_per_sync_lo and c_nof_block_per_sync_hi + -- to repeat. If c_gcd = g_block_size, then c_nof_block_per_sync_lo = + -- c_nof_block_per_sync_hi, so then the nof block per sync interval is + -- the same in every pps interval. + CONSTANT c_gcd : NATURAL := gcd(g_pps_interval, g_block_size); + CONSTANT c_min_nof_pps_interval : NATURAL := g_block_size / c_gcd; + + CONSTANT c_nof_block_per_sync_lo : NATURAL := g_pps_interval / g_block_size; + CONSTANT c_nof_block_per_sync_hi : NATURAL := ceil_div(g_pps_interval, g_block_size); + + -- choose c_nof_pps and c_nof_repeat > c_min_nof_pps_interval, because the + -- fractional sync pattern will repeat every c_min_nof_pps_interval number -- of g_pps_intervals. CONSTANT c_factor : NATURAL := 3; - CONSTANT c_nof_pps : NATURAL := c_min_nof_interval * c_factor; - CONSTANT c_nof_repeat : NATURAL := c_min_nof_interval * c_factor; + CONSTANT c_nof_pps : NATURAL := c_min_nof_pps_interval * c_factor; + CONSTANT c_nof_repeat : NATURAL := c_min_nof_pps_interval * c_factor; CONSTANT c_clk_period : TIME := 10 ns; CONSTANT c_bsn_w : NATURAL := 31; -- GitLab