Move alternate offset switch near the end of the current second to extend reconstruction range for timestamps in the past

Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
Alex Forencich 2024-02-11 13:01:03 -08:00
parent 870cebb798
commit c5d069444a
2 changed files with 6 additions and 6 deletions

View File

@ -454,13 +454,13 @@ always @(posedge clk) begin
adder_b_reg <= -NS_PER_S; adder_b_reg <= -NS_PER_S;
adder_cin_reg <= 0; adder_cin_reg <= 0;
if (ts_tod_ns_reg[29]) begin if (ts_tod_ns_reg[29:27] == 3'b111) begin
// latter half of second; compute offset for next second // latter portion of second; compute offset for next second
adder_b_reg <= -NS_PER_S; adder_b_reg <= -NS_PER_S;
update_state_reg <= 12; update_state_reg <= 12;
adder_busy_reg <= 1'b1; adder_busy_reg <= 1'b1;
end else begin end else begin
// former half of second; compute offset for previous second // former portion of second; compute offset for previous second
adder_b_reg <= NS_PER_S; adder_b_reg <= NS_PER_S;
update_state_reg <= 14; update_state_reg <= 14;
adder_busy_reg <= 1'b1; adder_busy_reg <= 1'b1;

View File

@ -255,12 +255,12 @@ class PtpTdSource(Reset):
self.ts_tod_offset_ns = (self.ts_tod_ns - self.ts_rel_ns) & 0xffffffff self.ts_tod_offset_ns = (self.ts_tod_ns - self.ts_rel_ns) & 0xffffffff
# compute alternate offset # compute alternate offset
if self.ts_tod_ns & (1 << 29): if self.ts_tod_ns >> 27 == 7:
# latter half of second; compute offset for next second # latter portion of second; compute offset for next second
self.ts_tod_alt_s = self.ts_tod_s+1 self.ts_tod_alt_s = self.ts_tod_s+1
self.ts_tod_alt_offset_ns = (self.ts_tod_offset_ns - 1000000000) & 0xffffffff self.ts_tod_alt_offset_ns = (self.ts_tod_offset_ns - 1000000000) & 0xffffffff
else: else:
# former half of second; compute offset for previous second # former portion of second; compute offset for previous second
self.ts_tod_alt_s = self.ts_tod_s-1 self.ts_tod_alt_s = self.ts_tod_s-1
self.ts_tod_alt_offset_ns = (self.ts_tod_offset_ns + 1000000000) & 0xffffffff self.ts_tod_alt_offset_ns = (self.ts_tod_offset_ns + 1000000000) & 0xffffffff