aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--usrp2/top/u1e/u1e.ucf10
-rw-r--r--usrp2/top/u1e/u1e.v4
-rw-r--r--usrp2/top/u1e/u1e_core.v20
3 files changed, 26 insertions, 8 deletions
diff --git a/usrp2/top/u1e/u1e.ucf b/usrp2/top/u1e/u1e.ucf
index 27f507c6b..c39759d0b 100644
--- a/usrp2/top/u1e/u1e.ucf
+++ b/usrp2/top/u1e/u1e.ucf
@@ -105,11 +105,11 @@ NET "cgen_sclk" LOC = "R5" ;
NET "cgen_sen_b" LOC = "T1" ;
## Clock gen control
-#NET "cgen_st_status" LOC = "D4" ;
-#NET "cgen_st_ld" LOC = "D1" ;
-#NET "cgen_st_refmon" LOC = "E1" ;
-#NET "cgen_sync_b" LOC = "M1" ;
-#NET "cgen_ref_sel" LOC = "J1" ;
+NET "cgen_st_status" LOC = "D4" ;
+NET "cgen_st_ld" LOC = "D1" ;
+NET "cgen_st_refmon" LOC = "E1" ;
+NET "cgen_sync_b" LOC = "M1" ;
+NET "cgen_ref_sel" LOC = "J1" ;
## Debug pins
NET "debug_led<2>" LOC = "T5" ;
diff --git a/usrp2/top/u1e/u1e.v b/usrp2/top/u1e/u1e.v
index f1f491a97..ab270879c 100644
--- a/usrp2/top/u1e/u1e.v
+++ b/usrp2/top/u1e/u1e.v
@@ -16,6 +16,8 @@ module u1e
output db_sclk_rx, output db_sen_rx, output db_mosi_rx, input db_miso_rx, // DB TX SPI
output sclk_codec, output sen_codec, output mosi_codec, input miso_codec, // AD9862 main SPI
output cgen_sclk, output cgen_sen_b, output cgen_mosi, input cgen_miso, // Clock gen SPI
+
+ input cgen_st_status, input cgen_st_ld, input cgen_st_refmon, output cgen_sync_b, output cgen_ref_sel,
output overo_gpio144, output overo_gpio145, output overo_gpio146, output overo_gpio147, // Fifo controls
inout [15:0] io_tx, inout [15:0] io_rx
@@ -44,6 +46,8 @@ module u1e
.EM_NWE(EM_NWE), .EM_NOE(EM_NOE),
.db_sda(db_sda), .db_scl(db_scl),
.sclk(sclk), .sen({cgen_sen_b,sen_codec,db_sen_tx,db_sen_rx}), .mosi(mosi), .miso(miso),
+ .cgen_st_status(cgen_st_status), .cgen_st_ld(cgen_st_ld),.cgen_st_refmon(cgen_st_refmon),
+ .cgen_sync_b(cgen_sync_b), .cgen_ref_sel(cgen_ref_sel),
.tx_have_space(overo_gpio144), .tx_underrun(overo_gpio145),
.rx_have_data(overo_gpio146), .rx_overrun(overo_gpio147),
.io_tx(io_tx), .io_rx(io_rx) );
diff --git a/usrp2/top/u1e/u1e_core.v b/usrp2/top/u1e/u1e_core.v
index c74d385ee..4f0227dfd 100644
--- a/usrp2/top/u1e/u1e_core.v
+++ b/usrp2/top/u1e/u1e_core.v
@@ -10,7 +10,8 @@ module u1e_core
inout db_sda, inout db_scl,
output sclk, output [7:0] sen, output mosi, input miso,
-
+
+ input cgen_st_status, input cgen_st_ld, input cgen_st_refmon, output cgen_sync_b, output cgen_ref_sel,
output tx_have_space, output tx_underrun, output rx_have_data, output rx_overrun,
inout [15:0] io_tx, inout [15:0] io_rx
);
@@ -151,13 +152,15 @@ module u1e_core
assign sc_ack = 0; assign sd_ack = 0; assign se_ack = 0; assign sf_ack = 0;
// /////////////////////////////////////////////////////////////////////////////////////
- // Slave 0, LEDs and Switches
+ // Slave 0, Misc LEDs, Switches, controls
reg [15:0] reg_fast, reg_slow;
localparam REG_FAST = 7'd4;
localparam REG_SWITCHES = 7'd6;
localparam REG_GPIOS = 7'd8;
-
+ localparam REG_CGEN_ST = 7'd9;
+ localparam REG_CGEN_CTRL = 7'd10;
+
reg [3:0] reg_gpios;
always @(posedge wb_clk)
@@ -168,8 +171,19 @@ module u1e_core
if(s0_cyc & s0_stb & s0_we & (s0_adr[6:0] == REG_GPIOS))
reg_gpios <= s0_dat_mosi;
+ reg [1:0] reg_cgen_ctrls;
+
+ always @(posedge wb_clk)
+ if(wb_rst)
+ reg_cgen_ctrls <= 2'b11;
+ else if(s0_cyc & s0_stb & s0_we & (s0_adr[6:0] == REG_CGEN_CTRL))
+ reg_cgen_ctrls <= s0_dat_mosi;
+
+ assign {cgen_sync_b, cgen_ref_sel} = reg_cgen_ctrls;
+
assign s0_dat_miso = (s0_adr[6:0] == REG_FAST) ? reg_fast :
(s0_adr[6:0] == REG_SWITCHES) ? {5'b0,debug_pb[2:0],dip_sw[7:0]} :
+ (s0_adr[6:0] == REG_CGEN_ST) ? {13'b0,cgen_st_status,cgen_st_ld,cgen_st_refmon} :
16'hBEEF;
assign s0_ack = s0_stb & s0_cyc;