diff options
| author | Ben Hilburn <ben.hilburn@ettus.com> | 2014-07-22 15:52:30 -0700 | 
|---|---|---|
| committer | Ben Hilburn <ben.hilburn@ettus.com> | 2014-07-22 15:52:30 -0700 | 
| commit | 5a5c5b59608403eb7cd6a72ab7814a368f6c360b (patch) | |
| tree | 864b24d0874fc4eb144bd8015c29eb4520b4b554 /fpga/usrp3/lib/timing | |
| parent | fe9db33c9833e485c31b48ad8808ad4419c5138f (diff) | |
| parent | b63507efb3cf1a8fa20794c452d57028e18da182 (diff) | |
| download | uhd-5a5c5b59608403eb7cd6a72ab7814a368f6c360b.tar.gz uhd-5a5c5b59608403eb7cd6a72ab7814a368f6c360b.tar.bz2 uhd-5a5c5b59608403eb7cd6a72ab7814a368f6c360b.zip  | |
Merge branch 'maint'
Diffstat (limited to 'fpga/usrp3/lib/timing')
| -rw-r--r-- | fpga/usrp3/lib/timing/Makefile.srcs | 1 | ||||
| -rw-r--r-- | fpga/usrp3/lib/timing/pps.v | 22 | ||||
| -rw-r--r-- | fpga/usrp3/lib/timing/timekeeper.v | 24 | 
3 files changed, 38 insertions, 9 deletions
diff --git a/fpga/usrp3/lib/timing/Makefile.srcs b/fpga/usrp3/lib/timing/Makefile.srcs index ff4ca17d2..09f0596c5 100644 --- a/fpga/usrp3/lib/timing/Makefile.srcs +++ b/fpga/usrp3/lib/timing/Makefile.srcs @@ -8,4 +8,5 @@  TIMING_SRCS = $(abspath $(addprefix $(BASE_DIR)/../lib/timing/, \  time_compare.v \  timekeeper.v \ +pps.v\  )) diff --git a/fpga/usrp3/lib/timing/pps.v b/fpga/usrp3/lib/timing/pps.v new file mode 100644 index 000000000..49d3641b7 --- /dev/null +++ b/fpga/usrp3/lib/timing/pps.v @@ -0,0 +1,22 @@ +// +// Copyright 2014 Ettus Research LLC +// + +module pps_generator +    #(parameter CLK_FREQ=0, DUTY=25) +    (input clk, input reset, output pps); + +    reg[31:0] count; + +    always @(posedge clk) begin +        if (reset) begin +            count <= 32'b1; +        end else if (count >= CLK_FREQ) begin +            count <= 32'b1; +        end else begin +            count <= count + 1'b1; +        end +    end + +    assign pps = (count < CLK_FREQ * DUTY / 100); +endmodule //pps_generator diff --git a/fpga/usrp3/lib/timing/timekeeper.v b/fpga/usrp3/lib/timing/timekeeper.v index 627472094..761bda5bc 100644 --- a/fpga/usrp3/lib/timing/timekeeper.v +++ b/fpga/usrp3/lib/timing/timekeeper.v @@ -1,5 +1,5 @@  // -// Copyright 2013 Ettus Research LLC +// Copyright 2013-2014 Ettus Research LLC  // @@ -19,11 +19,11 @@ module timekeeper     setting_reg #(.my_addr(BASE), .width()) sr_time_hi       (.clk(clk), .rst(reset), .strobe(set_stb), .addr(set_addr), .in(set_data),        .out(time_at_next_event[63:32]), .changed()); -    +     setting_reg #(.my_addr(BASE+1), .width()) sr_time_lo       (.clk(clk), .rst(reset), .strobe(set_stb), .addr(set_addr), .in(set_data),        .out(time_at_next_event[31:0]), .changed()); -    +     setting_reg #(.my_addr(BASE+2), .width(2)) sr_ctrl       (.clk(clk), .rst(reset), .strobe(set_stb), .addr(set_addr), .in(set_data),        .out({set_time_pps, set_time_now}), .changed(cmd_trigger)); @@ -38,12 +38,6 @@ module timekeeper     wire pps_edge = !pps_del2 & pps_del;     ////////////////////////////////////////////////////////////////////////// -   // track the time at last pps so host can detect the pps -   ////////////////////////////////////////////////////////////////////////// -   always @(posedge clk) -     if(pps_edge) vita_time_lastpps <= vita_time; - -   //////////////////////////////////////////////////////////////////////////     // arm the trigger to latch a new time when the ctrl register is written     //////////////////////////////////////////////////////////////////////////     reg armed; @@ -65,4 +59,16 @@ module timekeeper       else         vita_time <= vita_time + 64'h1; +   ////////////////////////////////////////////////////////////////////////// +   // track the time at last pps so host can detect the pps +   ////////////////////////////////////////////////////////////////////////// +   always @(posedge clk) +     if(reset) +       vita_time_lastpps <= 64'h0; +     else if(pps_edge) +       if(time_event) +         vita_time_lastpps <= time_at_next_event; +       else +         vita_time_lastpps <= vita_time + 64'h1; +  endmodule // timekeeper  | 
