Revision 7c50d20e usrp2/vrt/vita_rx_framer.v

b/usrp2/vrt/vita_rx_framer.v
99 99
   localparam VITA_ERR_TICS 	 = 12;
100 100
   localparam VITA_ERR_TICS2 	 = 13;
101 101
   localparam VITA_ERR_PAYLOAD 	 = 14;
102
   localparam VITA_ERR_TRAILER 	 = 15;
102
   localparam VITA_ERR_TRAILER 	 = 15; // Extension context packets have no trailer
103 103
      
104 104
   always @(posedge clk)
105 105
     if(reset | clear_pkt_count)
......
107 107
     else if((vita_state == VITA_TRAILER) & pkt_fifo_rdy)
108 108
       pkt_count <= pkt_count + 1;
109 109

  
110
   wire 	  has_streamid = vita_header[28];
111
   wire 	  has_trailer = vita_header[26];
112
   reg 		  trl_eob;
113
   
110 114
   always @*
111 115
     case(vita_state)
112
       VITA_HEADER, VITA_ERR_HEADER : pkt_fifo_line <= {2'b01,vita_header[31:20],pkt_count,vita_pkt_len};
113
       VITA_STREAMID, VITA_ERR_STREAMID : pkt_fifo_line <= {2'b00,vita_streamid};
114
       VITA_SECS, VITA_ERR_SECS : pkt_fifo_line <= {2'b00,vita_time_fifo_o[63:32]};
115
       VITA_TICS, VITA_ERR_TICS : pkt_fifo_line <= {2'b00,32'd0};
116
       VITA_TICS2, VITA_ERR_TICS2 : pkt_fifo_line <= {2'b00,vita_time_fifo_o[31:0]};
116
       // Data packets are IF Data packets with or w/o streamid, no classid, with trailer
117
       VITA_HEADER : pkt_fifo_line <= {2'b01,3'b000,vita_header[28],2'b01,vita_header[25:20],pkt_count,vita_pkt_len};
118
       VITA_STREAMID : pkt_fifo_line <= {2'b00,vita_streamid};
119
       VITA_SECS : pkt_fifo_line <= {2'b00,vita_time_fifo_o[63:32]};
120
       VITA_TICS : pkt_fifo_line <= {2'b00,32'd0};
121
       VITA_TICS2 : pkt_fifo_line <= {2'b00,vita_time_fifo_o[31:0]};
117 122
       VITA_PAYLOAD : pkt_fifo_line <= {2'b00,data_fifo_o};
118
       VITA_ERR_PAYLOAD : pkt_fifo_line <= {2'b00,28'd0,flags_fifo_o};
119
       VITA_TRAILER : pkt_fifo_line <= {2'b10,vita_trailer};
120
       VITA_ERR_TRAILER : pkt_fifo_line <= {2'b11,vita_trailer};
123
       VITA_TRAILER : pkt_fifo_line <= {2'b10,vita_trailer[31:21],1'b1,vita_trailer[19:9],trl_eob,8'd0};
124

  
125
       // Error packets are Extension Context packets, which have no trailer
126
       VITA_ERR_HEADER : pkt_fifo_line <= {2'b01,4'b0101,4'b0000,vita_header[23:20],pkt_count,16'd6};
127
       VITA_ERR_STREAMID : pkt_fifo_line <= {2'b00,vita_streamid};
128
       VITA_ERR_SECS : pkt_fifo_line <= {2'b00,vita_time_fifo_o[63:32]};
129
       VITA_ERR_TICS : pkt_fifo_line <= {2'b00,32'd0};
130
       VITA_ERR_TICS2 : pkt_fifo_line <= {2'b00,vita_time_fifo_o[31:0]};
131
       VITA_ERR_PAYLOAD : pkt_fifo_line <= {2'b11,28'd0,flags_fifo_o};
132
       //VITA_ERR_TRAILER : pkt_fifo_line <= {2'b11,vita_trailer};
133
       
121 134
       default : pkt_fifo_line <= 34'h0_FFFF_FFFF;
122 135
       endcase // case (vita_state)
123 136

  
......
141 154
	 end
142 155
       else if(pkt_fifo_rdy)
143 156
	 case(vita_state)
157
	   VITA_HEADER :
158
	     if(has_streamid)
159
	       vita_state <= VITA_STREAMID;
160
	     else
161
	       vita_state <= VITA_SECS;
144 162
	   VITA_PAYLOAD :
145 163
	     if(sample_fifo_src_rdy_i)
146 164
	       begin
......
148 166
		    begin
149 167
		       sample_phase <= 0;
150 168
		       sample_ctr   <= sample_ctr + 1;
169
		       trl_eob <= flags_fifo_o[0];
151 170
		       if(sample_ctr == samples_per_packet)
152 171
			 vita_state <= VITA_TRAILER;
153 172
		       if(|flags_fifo_o)   // end early if any flag is set
......
155 174
		    end
156 175
		  else
157 176
		    sample_phase <= sample_phase + 1;
158
	       end
159
	   VITA_TRAILER, VITA_ERR_TRAILER :
177
	       end // if (sample_fifo_src_rdy_i)
178
	   VITA_ERR_PAYLOAD :
179
	     vita_state <= VITA_IDLE;
180
	   VITA_TRAILER :
160 181
	     vita_state <= VITA_IDLE;
161 182
	   default :
162 183
	     vita_state 	   <= vita_state + 1;

Also available in: Unified diff