commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r8133 - usrp2/trunk/fpga/sdr_lib


From: matt
Subject: [Commit-gnuradio] r8133 - usrp2/trunk/fpga/sdr_lib
Date: Fri, 28 Mar 2008 16:20:36 -0600 (MDT)

Author: matt
Date: 2008-03-28 16:20:36 -0600 (Fri, 28 Mar 2008)
New Revision: 8133

Modified:
   usrp2/trunk/fpga/sdr_lib/hb_dec.v
Log:
progress


Modified: usrp2/trunk/fpga/sdr_lib/hb_dec.v
===================================================================
--- usrp2/trunk/fpga/sdr_lib/hb_dec.v   2008-03-28 22:20:01 UTC (rev 8132)
+++ usrp2/trunk/fpga/sdr_lib/hb_dec.v   2008-03-28 22:20:36 UTC (rev 8133)
@@ -13,7 +13,7 @@
      output reg stb_out,
      output [WIDTH-1:0] data_out);
 
-   wire [3:0]          addr_odd_a, addr_odd_b, addr_odd_c, addr_odd_d, 
addr_even;
+   reg [3:0]           addr_odd_a, addr_odd_b, addr_odd_c, addr_odd_d, 
addr_even;
    wire [WIDTH-1:0]    data_odd_a, data_odd_b, data_odd_c, data_odd_d, 
data_even;
    wire [WIDTH-1:0]    sum1, sum2;     
    reg [WIDTH-1:0]     final_sum;
@@ -21,23 +21,85 @@
 
    wire [2:0]          coeff_addr;
    wire [35:0]                 prod1, prod2;
+
+   wire                write_odd, write_even;
+   reg                         odd_even;
+   reg [2:0]           phase;
    
+   always @(posedge clk)
+     if(rst)
+       odd_even <= 0;
+     else if(stb_in)
+       odd_even <= ~odd_even;
+
+   assign              write_odd = stb_in & odd_even;
+   assign              write_even = stb_in & ~odd_even;
+
+   always @(posedge clk)
+     if(rst)
+       phase <= 0;
+     else if(stb_in & odd_even)
+       phase <= 1;
+     else if(phase == 4)
+       phase <= 0;
+     else if(phase != 0)
+       phase <= phase + 1;
+
+   assign              coeff_addr = phase;
+
    always @*
+     case(phase)
+       1 : addr_odd_a = 1;
+       2 : addr_odd_a = 7;
+       3 : addr_odd_a = 9;
+       4 : addr_odd_a = 15;
+       default : addr_odd_a = 3;
+     endcase // case(phase)
+   
+   always @*
+     case(phase)
+       1 : addr_odd_b = 1;
+       2 : addr_odd_b = 7;
+       3 : addr_odd_b = 9;
+       4 : addr_odd_b = 15;
+       default : addr_odd_b = 3;
+     endcase // case(phase)
+   
+   always @*
+     case(phase)
+       1 : addr_odd_c = 4;
+       2 : addr_odd_c = 5;
+       3 : addr_odd_c = 6;
+       4 : addr_odd_c = 15;
+       default : addr_odd_c = 3;
+     endcase // case(phase)
+   
+   always @*
+     case(phase)
+       1 : addr_odd_d = 2;
+       2 : addr_odd_d = 3;
+       3 : addr_odd_d = 5;
+       4 : addr_odd_d = 5;
+       default : addr_odd_d = 3;
+     endcase // case(phase)
+   
+   always @*
      case(coeff_addr)
-       0 : coeff1 <= 12345;
-       1 : coeff1 <= 1235;
-       2 : coeff1 <= 3456;
-       3 : coeff1 <= 345;
-       default : coeff1 <= 23456;
+       0 : coeff1 = 12345;
+       1 : coeff1 = 1235;
+       2 : coeff1 = 3456;
+       3 : coeff1 = 345;
+       3 : coeff1 = 345;
+       default : coeff1 = 23456;
      endcase // case(coeff_addr)
    
    always @*
      case(coeff_addr)
-       0 : coeff2 <= 12345;
-       1 : coeff2 <= 1235;
-       2 : coeff2 <= 3456;
-       3 : coeff2 <= 345;
-       default : coeff2 <= 23456;
+       0 : coeff2 = 12345;
+       1 : coeff2 = 12;
+       2 : coeff2 = 356;
+       3 : coeff2 = 45;
+       default : coeff2 = 23456;
      endcase // case(coeff_addr)
    
    srl #(.WIDTH(18)) srl_odd_a





reply via email to

[Prev in Thread] Current Thread [Next in Thread]