diff --git a/top/x400/doc/X410/X410_FPGA_left.htm b/top/x400/doc/X410/X410_FPGA_left.htm index 869b9e5..b6dfa5b 100644 --- a/top/x400/doc/X410/X410_FPGA_left.htm +++ b/top/x400/doc/X410/X410_FPGA_left.htm @@ -350,6 +350,7 @@
CHDR_CLK_RATE_REG
CHDR_CLK_COUNT_REG
BUILD_SEED_REG
+PPS_CROSSING_REG
GPS_CTRL_REG
GPS_STATUS_REG
DBOARD_CTRL_REG
diff --git a/top/x400/doc/X410/X410_FPGA_right.htm b/top/x400/doc/X410/X410_FPGA_right.htm index bbb4f5f..8f4be14 100644 --- a/top/x400/doc/X410/X410_FPGA_right.htm +++ b/top/x400/doc/X410/X410_FPGA_right.htm @@ -6621,8 +6621,8 @@ Control registers for PPS generation.Enables the PPS signal in radio clock domain. Please make sure that - the values of PPS_BRC_DELAY, PPS_PRC_DELAY, PRC_RC0_DIVIDER and - PRC_RC1_DIVIDER are set before enabling this bit. It is recommended + the values of PPS_BRC_DELAY, PPS_PRC_DELAY, PRC_RC0_DIVIDER and + PRC_RC1_DIVIDER are set before enabling this bit. It is recommended to disable the PPS for changes on the other values. Use a wait time of at least 1 second before changing this value to ensure the values are stable for the next PPS edge.
@@ -6631,7 +6631,7 @@ Control registers for PPS generation.Reserved
@@ -6639,28 +6639,6 @@ Control registers for PPS generation.Clock multiplier used to generate radio clock 0 from PLL reference clock. - The value written to the register has to be reduced by 2 due to - HDL implementation.
- -Clock multiplier used to generate radio clock 1 from PLL reference clock. - The value written to the register has to be reduced by 2 due to - HDL implementation.
- -
+
+
|
+
+
+
+
|
+
+
+
+
|
+
+
+
+
|
+
+
+
+
|
+
+
Initial Value not specified +
+ +This register is defined in HDL source file x4xx_global_regs.v.
+ +| Bits | Name |
| 31..24 | +
+ Reserved + + + |
+
| 23..21 | +
+ Reserved + + + |
+
| 20..16 | +
+
+ Clock multiplier used to generate radio clock 1 from PLL reference clock.
+ The value written to the register has to follow the following formula:
+ |
+
| 15..8 | +
+ Reserved + + + |
+
| 7..5 | +
+ Reserved + + + |
+
| 4..0 | +
+
+ Clock multiplier used to generate radio clock 0 from PLL reference clock.
+ The value written to the register has to follow the following formula:
+ |
+
FPGA_VERSION_LAST_MODIFIED_TIME
diff --git a/top/x400/doc/X440/X440_FPGA_left.htm b/top/x400/doc/X440/X440_FPGA_left.htm index 9ac613b..06d5bba 100644 --- a/top/x400/doc/X440/X440_FPGA_left.htm +++ b/top/x400/doc/X440/X440_FPGA_left.htm @@ -377,6 +377,7 @@CHDR_CLK_RATE_REG
CHDR_CLK_COUNT_REG
BUILD_SEED_REG
+PPS_CROSSING_REG
GPS_CTRL_REG
GPS_STATUS_REG
DBOARD_CTRL_REG
diff --git a/top/x400/doc/X440/X440_FPGA_right.htm b/top/x400/doc/X440/X440_FPGA_right.htm index e9aa8c2..f95f386 100644 --- a/top/x400/doc/X440/X440_FPGA_right.htm +++ b/top/x400/doc/X440/X440_FPGA_right.htm @@ -6907,8 +6907,8 @@ Control registers for PPS generation.Enables the PPS signal in radio clock domain. Please make sure that - the values of PPS_BRC_DELAY, PPS_PRC_DELAY, PRC_RC0_DIVIDER and - PRC_RC1_DIVIDER are set before enabling this bit. It is recommended + the values of PPS_BRC_DELAY, PPS_PRC_DELAY, PRC_RC0_DIVIDER and + PRC_RC1_DIVIDER are set before enabling this bit. It is recommended to disable the PPS for changes on the other values. Use a wait time of at least 1 second before changing this value to ensure the values are stable for the next PPS edge.
@@ -6917,7 +6917,7 @@ Control registers for PPS generation.Reserved
@@ -6925,28 +6925,6 @@ Control registers for PPS generation.Clock multiplier used to generate radio clock 0 from PLL reference clock. - The value written to the register has to be reduced by 2 due to - HDL implementation.
- -Clock multiplier used to generate radio clock 1 from PLL reference clock. - The value written to the register has to be reduced by 2 due to - HDL implementation.
- -
+
+
|
+
+
+
+
|
+
+
+
+
|
+
+
+
+
|
+
+
+
+
|
+
+
Initial Value not specified +
+ +This register is defined in HDL source file x4xx_global_regs.v.
+ +| Bits | Name |
| 31..24 | +
+ Reserved + + + |
+
| 23..21 | +
+ Reserved + + + |
+
| 20..16 | +
+
+ Clock multiplier used to generate radio clock 1 from PLL reference clock.
+ The value written to the register has to follow the following formula:
+ |
+
| 15..8 | +
+ Reserved + + + |
+
| 7..5 | +
+ Reserved + + + |
+
| 4..0 | +
+
+ Clock multiplier used to generate radio clock 0 from PLL reference clock.
+ The value written to the register has to follow the following formula:
+ |
+
FPGA_VERSION_LAST_MODIFIED_TIME
diff --git a/top/x400/regmap/global_regs_regmap_utils.vh b/top/x400/regmap/global_regs_regmap_utils.vh index 90618ca..04a1011 100644 --- a/top/x400/regmap/global_regs_regmap_utils.vh +++ b/top/x400/regmap/global_regs_regmap_utils.vh @@ -22,6 +22,7 @@ // CHDR_CLK_RATE_REG : 0x20 (x4xx_global_regs.v) // CHDR_CLK_COUNT_REG : 0x24 (x4xx_global_regs.v) // BUILD_SEED_REG : 0x28 (x4xx_global_regs.v) + // PPS_CROSSING_REG : 0x30 (x4xx_global_regs.v) // GPS_CTRL_REG : 0x38 (x4xx_global_regs.v) // GPS_STATUS_REG : 0x3C (x4xx_global_regs.v) // DBOARD_CTRL_REG : 0x40 (x4xx_global_regs.v) @@ -156,16 +157,10 @@ // PPS_CTRL_REG Register (from x4xx_global_regs.v) localparam PPS_CTRL_REG = 'h1C; // Register Offset localparam PPS_CTRL_REG_SIZE = 32; // register width in bits - localparam PPS_CTRL_REG_MASK = 32'hBFFFFFFF; + localparam PPS_CTRL_REG_MASK = 32'h83FFFFFF; localparam PPS_PRC_DELAY_SIZE = 26; //PPS_CTRL_REG:PPS_PRC_DELAY localparam PPS_PRC_DELAY_MSB = 25; //PPS_CTRL_REG:PPS_PRC_DELAY localparam PPS_PRC_DELAY = 0; //PPS_CTRL_REG:PPS_PRC_DELAY - localparam PRC_RC1_DIVIDER_SIZE = 2; //PPS_CTRL_REG:PRC_RC1_DIVIDER - localparam PRC_RC1_DIVIDER_MSB = 27; //PPS_CTRL_REG:PRC_RC1_DIVIDER - localparam PRC_RC1_DIVIDER = 26; //PPS_CTRL_REG:PRC_RC1_DIVIDER - localparam PRC_RC0_DIVIDER_SIZE = 2; //PPS_CTRL_REG:PRC_RC0_DIVIDER - localparam PRC_RC0_DIVIDER_MSB = 29; //PPS_CTRL_REG:PRC_RC0_DIVIDER - localparam PRC_RC0_DIVIDER = 28; //PPS_CTRL_REG:PRC_RC0_DIVIDER localparam PPS_RC_ENABLED_SIZE = 1; //PPS_CTRL_REG:PPS_RC_ENABLED localparam PPS_RC_ENABLED_MSB = 31; //PPS_CTRL_REG:PPS_RC_ENABLED localparam PPS_RC_ENABLED = 31; //PPS_CTRL_REG:PPS_RC_ENABLED @@ -188,6 +183,17 @@ localparam BUILD_SEED_REG_SIZE = 32; // register width in bits localparam BUILD_SEED_REG_MASK = 32'h0; + // PPS_CROSSING_REG Register (from x4xx_global_regs.v) + localparam PPS_CROSSING_REG = 'h30; // Register Offset + localparam PPS_CROSSING_REG_SIZE = 32; // register width in bits + localparam PPS_CROSSING_REG_MASK = 32'h1F001F; + localparam PRC_RC0_DIVIDER_SIZE = 5; //PPS_CROSSING_REG:PRC_RC0_DIVIDER + localparam PRC_RC0_DIVIDER_MSB = 4; //PPS_CROSSING_REG:PRC_RC0_DIVIDER + localparam PRC_RC0_DIVIDER = 0; //PPS_CROSSING_REG:PRC_RC0_DIVIDER + localparam PRC_RC1_DIVIDER_SIZE = 5; //PPS_CROSSING_REG:PRC_RC1_DIVIDER + localparam PRC_RC1_DIVIDER_MSB = 20; //PPS_CROSSING_REG:PRC_RC1_DIVIDER + localparam PRC_RC1_DIVIDER = 16; //PPS_CROSSING_REG:PRC_RC1_DIVIDER + // GPS_CTRL_REG Register (from x4xx_global_regs.v) localparam GPS_CTRL_REG = 'h38; // Register Offset localparam GPS_CTRL_REG_SIZE = 32; // register width in bits diff --git a/top/x400/regmap/x410/versioning_regs_regmap_utils.vh b/top/x400/regmap/x410/versioning_regs_regmap_utils.vh index 3f4374c..a61ebdf 100644 --- a/top/x400/regmap/x410/versioning_regs_regmap_utils.vh +++ b/top/x400/regmap/x410/versioning_regs_regmap_utils.vh @@ -79,13 +79,13 @@ // Enumerated type FPGA_VERSION localparam FPGA_VERSION_SIZE = 7; - localparam FPGA_CURRENT_VERSION_MINOR = 'h0; // FPGA_VERSION:FPGA_CURRENT_VERSION_MINOR localparam FPGA_CURRENT_VERSION_BUILD = 'h0; // FPGA_VERSION:FPGA_CURRENT_VERSION_BUILD - localparam FPGA_OLDEST_COMPATIBLE_VERSION_MINOR = 'h0; // FPGA_VERSION:FPGA_OLDEST_COMPATIBLE_VERSION_MINOR localparam FPGA_OLDEST_COMPATIBLE_VERSION_BUILD = 'h0; // FPGA_VERSION:FPGA_OLDEST_COMPATIBLE_VERSION_BUILD + localparam FPGA_CURRENT_VERSION_MINOR = 'h1; // FPGA_VERSION:FPGA_CURRENT_VERSION_MINOR + localparam FPGA_OLDEST_COMPATIBLE_VERSION_MINOR = 'h1; // FPGA_VERSION:FPGA_OLDEST_COMPATIBLE_VERSION_MINOR localparam FPGA_CURRENT_VERSION_MAJOR = 'h8; // FPGA_VERSION:FPGA_CURRENT_VERSION_MAJOR localparam FPGA_OLDEST_COMPATIBLE_VERSION_MAJOR = 'h8; // FPGA_VERSION:FPGA_OLDEST_COMPATIBLE_VERSION_MAJOR - localparam FPGA_VERSION_LAST_MODIFIED_TIME = 'h23042011; // FPGA_VERSION:FPGA_VERSION_LAST_MODIFIED_TIME + localparam FPGA_VERSION_LAST_MODIFIED_TIME = 'h23092509; // FPGA_VERSION:FPGA_VERSION_LAST_MODIFIED_TIME // Enumerated type RF_CORE_100M_VERSION localparam RF_CORE_100M_VERSION_SIZE = 7; diff --git a/top/x400/regmap/x440/versioning_regs_regmap_utils.vh b/top/x400/regmap/x440/versioning_regs_regmap_utils.vh index 9d55b32..a92beca 100644 --- a/top/x400/regmap/x440/versioning_regs_regmap_utils.vh +++ b/top/x400/regmap/x440/versioning_regs_regmap_utils.vh @@ -79,13 +79,13 @@ // Enumerated type FPGA_VERSION localparam FPGA_VERSION_SIZE = 7; - localparam FPGA_CURRENT_VERSION_MINOR = 'h0; // FPGA_VERSION:FPGA_CURRENT_VERSION_MINOR localparam FPGA_CURRENT_VERSION_BUILD = 'h0; // FPGA_VERSION:FPGA_CURRENT_VERSION_BUILD - localparam FPGA_OLDEST_COMPATIBLE_VERSION_MINOR = 'h0; // FPGA_VERSION:FPGA_OLDEST_COMPATIBLE_VERSION_MINOR localparam FPGA_OLDEST_COMPATIBLE_VERSION_BUILD = 'h0; // FPGA_VERSION:FPGA_OLDEST_COMPATIBLE_VERSION_BUILD + localparam FPGA_CURRENT_VERSION_MINOR = 'h1; // FPGA_VERSION:FPGA_CURRENT_VERSION_MINOR + localparam FPGA_OLDEST_COMPATIBLE_VERSION_MINOR = 'h1; // FPGA_VERSION:FPGA_OLDEST_COMPATIBLE_VERSION_MINOR localparam FPGA_CURRENT_VERSION_MAJOR = 'h8; // FPGA_VERSION:FPGA_CURRENT_VERSION_MAJOR localparam FPGA_OLDEST_COMPATIBLE_VERSION_MAJOR = 'h8; // FPGA_VERSION:FPGA_OLDEST_COMPATIBLE_VERSION_MAJOR - localparam FPGA_VERSION_LAST_MODIFIED_TIME = 'h23042011; // FPGA_VERSION:FPGA_VERSION_LAST_MODIFIED_TIME + localparam FPGA_VERSION_LAST_MODIFIED_TIME = 'h23092509; // FPGA_VERSION:FPGA_VERSION_LAST_MODIFIED_TIME // Enumerated type RF_CORE_FULL_VERSION localparam RF_CORE_FULL_VERSION_SIZE = 7; diff --git a/top/x400/x4xx.v b/top/x400/x4xx.v index f346d6f..5033faa 100644 --- a/top/x400/x4xx.v +++ b/top/x400/x4xx.v @@ -494,7 +494,7 @@ module x4xx ( wire [ 7:0] pll_sync_delay; wire [ 7:0] pps_brc_delay; wire [25:0] pps_prc_delay; - wire [ 3:0] prc_rc_divider; + wire [ 9:0] prc_rc_divider; wire pps_rc_enabled; x4xx_pps_sync x4xx_pps_sync_i ( @@ -3032,8 +3032,8 @@ module x4xx ( .pll_sync_done (pll_sync_done), .pps_brc_delay (pps_brc_delay), .pps_prc_delay (pps_prc_delay), - .prc_rc0_divider (prc_rc_divider[1:0]), - .prc_rc1_divider (prc_rc_divider[3:2]), + .prc_rc0_divider (prc_rc_divider[4:0]), + .prc_rc1_divider (prc_rc_divider[9:5]), .pps_rc_enabled (pps_rc_enabled), .rx_data (rx_data_iq), .rx_stb (rx_stb), @@ -3194,12 +3194,12 @@ endmodule //PRC_RC1_DIVIDER = (RADIO_CLK_1 / PRC_CLK) * 2 - 2
+// PRC_RC0_DIVIDER = (RADIO_CLK_0 / PRC_CLK) * 2 - 2
+//