aboutsummaryrefslogtreecommitdiffstats
path: root/fpga/usrp3/top/x300/capture_ddrlvds.v
diff options
context:
space:
mode:
authorAshish Chaudhari <ashish@ettus.com>2014-08-20 09:06:32 -0700
committerAshish Chaudhari <ashish@ettus.com>2014-08-20 09:06:32 -0700
commit72eae0503393966dfb2b961835ad1f9c5e5265e7 (patch)
tree60db7af4b572f280f3017b8ba3a5f39657c58816 /fpga/usrp3/top/x300/capture_ddrlvds.v
parent505c1d84fa7c53c0c640fab73b88c164671c7b91 (diff)
parentd31ffb2ef869b05fc4aeafd6bf588e62dca7ee82 (diff)
downloaduhd-72eae0503393966dfb2b961835ad1f9c5e5265e7.tar.gz
uhd-72eae0503393966dfb2b961835ad1f9c5e5265e7.tar.bz2
uhd-72eae0503393966dfb2b961835ad1f9c5e5265e7.zip
Merge branch 'master' into ashish/cat_refactor_phase2
Diffstat (limited to 'fpga/usrp3/top/x300/capture_ddrlvds.v')
-rw-r--r--fpga/usrp3/top/x300/capture_ddrlvds.v54
1 files changed, 10 insertions, 44 deletions
diff --git a/fpga/usrp3/top/x300/capture_ddrlvds.v b/fpga/usrp3/top/x300/capture_ddrlvds.v
index 193caf6e1..308171fc7 100644
--- a/fpga/usrp3/top/x300/capture_ddrlvds.v
+++ b/fpga/usrp3/top/x300/capture_ddrlvds.v
@@ -1,25 +1,26 @@
//
-// Copyright 2011 Ettus Research LLC
+// Copyright 2011-2014 Ettus Research LLC
//
-
-
+// The two clocks are aligned externally in order to eliminate the need for a FIFO.
+// A FIFO cannot be used to transition between clock domains because it can cause
+// alignment issues between the output of multiple modules.
module capture_ddrlvds
#(parameter WIDTH=7,
parameter X300=0)
(input clk,
- input reset,
input ssclk_p,
input ssclk_n,
input [WIDTH-1:0] in_p,
input [WIDTH-1:0] in_n,
- output [(2*WIDTH)-1:0] out);
+ output reg [(2*WIDTH)-1:0] out);
wire [WIDTH-1:0] ddr_dat;
wire ssclk;
wire [(2*WIDTH)-1:0] out_pre1;
- wire ssclk_bufio1, ssclk_bufio2, ssclk_bufr, ssclk_bufmr;
+ reg [(2*WIDTH)-1:0] out_pre2;
+ wire ssclk_bufio1, ssclk_bufio2, ssclk_bufmr;
IBUFGDS #(.DIFF_TERM("TRUE"))
clkbuf (.O(ssclk), .I(ssclk_p), .IB(ssclk_n));
@@ -33,20 +34,12 @@ module capture_ddrlvds
.I(ssclk_bufmr),
.O(ssclk_bufio1)
);
+
BUFIO clkbufio2 (
.I(ssclk_bufmr),
.O(ssclk_bufio2)
);
- BUFR
- #(.SIM_DEVICE("7SERIES"),
- .BUFR_DIVIDE("BYPASS"))
- clkbufr (
- .I(ssclk_bufmr),
- .O(ssclk_bufr)
- );
-
-
genvar i;
generate
@@ -68,34 +61,7 @@ module capture_ddrlvds
end
endgenerate
-
-
- reg rd_en;
- wire full, empty, almost_empty;
-
-
- input_sample_fifo input_sample_fifo_i
- (
- .rst(reset), // input rst
- .wr_clk(ssclk_bufr), // input wr_clk
- .rd_clk(clk), // input rd_clk
- .din(out_pre1), // input [27 : 0] din
- .wr_en(1'b1), // input wr_en
- .rd_en(rd_en), // input rd_en
- .dout(out), // output [27 : 0] dout
- .full(full), // output full
- .empty(empty), // output empty
- .almost_empty(almost_empty) // output almost_empty
- );
-
-
- always @(posedge clk) begin
- if (reset)
- rd_en <= 0;
- else if (~almost_empty)
- rd_en <= 1;
- else if (empty)
- rd_en <= 0;
- end
+ always @(posedge clk)
+ {out, out_pre2} <= {out_pre2, out_pre1};
endmodule // capture_ddrlvds