diff options
author | Matt Ettus <matt@ettus.com> | 2010-02-08 15:03:14 -0800 |
---|---|---|
committer | Matt Ettus <matt@ettus.com> | 2010-02-08 15:03:14 -0800 |
commit | e6e5c4c4797cf8e30964731d0a4c04f65488a8ec (patch) | |
tree | 122d96ece7c2042497a879a9deaa8b57596d9b27 | |
parent | 058780d92f776bcba0a384b5e4c4aa948d64c6f4 (diff) | |
download | uhd-e6e5c4c4797cf8e30964731d0a4c04f65488a8ec.tar.gz uhd-e6e5c4c4797cf8e30964731d0a4c04f65488a8ec.tar.bz2 uhd-e6e5c4c4797cf8e30964731d0a4c04f65488a8ec.zip |
copied over from quad radio
-rw-r--r-- | usrp2/timing/simple_timer.v | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/usrp2/timing/simple_timer.v b/usrp2/timing/simple_timer.v new file mode 100644 index 000000000..17c7f1c36 --- /dev/null +++ b/usrp2/timing/simple_timer.v @@ -0,0 +1,60 @@ + + +module simple_timer + #(parameter BASE=0) + (input clk, input reset, + input set_stb, input [7:0] set_addr, input [31:0] set_data, + output reg onetime_int, output reg periodic_int); + + reg [31:0] onetime_ctr; + always @(posedge clk) + if(reset) + begin + onetime_int <= 0; + onetime_ctr <= 0; + end + else + if(set_stb & (set_addr == BASE)) + begin + onetime_int <= 0; + onetime_ctr <= set_data; + end + else + begin + if(onetime_ctr == 1) + onetime_int <= 1; + if(onetime_ctr != 0) + onetime_ctr <= onetime_ctr - 1; + else + onetime_int <= 0; + end // else: !if(set_stb & (set_addr == BASE)) + + reg [31:0] periodic_ctr, period; + always @(posedge clk) + if(reset) + begin + periodic_int <= 0; + periodic_ctr <= 0; + period <= 0; + end + else + if(set_stb & (set_addr == (BASE+1))) + begin + periodic_int <= 0; + periodic_ctr <= set_data; + period <= set_data; + end + else + if(periodic_ctr == 1) + begin + periodic_int <= 1; + periodic_ctr <= period; + end + else + if(periodic_ctr != 0) + begin + periodic_int <= 0; + periodic_ctr <= periodic_ctr - 1; + end + +endmodule // simple_timer |