From af018ded46343f7dba752b54a8600b5afcb656cb Mon Sep 17 00:00:00 2001
From: Josh Blum <josh@joshknows.com>
Date: Tue, 8 May 2012 13:45:26 -0700
Subject: fpga: xclock fix for edge case condition

---
 usrp2/gpmc/cross_clock_reader.v | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/usrp2/gpmc/cross_clock_reader.v b/usrp2/gpmc/cross_clock_reader.v
index a30e0385f..a8366badc 100644
--- a/usrp2/gpmc/cross_clock_reader.v
+++ b/usrp2/gpmc/cross_clock_reader.v
@@ -1,5 +1,5 @@
 //
-// Copyright 2011 Ettus Research LLC
+// Copyright 2011-2012 Ettus Research LLC
 //
 // This program is free software: you can redistribute it and/or modify
 // it under the terms of the GNU General Public License as published by
@@ -26,17 +26,19 @@ module cross_clock_reader
         output reg [WIDTH-1:0] out
     );
 
-    reg [WIDTH-1:0] shadow;
+    reg [WIDTH-1:0] shadow0, shadow1;
 
     always @(posedge clk) begin
         if (rst) begin
             out <= DEFAULT;
-            shadow <= DEFAULT;
+            shadow0 <= DEFAULT;
+            shadow1 <= DEFAULT;
         end
-        else if (shadow == in) begin
-            out <= shadow;
+        else if (shadow0 == shadow1) begin
+            out <= shadow1;
         end
-        shadow <= in;
+        shadow0 <= in;
+        shadow1 <= shadow0;
     end
 
 endmodule //cross_clock_reader
-- 
cgit v1.2.3