anchor.diff:     
      endinterface;
      
  +   interface PipeOut adc;
  +   
  +      method IQ first();
  +	 return(unpack(pack(infifo.first)));
  +      endmethod
  +      
  +      method Action deq() = infifo.deq;
  +   
  +      method Bool notEmpty() = infifo.notEmpty;
  +      
  +   endinterface
   
   
   endmodule
positive.code:    method Bit#(1) in_or();
  endinterface
  
  interface FMComms1ADC;
     interface FMComms1ADCPins pins;
     interface FMComms1ADCData adc;
  endinterface
  
  module mkFMComms1ADC(FMComms1ADC);
     
     Vector#(14, Wire#(Bit#(1))) adc_data_p <- replicateM(mkDWire(0));
     Vector#(14, Wire#(Bit#(1))) adc_data_n <- replicateM(mkDWire(0));
  
negative.code:    
     rule sendup_adc_data;
        adc_sdr_or.d(adc_or);
     endrule
     
     GearBox#(1, 2, IQ) gb <- mk1toNGearbox(adc_dco, adc_reset, adc_dco, adc_reset);
     SyncFIFOIfc#(Vector#(2, IQ)) infifo <= mkSyncBRAMFIFO(128, adc_dco, adc_reset, def_clock, def_reset);
     
     rule sendup_gb_data;
        gb.enq({data_i: adc_sdr_data.q1, z_i: 0, or_i: adc_sdr_or.q1,
  	 data_q: adc_sdr_data.q2, z_q: 0, or_q: adc_sdr_or.q2});
     endrule
  
     rule sendup_adc_fifo_data;
        infifoq1.enq(gb.deq());
     endrule
     
     interface FMComms1ADCPins;
  