OpenCores
URL https://opencores.org/ocsvn/bluespec-h264/bluespec-h264/trunk

Subversion Repositories bluespec-h264

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 12 to Rev 13
    Reverse comparison

Rev 12 → Rev 13

/trunk/src_fpga/mkPrediction.bsv
309,9 → 309,9
currMbHor <= xdata;
currMbVer <= 0;
intra4x4typeLeft <= replicate(15);
interTopLeftVal <= replicate(NotInter 0);
interTopLeftVal <= replicate(tagged NotInter 0);
if(xdata==0)
interLeftVal <= replicate(NotInter 0);
interLeftVal <= replicate(tagged NotInter 0);
outFirstQPFlag <= True;
end
tagged SDmb_skip_run .xdata : passFlag <= False;
350,8 → 350,8
interRespCount <= 1;
intra4x4typeLeft <= replicate(14);
intra4x4typeTop <= replicate(14);
interTopLeftVal <= update(interTopLeftVal , 0, (NotInter 0));
interTopVal <= replicate(NotInter 0);
interTopLeftVal <= update(interTopLeftVal , 0, (tagged NotInter 0));
interTopVal <= replicate(tagged NotInter 0);
interPskipCount <= interPskipCount+1;
interNewestMv <= 0;
interRefIdxVector <= replicate(0);
389,9 → 389,9
$display( "ERROR Prediction: MacroblockLayer 5 sdmmbtype not I_16x16" );
intraReqCount <= 1;
intraRespCount <= 1;
interTopLeftVal <= replicate(NotInter 1);
interLeftVal <= replicate(NotInter 1);
interTopVal <= replicate(NotInter 1);
interTopLeftVal <= replicate(tagged NotInter 1);
interLeftVal <= replicate(tagged NotInter 1);
interTopVal <= replicate(tagged NotInter 1);
end
else
donotfire.doNotFire();
404,9 → 404,9
intrastate <= Intra4x4;
intraReqCount <= 1;
intraRespCount <= 1;
interTopLeftVal <= replicate(NotInter 1);
interLeftVal <= replicate(NotInter 1);
interTopVal <= replicate(NotInter 1);
interTopLeftVal <= replicate(tagged NotInter 1);
interLeftVal <= replicate(tagged NotInter 1);
interTopVal <= replicate(tagged NotInter 1);
end
else
donotfire.doNotFire();
417,9 → 417,9
$finish;////////////////////////////////////////////////////////////////////////////////////////
intra4x4typeLeft <= replicate(13);
intra4x4typeTop <= replicate(13);
interTopLeftVal <= replicate(NotInter 1);
interLeftVal <= replicate(NotInter 1);
interTopVal <= replicate(NotInter 1);
interTopLeftVal <= replicate(tagged NotInter 1);
interLeftVal <= replicate(tagged NotInter 1);
interTopVal <= replicate(tagged NotInter 1);
end
else
begin
438,8 → 438,8
interRespCount <= 1;
intra4x4typeLeft <= replicate(14);/////////////////////////////////////////////////////////////////////////////
intra4x4typeTop <= replicate(14);
interTopLeftVal <= update(interTopLeftVal , 0, (NotInter 0));
interTopVal <= replicate(NotInter 0);
interTopLeftVal <= update(interTopLeftVal , 0, (tagged NotInter 0));
interTopVal <= replicate(tagged NotInter 0);
interNewestMv <= 0;
interRefIdxVector <= replicate(0);
nextoutputfifo.enq(NonSkipMB);
548,7 → 548,7
else if(nextoutputfifo.first() == SkipMB)
begin
outputVector = predictedfifo.first();
outfifo.enq(PBoutput outputVector);
outfifo.enq(tagged PBoutput outputVector);
outputFlag = 1;
predictedfifo.deq();
$display( "Trace Prediction: outputing SkipMB out %h %h %h", outBlockNum, outPixelNum, outputVector);
559,7 → 559,7
tagged IBTmb_qp .xdata :
begin
infifo_ITB.deq();
outfifo.enq(IBTmb_qp {qpy:xdata.qpy,qpc:xdata.qpc});
outfifo.enq(tagged IBTmb_qp {qpy:xdata.qpy,qpc:xdata.qpc});
outFirstQPFlag <= False;
$display( "Trace Prediction: outputing ITBmb_qp %h %h %h", outBlockNum, outPixelNum, xdata);
end
576,7 → 576,7
else
outputVector[ii] = tempOutputValue[7:0];
end
outfifo.enq(PBoutput outputVector);
outfifo.enq(tagged PBoutput outputVector);
infifo_ITB.deq();
predictedfifo.deq();
outputFlag = 1;
587,7 → 587,7
if(outPixelNum == 12)
infifo_ITB.deq();
outputVector = predictedfifo.first();
outfifo.enq(PBoutput outputVector);
outfifo.enq(tagged PBoutput outputVector);
outputFlag = 1;
predictedfifo.deq();
$display( "Trace Prediction: outputing ITBcoeffLevelZeros out %h %h %h %h %h", outChromaFlag, outBlockNum, outPixelNum, predictedfifo.first(), outputVector);
801,7 → 801,7
end
if(!noMoreReq)
begin
interMemReqQ.enq(LoadReq temp);
interMemReqQ.enq(tagged LoadReq temp);
interReqCount <= interReqCount+1;
//$display( "TRACE Prediction: interSendReq addr %0d",temp);///////////////////////
end
820,8 → 820,8
interIPStepCount <= 1;
if(currMbHorTemp == 0)
begin
interLeftVal <= replicate(NotInter 0);
interTopLeftVal <= replicate(NotInter 0);
interLeftVal <= replicate(tagged NotInter 0);
interTopLeftVal <= replicate(tagged NotInter 0);
end
$display( "Trace Prediction: interReceiveNoResp %h %h", interstate, interRespCount);
endrule
875,8 → 875,8
interIPStepCount <= 1;
if(currMbHorTemp == 0)
begin
interLeftVal <= replicate(NotInter 0);
interTopLeftValNext = replicate(NotInter 0);
interLeftVal <= replicate(tagged NotInter 0);
interTopLeftValNext = replicate(tagged NotInter 0);
end
end
interTopVal <= interTopValNext;
970,17 → 970,17
else
$display( "ERROR Prediction: interProcessStep unexpected interstate");
Bit#(4) refIndex = ((interstate==InterPskip||interstate==InterP8x8ref0) ? 0 : interRefIdxVector[interMbPartNum]);
Vector#(3,InterBlockMv) blockABC = replicate(NotInter 0);
Vector#(3,InterBlockMv) blockABC = replicate(tagged NotInter 0);
if( currMbTemp-firstMb==0 && blockHor==0 )
blockABC[0] = (NotInter 0);
blockABC[0] = (tagged NotInter 0);
else
blockABC[0] = interLeftVal[blockVer];
if( currMbTemp-firstMb<zeroExtend(picWidth) && blockVer==0 )
blockABC[1] = (NotInter 0);
blockABC[1] = (tagged NotInter 0);
else
blockABC[1] = interTopVal[blockHor];
blockABC[2] = interTopVal[{1'b0,blockHor}+partWidth];
if(noBlockC || blockABC[2]==(NotInter 0))
if(noBlockC || blockABC[2]==(tagged NotInter 0))
blockABC[2] = interTopLeftVal[blockVer];
partWidthR <= partWidth;
1328,7 → 1328,7
end
if(noMoreReq == 0)
begin
intraMemReqQ.enq(LoadReq temp);
intraMemReqQ.enq(tagged LoadReq temp);
intraReqCount <= intraReqCount+1;
//$display( "TRACE Prediction: intraSendReq addr %0d",temp);///////////////////////
end
1344,7 → 1344,7
intraStepCount <= 1;
blockNum <= 0;
pixelNum <= 0;
interOutBlockMvfifo.enq(NotInter 1);
interOutBlockMvfifo.enq(tagged NotInter 1);
$display( "Trace Prediction: intraReceiveNoResp");
endrule
 
1406,7 → 1406,7
intraStepCount <= 1;
blockNum <= 0;
pixelNum <= 0;
interOutBlockMvfifo.enq(NotInter 1);
interOutBlockMvfifo.enq(tagged NotInter 1);
end
$display( "Trace Prediction: intraReceiveResp");
endrule
/trunk/src_fpga/mkDeblockFilter.bsv
73,7 → 73,7
tagged NewUnit . xdata :
begin
infifo.deq();
outfifo.enq(EDOT infifo.first());
outfifo.enq(tagged EDOT infifo.first());
$display("ccl5newunit");
$display("ccl5rbspbyte %h", xdata);
end
80,19 → 80,19
tagged SPSpic_width_in_mbs .xdata :
begin
infifo.deq();
outfifo.enq(EDOT infifo.first());
outfifo.enq(tagged EDOT infifo.first());
picWidth <= xdata;
end
tagged SPSpic_height_in_map_units .xdata :
begin
infifo.deq();
outfifo.enq(EDOT infifo.first());
outfifo.enq(tagged EDOT infifo.first());
picHeight <= xdata;
end
tagged SHfirst_mb_in_slice .xdata :
begin
infifo.deq();
outfifo.enq(EDOT infifo.first());
outfifo.enq(tagged EDOT infifo.first());
firstMb <= xdata;
currMb <= xdata;
currMbHor <= xdata;
108,9 → 108,9
Bit#(PicWidthSz) currMbHorT = truncate(currMbHor);
Bit#(32) pixelq = {xdata[3],xdata[2],xdata[1],xdata[0]};
if(chromaFlag==0)
outfifo.enq(DFBLuma {ver:{currMbVer,blockVer,pixelVer},hor:{currMbHorT,blockHor},data:pixelq});
outfifo.enq(tagged DFBLuma {ver:{currMbVer,blockVer,pixelVer},hor:{currMbHorT,blockHor},data:pixelq});
else
outfifo.enq(DFBChroma {uv:blockHor[1],ver:{currMbVer,blockVer[0],pixelVer},hor:{currMbHorT,blockHor[0]},data:pixelq});
outfifo.enq(tagged DFBChroma {uv:blockHor[1],ver:{currMbVer,blockVer[0],pixelVer},hor:{currMbHorT,blockHor[0]},data:pixelq});
if(pixelNum == 12)
begin
pixelNum <= 0;
138,7 → 138,7
tagged EndOfFile :
begin
infifo.deq();
outfifo.enq(EDOT infifo.first());
outfifo.enq(tagged EDOT infifo.first());
$display( "ccl5: EndOfFile reached");
//$finish(0);
end
145,7 → 145,7
default:
begin
infifo.deq();
outfifo.enq(EDOT infifo.first());
outfifo.enq(tagged EDOT infifo.first());
end
endcase
endrule
168,7 → 168,7
 
 
rule outputEndOfFrame(endOfFrame);
outfifo.enq(EndOfFrame);
outfifo.enq(tagged EndOfFrame);
endOfFrame <= False;
//$display( "Trace Deblocking Filter: outputEndOfFrame %h", pack(infifo.first()));
endrule
/trunk/src_fpga/mkEntropyDec.bsv
189,11 → 189,11
nalrefidc <= rdata[6:5];
nalunittype <= rdata[4:0];
case (rdata[4:0])
1 : state <= CodedSlice 0;
5 : state <= CodedSlice 0;
1 : state <= tagged CodedSlice 0;
5 : state <= tagged CodedSlice 0;
6 : state <= SEI;
7 : state <= SPS 0;
8 : state <= PPS 0;
7 : state <= tagged SPS 0;
8 : state <= tagged PPS 0;
9 : state <= AUD;
10: state <= EndSequence;
11: state <= EndStream;
206,8 → 206,8
endcase
$display("ccl2newunit");
$display("ccl2rbspbyte %h", rdata);
outfifo.enq(NewUnit rdata);
outfifo_ITB.enq(NewUnit rdata);
outfifo.enq(tagged NewUnit rdata);
outfifo_ITB.enq(tagged NewUnit rdata);
end
tagged EndOfFile : state <= Start;
endcase
280,26 → 280,26
0:
begin
$display( "ccl2SHfirst_mb_in_slice %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHfirst_mb_in_slice truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SHfirst_mb_in_slice truncate(expgolomb_unsigned(buffer)));
currMbAddr <= truncate(expgolomb_unsigned(buffer));
calcnc.initialize(truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 1;
nextstate = tagged CodedSlice 1;
end
1:
begin
$display( "ccl2SHslice_type %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHslice_type truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SHslice_type truncate(expgolomb_unsigned(buffer)));
shslice_type <= truncate(expgolomb_unsigned(buffer));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 2;
nextstate = tagged CodedSlice 2;
end
2:
begin
$display( "ccl2SHpic_parameter_set_id %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHpic_parameter_set_id truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SHpic_parameter_set_id truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 3;
nextstate = tagged CodedSlice 3;
if(ppspic_parameter_set_id != truncate(expgolomb_unsigned(buffer))) $display( "ERROR EntropyDec: pic_parameter_set_id don't match" );
end
3:
307,9 → 307,9
Bit#(16) tttt = buffer[buffersize-1:buffersize-16];
tttt = tttt >> 16 - zeroExtend(spslog2_max_frame_num);
$display( "ccl2SHframe_num %0d", tttt );
outfifo.enq(SHframe_num tttt);
outfifo.enq(tagged SHframe_num tttt);
numbitsused = zeroExtend(spslog2_max_frame_num);
nextstate = CodedSlice 4;
nextstate = tagged CodedSlice 4;
end
4:
begin
316,10 → 316,10
if(nalunittype == 5)
begin
$display( "ccl2SHidr_pic_id %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHidr_pic_id truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SHidr_pic_id truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
end
nextstate = CodedSlice 5;
nextstate = tagged CodedSlice 5;
end
5:
begin
328,12 → 328,12
Bit#(16) tttt = buffer[buffersize-1:buffersize-16];
tttt = tttt >> 16 - zeroExtend(spslog2_max_pic_order_cnt_lsb);
$display( "ccl2SHpic_order_cnt_lsb %0d", tttt );
outfifo.enq(SHpic_order_cnt_lsb tttt);
outfifo.enq(tagged SHpic_order_cnt_lsb tttt);
numbitsused = zeroExtend(spslog2_max_pic_order_cnt_lsb);
nextstate = CodedSlice 6;
nextstate = tagged CodedSlice 6;
end
else
nextstate = CodedSlice 7;
nextstate = tagged CodedSlice 7;
end
6:
begin
344,20 → 344,20
Bufcount tempbufcount = expgolomb_numbits32(buffer);
egnumbits <= tempbufcount;
numbitsused = tempbufcount-1;
nextstate = CodedSlice 6;
nextstate = tagged CodedSlice 6;
end
else
begin
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
$display( "ccl2SHdelta_pic_order_cnt_bottom %0d", tempint32 );
outfifo.enq(SHdelta_pic_order_cnt_bottom truncate(expgolomb_signed32(buffer,egnumbits)));
outfifo.enq(tagged SHdelta_pic_order_cnt_bottom truncate(expgolomb_signed32(buffer,egnumbits)));
egnumbits <= 0;
numbitsused = egnumbits;
nextstate = CodedSlice 7;
nextstate = tagged CodedSlice 7;
end
end
else
nextstate = CodedSlice 7;
nextstate = tagged CodedSlice 7;
end
7:
begin
368,20 → 368,20
Bufcount tempbufcount = expgolomb_numbits32(buffer);
egnumbits <= tempbufcount;
numbitsused = tempbufcount-1;
nextstate = CodedSlice 7;
nextstate = tagged CodedSlice 7;
end
else
begin
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
$display( "ccl2SHdelta_pic_order_cnt0 %0d", tempint32 );
outfifo.enq(SHdelta_pic_order_cnt0 truncate(expgolomb_signed32(buffer,egnumbits)));
outfifo.enq(tagged SHdelta_pic_order_cnt0 truncate(expgolomb_signed32(buffer,egnumbits)));
egnumbits <= 0;
numbitsused = egnumbits;
nextstate = CodedSlice 8;
nextstate = tagged CodedSlice 8;
end
end
else
nextstate = CodedSlice 9;
nextstate = tagged CodedSlice 9;
end
8:
begin
392,20 → 392,20
Bufcount tempbufcount = expgolomb_numbits32(buffer);
egnumbits <= tempbufcount;
numbitsused = tempbufcount-1;
nextstate = CodedSlice 8;
nextstate = tagged CodedSlice 8;
end
else
begin
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
$display( "ccl2SHdelta_pic_order_cnt1 %0d", tempint32 );
outfifo.enq(SHdelta_pic_order_cnt1 truncate(expgolomb_signed32(buffer,egnumbits)));
outfifo.enq(tagged SHdelta_pic_order_cnt1 truncate(expgolomb_signed32(buffer,egnumbits)));
egnumbits <= 0;
numbitsused = egnumbits;
nextstate = CodedSlice 9;
nextstate = tagged CodedSlice 9;
end
end
else
nextstate = CodedSlice 9;
nextstate = tagged CodedSlice 9;
end
9:
begin
412,23 → 412,23
if(shslice_type == 0 || shslice_type == 5)
begin
$display( "ccl2SHnum_ref_idx_active_override_flag %0d", buffer[buffersize-1] );
outfifo.enq(SHnum_ref_idx_active_override_flag buffer[buffersize-1]);
outfifo.enq(tagged SHnum_ref_idx_active_override_flag buffer[buffersize-1]);
numbitsused = 1;
if(buffer[buffersize-1] == 1)
nextstate = CodedSlice 10;
nextstate = tagged CodedSlice 10;
else
nextstate = CodedSlice 11;
nextstate = tagged CodedSlice 11;
end
else
nextstate = CodedSlice 11;
nextstate = tagged CodedSlice 11;
end
10:
begin
$display( "ccl2SHnum_ref_idx_l0_active %0d", expgolomb_unsigned(buffer)+1 );
outfifo.enq(SHnum_ref_idx_l0_active truncate(expgolomb_unsigned(buffer)+1));
outfifo.enq(tagged SHnum_ref_idx_l0_active truncate(expgolomb_unsigned(buffer)+1));
num_ref_idx_l0_active_minus1 <= truncate(expgolomb_unsigned(buffer));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 11;
nextstate = tagged CodedSlice 11;
end
11:
begin
435,87 → 435,87
if(shslice_type != 2 && shslice_type != 7)
begin
$display( "ccl2SHRref_pic_list_reordering_flag_l0 %0d", buffer[buffersize-1] );
outfifo.enq(SHRref_pic_list_reordering_flag_l0 buffer[buffersize-1]);
outfifo.enq(tagged SHRref_pic_list_reordering_flag_l0 buffer[buffersize-1]);
numbitsused = 1;
if(buffer[buffersize-1] == 1)
nextstate = CodedSlice 12;
nextstate = tagged CodedSlice 12;
else
nextstate = CodedSlice 15;
nextstate = tagged CodedSlice 15;
end
else
nextstate = CodedSlice 15;
nextstate = tagged CodedSlice 15;
end
12:
begin
$display( "ccl2SHRreordering_of_pic_nums_idc %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHRreordering_of_pic_nums_idc truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SHRreordering_of_pic_nums_idc truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
if(expgolomb_unsigned(buffer)==0 || expgolomb_unsigned(buffer)==1)
nextstate = CodedSlice 13;
nextstate = tagged CodedSlice 13;
else if(expgolomb_unsigned(buffer)==2)
nextstate = CodedSlice 14;
nextstate = tagged CodedSlice 14;
else
nextstate = CodedSlice 15;
nextstate = tagged CodedSlice 15;
end
13:
begin
Bit#(17) temp17 = zeroExtend(expgolomb_unsigned(buffer)) + 1;
$display( "ccl2SHRabs_diff_pic_num %0d", temp17 );
outfifo.enq(SHRabs_diff_pic_num temp17);
outfifo.enq(tagged SHRabs_diff_pic_num temp17);
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 12;
nextstate = tagged CodedSlice 12;
end
14:
begin
$display( "ccl2SHRlong_term_pic_num %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHRlong_term_pic_num truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SHRlong_term_pic_num truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 12;
nextstate = tagged CodedSlice 12;
end
15:
begin
if(nalrefidc == 0)
nextstate = CodedSlice 23;
nextstate = tagged CodedSlice 23;
else
begin
if(nalunittype == 5)
begin
$display( "ccl2SHDno_output_of_prior_pics_flag %0d", buffer[buffersize-1] );
outfifo.enq(SHDno_output_of_prior_pics_flag buffer[buffersize-1]);
outfifo.enq(tagged SHDno_output_of_prior_pics_flag buffer[buffersize-1]);
numbitsused = 1;
nextstate = CodedSlice 16;
nextstate = tagged CodedSlice 16;
end
else
nextstate = CodedSlice 17;
nextstate = tagged CodedSlice 17;
end
end
16:
begin
$display( "ccl2SHDlong_term_reference_flag %0d", buffer[buffersize-1] );
outfifo.enq(SHDlong_term_reference_flag buffer[buffersize-1]);
outfifo.enq(tagged SHDlong_term_reference_flag buffer[buffersize-1]);
numbitsused = 1;
nextstate = CodedSlice 23;
nextstate = tagged CodedSlice 23;
end
17:
begin
$display( "ccl2SHDadaptive_ref_pic_marking_mode_flag %0d", buffer[buffersize-1] );
outfifo.enq(SHDadaptive_ref_pic_marking_mode_flag buffer[buffersize-1]);
outfifo.enq(tagged SHDadaptive_ref_pic_marking_mode_flag buffer[buffersize-1]);
numbitsused = 1;
if(buffer[buffersize-1] == 1)
nextstate = CodedSlice 18;
nextstate = tagged CodedSlice 18;
else
nextstate = CodedSlice 23;
nextstate = tagged CodedSlice 23;
end
18:
begin
$display( "ccl2SHDmemory_management_control_operation %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHDmemory_management_control_operation truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SHDmemory_management_control_operation truncate(expgolomb_unsigned(buffer)));
shdmemory_management_control_operation <= truncate(expgolomb_unsigned(buffer));
numbitsused = expgolomb_numbits(buffer);
if(expgolomb_unsigned(buffer)!=0)
nextstate = CodedSlice 19;
nextstate = tagged CodedSlice 19;
else
nextstate = CodedSlice 23;
nextstate = tagged CodedSlice 23;
end
19:
begin
523,12 → 523,12
begin
Bit#(17) temp17 = zeroExtend(expgolomb_unsigned(buffer)) + 1;
$display( "ccl2SHDdifference_of_pic_nums %0d", temp17 );
outfifo.enq(SHDdifference_of_pic_nums temp17);
outfifo.enq(tagged SHDdifference_of_pic_nums temp17);
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 20;
nextstate = tagged CodedSlice 20;
end
else
nextstate = CodedSlice 20;
nextstate = tagged CodedSlice 20;
end
20:
begin
535,12 → 535,12
if(shdmemory_management_control_operation==2)
begin
$display( "ccl2SHDlong_term_pic_num %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHDlong_term_pic_num truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SHDlong_term_pic_num truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 21;
nextstate = tagged CodedSlice 21;
end
else
nextstate = CodedSlice 21;
nextstate = tagged CodedSlice 21;
end
21:
begin
547,12 → 547,12
if(shdmemory_management_control_operation==3 || shdmemory_management_control_operation==6)
begin
$display( "ccl2SHDlong_term_frame_idx %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHDlong_term_frame_idx truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SHDlong_term_frame_idx truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 22;
nextstate = tagged CodedSlice 22;
end
else
nextstate = CodedSlice 22;
nextstate = tagged CodedSlice 22;
end
22:
begin
559,20 → 559,20
if(shdmemory_management_control_operation==4)
begin
$display( "ccl2SHDmax_long_term_frame_idx_plus1 %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHDmax_long_term_frame_idx_plus1 truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SHDmax_long_term_frame_idx_plus1 truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 18;
nextstate = tagged CodedSlice 18;
end
else
nextstate = CodedSlice 18;
nextstate = tagged CodedSlice 18;
end
23:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SHslice_qp_delta %0d", tempint );
outfifo_ITB.enq(SHslice_qp_delta truncate(expgolomb_signed(buffer)));
outfifo_ITB.enq(tagged SHslice_qp_delta truncate(expgolomb_signed(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 24;
nextstate = tagged CodedSlice 24;
end
24:
begin
579,35 → 579,35
if(ppsdeblocking_filter_control_present_flag==1)
begin
$display( "ccl2SHdisable_deblocking_filter_idc %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHdisable_deblocking_filter_idc truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SHdisable_deblocking_filter_idc truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
if(expgolomb_unsigned(buffer)!=1)
nextstate = CodedSlice 25;
nextstate = tagged CodedSlice 25;
else
nextstate = CodedSlice 27;
nextstate = tagged CodedSlice 27;
end
else
nextstate = CodedSlice 27;
nextstate = tagged CodedSlice 27;
end
25:
begin
tempint = unpack(expgolomb_signed(buffer) << 1);
$display( "ccl2SHslice_alpha_c0_offset %0d", tempint );
outfifo.enq(SHslice_alpha_c0_offset truncate(expgolomb_signed(buffer) << 1));
outfifo.enq(tagged SHslice_alpha_c0_offset truncate(expgolomb_signed(buffer) << 1));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 26;
nextstate = tagged CodedSlice 26;
end
26:
begin
tempint = unpack(expgolomb_signed(buffer) << 1);
$display( "ccl2SHslice_beta_offset %0d", tempint );
outfifo.enq(SHslice_beta_offset truncate(expgolomb_signed(buffer) << 1));
outfifo.enq(tagged SHslice_beta_offset truncate(expgolomb_signed(buffer) << 1));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 27;
nextstate = tagged CodedSlice 27;
end
27:
begin
nextstate = SliceData 0;
nextstate = tagged SliceData 0;
end
default: $display( "ERROR EntropyDec: CodedSlice default step" );
endcase
629,53 → 629,53
outputdata = buffer[buffersize-17:buffersize-24];
$display( "INFO EntropyDec: level_idc = %d", outputdata );
numbitsused = 24;
nextstate = SPS 1;
nextstate = tagged SPS 1;
end
1:
begin
$display( "ccl2SPSseq_parameter_set_id %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SPSseq_parameter_set_id truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SPSseq_parameter_set_id truncate(expgolomb_unsigned(buffer)));
spsseq_parameter_set_id <= truncate(expgolomb_unsigned(buffer));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 2;
nextstate = tagged SPS 2;
end
2:
begin
$display( "ccl2SPSlog2_max_frame_num %0d", expgolomb_unsigned(buffer)+4 );
outfifo.enq(SPSlog2_max_frame_num truncate(expgolomb_unsigned(buffer)+4));
outfifo.enq(tagged SPSlog2_max_frame_num truncate(expgolomb_unsigned(buffer)+4));
spslog2_max_frame_num <= truncate(expgolomb_unsigned(buffer)+4);
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 3;
nextstate = tagged SPS 3;
end
3:
begin
let tttt = expgolomb_unsigned(buffer);
$display( "ccl2SPSpic_order_cnt_type %0d", tttt );
outfifo.enq(SPSpic_order_cnt_type truncate(tttt));
outfifo.enq(tagged SPSpic_order_cnt_type truncate(tttt));
spspic_order_cnt_type <= truncate(tttt);
numbitsused = expgolomb_numbits(buffer);
if(tttt == 0)
nextstate = SPS 4;
nextstate = tagged SPS 4;
else if(tttt == 1)
nextstate = SPS 5;
nextstate = tagged SPS 5;
else
nextstate = SPS 10;
nextstate = tagged SPS 10;
end
4:
begin
$display( "ccl2SPSlog2_max_pic_order_cnt_lsb %0d", expgolomb_unsigned(buffer)+4 );
outfifo.enq(SPSlog2_max_pic_order_cnt_lsb truncate(expgolomb_unsigned(buffer)+4));
outfifo.enq(tagged SPSlog2_max_pic_order_cnt_lsb truncate(expgolomb_unsigned(buffer)+4));
spslog2_max_pic_order_cnt_lsb <= truncate(expgolomb_unsigned(buffer)+4);
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 10;
nextstate = tagged SPS 10;
end
5:
begin
$display( "ccl2SPSdelta_pic_order_always_zero_flag %0d", buffer[buffersize-1] );
outfifo.enq(SPSdelta_pic_order_always_zero_flag buffer[buffersize-1]);
outfifo.enq(tagged SPSdelta_pic_order_always_zero_flag buffer[buffersize-1]);
spsdelta_pic_order_always_zero_flag <= buffer[buffersize-1];
numbitsused = 1;
nextstate = SPS 6;
nextstate = tagged SPS 6;
end
6:
begin
684,16 → 684,16
Bufcount tempbufcount = expgolomb_numbits32(buffer);
egnumbits <= tempbufcount;
numbitsused = tempbufcount-1;
nextstate = SPS 6;
nextstate = tagged SPS 6;
end
else
begin
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
$display( "ccl2SPSoffset_for_non_ref_pic %0d", tempint32 );
outfifo.enq(SPSoffset_for_non_ref_pic truncate(expgolomb_signed32(buffer,egnumbits)));
outfifo.enq(tagged SPSoffset_for_non_ref_pic truncate(expgolomb_signed32(buffer,egnumbits)));
egnumbits <= 0;
numbitsused = egnumbits;
nextstate = SPS 7;
nextstate = tagged SPS 7;
end
end
7:
703,30 → 703,30
Bufcount tempbufcount = expgolomb_numbits32(buffer);
egnumbits <= tempbufcount;
numbitsused = tempbufcount-1;
nextstate = SPS 7;
nextstate = tagged SPS 7;
end
else
begin
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
$display( "ccl2SPSoffset_for_top_to_bottom_field %0d", tempint32 );
outfifo.enq(SPSoffset_for_top_to_bottom_field truncate(expgolomb_signed32(buffer,egnumbits)));
outfifo.enq(tagged SPSoffset_for_top_to_bottom_field truncate(expgolomb_signed32(buffer,egnumbits)));
egnumbits <= 0;
numbitsused = egnumbits;
nextstate = SPS 8;
nextstate = tagged SPS 8;
end
end
8:
begin
$display( "ccl2SPSnum_ref_frames_in_pic_order_cnt_cycle %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SPSnum_ref_frames_in_pic_order_cnt_cycle truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SPSnum_ref_frames_in_pic_order_cnt_cycle truncate(expgolomb_unsigned(buffer)));
spsnum_ref_frames_in_pic_order_cnt_cycle <= truncate(expgolomb_unsigned(buffer));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 9;
nextstate = tagged SPS 9;
end
9:
begin
if(spsnum_ref_frames_in_pic_order_cnt_cycle == 0)
nextstate = SPS 10;
nextstate = tagged SPS 10;
else
begin
if(egnumbits == 0)
734,17 → 734,17
Bufcount tempbufcount = expgolomb_numbits32(buffer);
egnumbits <= tempbufcount;
numbitsused = tempbufcount-1;
nextstate = SPS 9;
nextstate = tagged SPS 9;
end
else
begin
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
$display( "ccl2SPSoffset_for_ref_frame %0d", tempint32 );
outfifo.enq(SPSoffset_for_ref_frame truncate(expgolomb_signed32(buffer,egnumbits)));
outfifo.enq(tagged SPSoffset_for_ref_frame truncate(expgolomb_signed32(buffer,egnumbits)));
egnumbits <= 0;
spsnum_ref_frames_in_pic_order_cnt_cycle <= spsnum_ref_frames_in_pic_order_cnt_cycle - 1;
numbitsused = egnumbits;
nextstate = SPS 9;
nextstate = tagged SPS 9;
end
end
end
751,82 → 751,82
10:
begin
$display( "ccl2SPSnum_ref_frames %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SPSnum_ref_frames truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SPSnum_ref_frames truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 11;
nextstate = tagged SPS 11;
end
11:
begin
$display( "ccl2SPSgaps_in_frame_num_allowed_flag %0d", buffer[buffersize-1] );
outfifo.enq(SPSgaps_in_frame_num_allowed_flag buffer[buffersize-1]);
outfifo.enq(tagged SPSgaps_in_frame_num_allowed_flag buffer[buffersize-1]);
numbitsused = 1;
nextstate = SPS 12;
nextstate = tagged SPS 12;
end
12:
begin
$display( "ccl2SPSpic_width_in_mbs %0d", expgolomb_unsigned(buffer)+1 );
outfifo.enq(SPSpic_width_in_mbs truncate(expgolomb_unsigned(buffer)+1));
outfifo.enq(tagged SPSpic_width_in_mbs truncate(expgolomb_unsigned(buffer)+1));
calcnc.initialize_picWidth(truncate(expgolomb_unsigned(buffer)+1));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 13;
nextstate = tagged SPS 13;
end
13:
begin
$display( "ccl2SPSpic_height_in_map_units %0d", expgolomb_unsigned(buffer)+1 );
outfifo.enq(SPSpic_height_in_map_units truncate(expgolomb_unsigned(buffer)+1));
outfifo.enq(tagged SPSpic_height_in_map_units truncate(expgolomb_unsigned(buffer)+1));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 14;
nextstate = tagged SPS 14;
end
14:
begin
//SPSframe_mbs_only_flag = 1 for baseline
numbitsused = 1;
nextstate = SPS 15;
nextstate = tagged SPS 15;
end
15:
begin
$display( "ccl2SPSdirect_8x8_inference_flag %0d", buffer[buffersize-1] );
outfifo.enq(SPSdirect_8x8_inference_flag buffer[buffersize-1]);
outfifo.enq(tagged SPSdirect_8x8_inference_flag buffer[buffersize-1]);
numbitsused = 1;
nextstate = SPS 16;
nextstate = tagged SPS 16;
end
16:
begin
$display( "ccl2SPSframe_cropping_flag %0d", buffer[buffersize-1] );
outfifo.enq(SPSframe_cropping_flag buffer[buffersize-1]);
outfifo.enq(tagged SPSframe_cropping_flag buffer[buffersize-1]);
numbitsused = 1;
if(buffer[buffersize-1] == 1)
nextstate = SPS 17;
nextstate = tagged SPS 17;
else
nextstate = SPS 21;
nextstate = tagged SPS 21;
end
17:
begin
$display( "ccl2SPSframe_crop_left_offset %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SPSframe_crop_left_offset truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SPSframe_crop_left_offset truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 18;
nextstate = tagged SPS 18;
end
18:
begin
$display( "ccl2SPSframe_crop_right_offset %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SPSframe_crop_right_offset truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SPSframe_crop_right_offset truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 19;
nextstate = tagged SPS 19;
end
19:
begin
$display( "ccl2SPSframe_crop_top_offset %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SPSframe_crop_top_offset truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SPSframe_crop_top_offset truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 20;
nextstate = tagged SPS 20;
end
20:
begin
$display( "ccl2SPSframe_crop_bottom_offset %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SPSframe_crop_bottom_offset truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SPSframe_crop_bottom_offset truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 21;
nextstate = tagged SPS 21;
end
21:
begin
843,17 → 843,17
begin
ppspic_parameter_set_id <= truncate(expgolomb_unsigned(buffer));
$display( "ccl2PPSpic_parameter_set_id %0d", expgolomb_unsigned(buffer) );
outfifo.enq(PPSpic_parameter_set_id truncate(expgolomb_unsigned(buffer)));
outfifo_ITB.enq(PPSpic_parameter_set_id truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged PPSpic_parameter_set_id truncate(expgolomb_unsigned(buffer)));
outfifo_ITB.enq(tagged PPSpic_parameter_set_id truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = PPS 1;
nextstate = tagged PPS 1;
end
1:
begin
$display( "ccl2PPSseq_parameter_set_id %0d", expgolomb_unsigned(buffer) );
outfifo.enq(PPSseq_parameter_set_id truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged PPSseq_parameter_set_id truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = PPS 2;
nextstate = tagged PPS 2;
if(spsseq_parameter_set_id != truncate(expgolomb_unsigned(buffer)))
$display( "ERROR EntropyDec: seq_parameter_set_id don't match" );
end
861,20 → 861,20
begin
//PPSentropy_coding_mode_flag = 0 for baseline
numbitsused = 1;
nextstate = PPS 3;
nextstate = tagged PPS 3;
end
3:
begin
ppspic_order_present_flag <= buffer[buffersize-1];
$display( "ccl2PPSpic_order_present_flag %0d", buffer[buffersize-1] );
outfifo.enq(PPSpic_order_present_flag buffer[buffersize-1]);
outfifo.enq(tagged PPSpic_order_present_flag buffer[buffersize-1]);
numbitsused = 1;
nextstate = PPS 4;
nextstate = tagged PPS 4;
end
4:
begin
numbitsused = expgolomb_numbits(buffer);
nextstate = PPS 5;
nextstate = tagged PPS 5;
if(expgolomb_unsigned(buffer)+1 != 1)
$display( "ERROR EntropyDec: PPSnum_slice_groups not equal to 1" );//=1 for main
end
881,66 → 881,66
5:
begin
$display( "ccl2PPSnum_ref_idx_l0_active %0d", expgolomb_unsigned(buffer)+1 );
outfifo.enq(PPSnum_ref_idx_l0_active truncate(expgolomb_unsigned(buffer)+1));
outfifo.enq(tagged PPSnum_ref_idx_l0_active truncate(expgolomb_unsigned(buffer)+1));
num_ref_idx_l0_active_minus1 <= truncate(expgolomb_unsigned(buffer));
numbitsused = expgolomb_numbits(buffer);
nextstate = PPS 6;
nextstate = tagged PPS 6;
end
6:
begin
$display( "ccl2PPSnum_ref_idx_l1_active %0d", expgolomb_unsigned(buffer)+1 );
outfifo.enq(PPSnum_ref_idx_l1_active truncate(expgolomb_unsigned(buffer)+1));
outfifo.enq(tagged PPSnum_ref_idx_l1_active truncate(expgolomb_unsigned(buffer)+1));
numbitsused = expgolomb_numbits(buffer);
nextstate = PPS 7;
nextstate = tagged PPS 7;
end
7:
begin
//PPSweighted_pred_flag = 0 for baseline; PPSweighted_bipred_idc = 0 for baseline
numbitsused = 3;
nextstate = PPS 8;
nextstate = tagged PPS 8;
end
8:
begin
$display( "ccl2PPSpic_init_qp %0d", expgolomb_signed(buffer)+26 );
outfifo_ITB.enq(PPSpic_init_qp truncate(expgolomb_signed(buffer)+26));
outfifo_ITB.enq(tagged PPSpic_init_qp truncate(expgolomb_signed(buffer)+26));
numbitsused = expgolomb_numbits(buffer);
nextstate = PPS 9;
nextstate = tagged PPS 9;
end
9:
begin
$display( "ccl2PPSpic_init_qs %0d", expgolomb_signed(buffer)+26 );
outfifo_ITB.enq(PPSpic_init_qs truncate(expgolomb_signed(buffer)+26));
outfifo_ITB.enq(tagged PPSpic_init_qs truncate(expgolomb_signed(buffer)+26));
numbitsused = expgolomb_numbits(buffer);
nextstate = PPS 10;
nextstate = tagged PPS 10;
end
10:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2PPSchroma_qp_index_offset %0d", tempint );
outfifo_ITB.enq(PPSchroma_qp_index_offset truncate(expgolomb_signed(buffer)));
outfifo_ITB.enq(tagged PPSchroma_qp_index_offset truncate(expgolomb_signed(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = PPS 11;
nextstate = tagged PPS 11;
end
11:
begin
ppsdeblocking_filter_control_present_flag <= buffer[buffersize-1];
$display( "ccl2PPSdeblocking_filter_control_present_flag %0d", buffer[buffersize-1] );
outfifo.enq(PPSdeblocking_filter_control_present_flag buffer[buffersize-1]);
outfifo.enq(tagged PPSdeblocking_filter_control_present_flag buffer[buffersize-1]);
numbitsused = 1;
nextstate = PPS 12;
nextstate = tagged PPS 12;
end
12:
begin
$display( "ccl2PPSconstrained_intra_pred_flag %0d", buffer[buffersize-1] );
outfifo.enq(PPSconstrained_intra_pred_flag buffer[buffersize-1]);
outfifo.enq(tagged PPSconstrained_intra_pred_flag buffer[buffersize-1]);
numbitsused = 1;
nextstate = PPS 13;
nextstate = tagged PPS 13;
end
13:
begin
//PPSredundant_pic_cnt_present_flag = 0 for main
numbitsused = 1;
nextstate = PPS 14;
nextstate = tagged PPS 14;
if(buffer[buffersize-1] != 0)
$display( "ERROR EntropyDec: PPSredundant_pic_cnt_present_flag not equal to 0" );//=0 for main
end
953,7 → 953,7
end
tagged AUD .step :
begin
outfifo.enq(AUDPrimaryPicType buffer[buffersize-1:buffersize-3]);
outfifo.enq(tagged AUDPrimaryPicType buffer[buffersize-1:buffersize-3]);
numbitsused = 3;
nextstate = Start;
end
979,14 → 979,14
if( shslice_type!=2 && shslice_type!=7 )
begin
$display( "ccl2SDmb_skip_run %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDmb_skip_run truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SDmb_skip_run truncate(expgolomb_unsigned(buffer)));
tempreg <= truncate(expgolomb_unsigned(buffer));
calcnc.nNupdate_pskip( truncate(expgolomb_unsigned(buffer)) );
numbitsused = expgolomb_numbits(buffer);
nextstate = SliceData 1;
nextstate = tagged SliceData 1;
end
else
nextstate = SliceData 2;
nextstate = tagged SliceData 2;
end
1:
begin
994,13 → 994,13
begin
currMbAddr <= currMbAddr+1;//only because input assumed to comform to both baseline and main
tempreg <= tempreg-1;
nextstate = SliceData 1;
nextstate = tagged SliceData 1;
end
else
begin
////$display( "ccl2SDcurrMbAddr %0d", currMbAddr );
////outfifo.enq(SDcurrMbAddr currMbAddr);
nextstate = SliceData 2;
nextstate = tagged SliceData 2;
end
end
2:
1008,16 → 1008,16
if( bufcount>8 || buffer[buffersize-1]!=1 || (buffer<<1)!=0 )
begin
calcnc.loadMb(currMbAddr);
nextstate = MacroblockLayer 0;
nextstate = tagged MacroblockLayer 0;
end
else
nextstate = SliceData 3;
nextstate = tagged SliceData 3;
end
3:
begin
currMbAddr <= currMbAddr+1;//only because input assumed to comform to both baseline and main
if( bufcount>8 || buffer[buffersize-1]!=1 || (buffer<<1)!=0 )
nextstate = SliceData 0;
nextstate = tagged SliceData 0;
else
nextstate = Start;
end
1030,23 → 1030,23
0:
begin
$display( "ccl2SDMmb_type %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMmbtype mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) );
outfifo_ITB.enq(SDMmbtype mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) );
outfifo.enq(tagged SDMmbtype mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) );
outfifo_ITB.enq(tagged SDMmbtype mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) );
sdmmbtype <= mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type);
numbitsused = expgolomb_numbits(buffer);
if(mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) == I_PCM)
begin
calcnc.nNupdate_ipcm();
nextstate = MacroblockLayer 1;
nextstate = tagged MacroblockLayer 1;
end
else
nextstate = MacroblockLayer 4;
nextstate = tagged MacroblockLayer 4;
end
1:
begin
tempreg <= 256;
numbitsused = zeroExtend(bufcount[2:0]);
nextstate = MacroblockLayer 2;
nextstate = tagged MacroblockLayer 2;
end
2:
begin
1054,15 → 1054,15
begin
Bit#(8) outputdata = buffer[buffersize-1:buffersize-8];
$display( "ccl2SDMpcm_sample_luma %0d", outputdata );
outfifo.enq(SDMpcm_sample_luma outputdata);
outfifo.enq(tagged SDMpcm_sample_luma outputdata);
tempreg <= tempreg-1;
numbitsused = 8;
nextstate = MacroblockLayer 2;
nextstate = tagged MacroblockLayer 2;
end
else
begin
tempreg <= 128;
nextstate = MacroblockLayer 3;
nextstate = tagged MacroblockLayer 3;
end
end
3:
1071,13 → 1071,13
begin
Bit#(8) outputdata = buffer[buffersize-1:buffersize-8];
$display( "ccl2SDMpcm_sample_chroma %0d", outputdata );
outfifo.enq(SDMpcm_sample_chroma outputdata);
outfifo.enq(tagged SDMpcm_sample_chroma outputdata);
tempreg <= tempreg-1;
numbitsused = 8;
nextstate = MacroblockLayer 3;
nextstate = tagged MacroblockLayer 3;
end
else
nextstate = SliceData 3;
nextstate = tagged SliceData 3;
end
4:
begin
1084,9 → 1084,9
if(sdmmbtype != I_NxN
&&& mbPartPredMode(sdmmbtype,0) != Intra_16x16
&&& numMbPart(sdmmbtype) == 4)
nextstate = SubMbPrediction 0;
nextstate = tagged SubMbPrediction 0;
else
nextstate = MbPrediction 0;
nextstate = tagged MbPrediction 0;
end
5:
begin
1108,7 → 1108,7
else
$display( "ERROR EntropyDec: MacroblockLayer 5 sdmmbtype not I_16x16" );
end
nextstate = MacroblockLayer 6;
nextstate = tagged MacroblockLayer 6;
end
6:
begin
1118,12 → 1118,12
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMmb_qp_delta %0d", tempint );
outfifo_ITB.enq(SDMmb_qp_delta truncate(expgolomb_signed(buffer)));
outfifo_ITB.enq(tagged SDMmb_qp_delta truncate(expgolomb_signed(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = Residual 0;
nextstate = tagged Residual 0;
end
else
nextstate = Residual 0;
nextstate = tagged Residual 0;
end
default: $display( "ERROR EntropyDec: MacroblockLayer default step" );
endcase
1136,24 → 1136,24
if(mbPartPredMode(sdmmbtype,0) == Intra_16x16)
begin
$display( "ccl2SDMMintra_chroma_pred_mode %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMMintra_chroma_pred_mode truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SDMMintra_chroma_pred_mode truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = MacroblockLayer 5;
nextstate = tagged MacroblockLayer 5;
end
else if(mbPartPredMode(sdmmbtype,0) == Intra_4x4)
begin
temp5bit <= 16;
nextstate = MbPrediction 1;
nextstate = tagged MbPrediction 1;
end
else if(num_ref_idx_l0_active_minus1 > 0)
begin
temp3bit0 <= numMbPart(sdmmbtype);
nextstate = MbPrediction 2;
nextstate = tagged MbPrediction 2;
end
else
begin
temp3bit0 <= numMbPart(sdmmbtype);
nextstate = MbPrediction 3;
nextstate = tagged MbPrediction 3;
end
end
1:
1161,9 → 1161,9
if(temp5bit == 0)
begin
$display( "ccl2SDMMintra_chroma_pred_mode %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMMintra_chroma_pred_mode truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SDMMintra_chroma_pred_mode truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = MacroblockLayer 5;
nextstate = tagged MacroblockLayer 5;
end
else
begin
1172,16 → 1172,16
begin
Bit#(4) tttt = buffer[buffersize-1:buffersize-4];
$display( "ccl2SDMMrem_intra4x4_pred_mode %0d", tttt );
outfifo.enq(SDMMrem_intra4x4_pred_mode tttt);
outfifo.enq(tagged SDMMrem_intra4x4_pred_mode tttt);
numbitsused = 4;
end
else
begin
outfifo.enq(SDMMrem_intra4x4_pred_mode 4'b1000);
outfifo.enq(tagged SDMMrem_intra4x4_pred_mode 4'b1000);
numbitsused = 1;
end
temp5bit <= temp5bit-1;
nextstate = MbPrediction 1;
nextstate = tagged MbPrediction 1;
end
end
2:
1189,24 → 1189,24
if(num_ref_idx_l0_active_minus1 == 1)
begin
$display( "ccl2SDMMref_idx_l0 %0d", 1-buffer[buffersize-1] );
outfifo.enq(SDMMref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
outfifo.enq(tagged SDMMref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
numbitsused = 1;
end
else
begin
$display( "ccl2SDMMref_idx_l0 %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMMref_idx_l0 truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SDMMref_idx_l0 truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
end
if(temp3bit0 == 1)
begin
temp3bit0 <= numMbPart(sdmmbtype);
nextstate = MbPrediction 3;
nextstate = tagged MbPrediction 3;
end
else
begin
temp3bit0 <= temp3bit0-1;
nextstate = MbPrediction 2;
nextstate = tagged MbPrediction 2;
end
end
3:
1213,21 → 1213,21
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMMmvd_l0 %0d", tempint );
outfifo.enq(SDMMmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(tagged SDMMmvd_l0 truncate(expgolomb_signed(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = MbPrediction 4;
nextstate = tagged MbPrediction 4;
end
4:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMMmvd_l0 %0d", tempint );
outfifo.enq(SDMMmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(tagged SDMMmvd_l0 truncate(expgolomb_signed(buffer)));
numbitsused = expgolomb_numbits(buffer);
temp3bit0 <= temp3bit0-1;
if(temp3bit0 == 1)
nextstate = MacroblockLayer 5;
nextstate = tagged MacroblockLayer 5;
else
nextstate = MbPrediction 3;
nextstate = tagged MbPrediction 3;
end
default: $display( "ERROR EntropyDec: MbPrediction default step" );
endcase
1238,38 → 1238,38
0:
begin
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMSsub_mb_type truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SDMSsub_mb_type truncate(expgolomb_unsigned(buffer)));
temp3bit0 <= numSubMbPart(truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = SubMbPrediction 1;
nextstate = tagged SubMbPrediction 1;
end
1:
begin
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMSsub_mb_type truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SDMSsub_mb_type truncate(expgolomb_unsigned(buffer)));
temp3bit1 <= numSubMbPart(truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = SubMbPrediction 2;
nextstate = tagged SubMbPrediction 2;
end
2:
begin
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMSsub_mb_type truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SDMSsub_mb_type truncate(expgolomb_unsigned(buffer)));
temp3bit2 <= numSubMbPart(truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = SubMbPrediction 3;
nextstate = tagged SubMbPrediction 3;
end
3:
begin
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMSsub_mb_type truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SDMSsub_mb_type truncate(expgolomb_unsigned(buffer)));
temp3bit3 <= numSubMbPart(truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
if(num_ref_idx_l0_active_minus1 > 0
&& sdmmbtype != P_8x8ref0)
nextstate = SubMbPrediction 4;
nextstate = tagged SubMbPrediction 4;
else
nextstate = SubMbPrediction 8;
nextstate = tagged SubMbPrediction 8;
end
4:
begin
1276,16 → 1276,16
if(num_ref_idx_l0_active_minus1 == 1)
begin
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] );
outfifo.enq(SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
outfifo.enq(tagged SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
numbitsused = 1;
end
else
begin
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
end
nextstate = SubMbPrediction 5;
nextstate = tagged SubMbPrediction 5;
end
5:
begin
1292,16 → 1292,16
if(num_ref_idx_l0_active_minus1 == 1)
begin
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] );
outfifo.enq(SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
outfifo.enq(tagged SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
numbitsused = 1;
end
else
begin
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
end
nextstate = SubMbPrediction 6;
nextstate = tagged SubMbPrediction 6;
end
6:
begin
1308,16 → 1308,16
if(num_ref_idx_l0_active_minus1 == 1)
begin
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] );
outfifo.enq(SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
outfifo.enq(tagged SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
numbitsused = 1;
end
else
begin
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
end
nextstate = SubMbPrediction 7;
nextstate = tagged SubMbPrediction 7;
end
7:
begin
1324,96 → 1324,96
if(num_ref_idx_l0_active_minus1 == 1)
begin
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] );
outfifo.enq(SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
outfifo.enq(tagged SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
numbitsused = 1;
end
else
begin
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer)));
outfifo.enq(tagged SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
end
nextstate = SubMbPrediction 8;
nextstate = tagged SubMbPrediction 8;
end
8:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMSmvd_l0 %0d", tempint );
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(tagged SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = SubMbPrediction 9;
nextstate = tagged SubMbPrediction 9;
end
9:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMSmvd_l0 %0d", tempint );
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(tagged SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
numbitsused = expgolomb_numbits(buffer);
temp3bit0 <= temp3bit0-1;
if(temp3bit0 == 1)
nextstate = SubMbPrediction 10;
nextstate = tagged SubMbPrediction 10;
else
nextstate = SubMbPrediction 8;
nextstate = tagged SubMbPrediction 8;
end
10:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMSmvd_l0 %0d", tempint );
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(tagged SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = SubMbPrediction 11;
nextstate = tagged SubMbPrediction 11;
end
11:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMSmvd_l0 %0d", tempint );
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(tagged SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
numbitsused = expgolomb_numbits(buffer);
temp3bit1 <= temp3bit1-1;
if(temp3bit1 == 1)
nextstate = SubMbPrediction 12;
nextstate = tagged SubMbPrediction 12;
else
nextstate = SubMbPrediction 10;
nextstate = tagged SubMbPrediction 10;
end
12:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMSmvd_l0 %0d", tempint );
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(tagged SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = SubMbPrediction 13;
nextstate = tagged SubMbPrediction 13;
end
13:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMSmvd_l0 %0d", tempint );
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(tagged SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
numbitsused = expgolomb_numbits(buffer);
temp3bit2 <= temp3bit2-1;
if(temp3bit2 == 1)
nextstate = SubMbPrediction 14;
nextstate = tagged SubMbPrediction 14;
else
nextstate = SubMbPrediction 12;
nextstate = tagged SubMbPrediction 12;
end
14:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMSmvd_l0 %0d", tempint );
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(tagged SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = SubMbPrediction 15;
nextstate = tagged SubMbPrediction 15;
end
15:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMSmvd_l0 %0d", tempint );
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(tagged SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
numbitsused = expgolomb_numbits(buffer);
temp3bit3 <= temp3bit3-1;
if(temp3bit3 == 1)
nextstate = MacroblockLayer 5;
nextstate = tagged MacroblockLayer 5;
else
nextstate = SubMbPrediction 14;
nextstate = tagged SubMbPrediction 14;
end
default: $display( "ERROR EntropyDec: SubMbPrediction default step" );
endcase
1428,10 → 1428,10
if(mbPartPredMode(sdmmbtype,0) == Intra_16x16)
begin
maxNumCoeff <= 16;
nextstate = ResidualBlock 0;
nextstate = tagged ResidualBlock 0;
end
else
nextstate = Residual 1;
nextstate = tagged Residual 1;
//$display( "TRACE EntropyDec: Residual 0" );
end
1:
1440,7 → 1440,7
begin
residualChroma <= 1;
temp5bit <= 0;
nextstate = Residual 3;
nextstate = tagged Residual 3;
end
else
begin
1454,12 → 1454,12
begin
calcnc.nNupdate_luma(truncate(temp5bit),0);
////$display( "ccl2SDMRcoeffLevelZeros %0d", tempMaxNumCoeff );
outfifo_ITB.enq(SDMRcoeffLevelZeros tempMaxNumCoeff);
outfifo_ITB.enq(tagged SDMRcoeffLevelZeros tempMaxNumCoeff);
temp5bit <= temp5bit+1;
nextstate = Residual 1;
nextstate = tagged Residual 1;
end
else
nextstate = ResidualBlock 0;
nextstate = tagged ResidualBlock 0;
end
//$display( "TRACE EntropyDec: Residual 1" );
end
1468,7 → 1468,7
if(temp5bit == 2)
begin
temp5bit <= 0;
nextstate = Residual 5;
nextstate = tagged Residual 5;
end
else
begin
1476,12 → 1476,12
if((sdmcodedBlockPatternChroma & 3) == 0)
begin
////$display( "ccl2SDMRcoeffLevelZeros %0d", 4 );
outfifo_ITB.enq(SDMRcoeffLevelZeros 4);
outfifo_ITB.enq(tagged SDMRcoeffLevelZeros 4);
temp5bit <= temp5bit+1;
nextstate = Residual 3;
nextstate = tagged Residual 3;
end
else
nextstate = ResidualBlock 0;
nextstate = tagged ResidualBlock 0;
end
//$display( "TRACE EntropyDec: Residual 3" );
end
1490,7 → 1490,7
if(temp5bit == 8)
begin
temp5bit <= 0;
nextstate = SliceData 3;
nextstate = tagged SliceData 3;
end
else
begin
1499,12 → 1499,12
begin
calcnc.nNupdate_chroma(truncate(temp5bit),0);
////$display( "ccl2SDMRcoeffLevelZeros %0d", 15 );
outfifo_ITB.enq(SDMRcoeffLevelZeros 15);
outfifo_ITB.enq(tagged SDMRcoeffLevelZeros 15);
temp5bit <= temp5bit+1;
nextstate = Residual 5;
nextstate = tagged Residual 5;
end
else
nextstate = ResidualBlock 0;
nextstate = tagged ResidualBlock 0;
end
//$display( "TRACE EntropyDec: Residual 5" );
end
1528,7 → 1528,7
begin
tempreg <= zeroExtend(6'b111111);
end
nextstate = ResidualBlock 1;
nextstate = tagged ResidualBlock 1;
//$display( "TRACE EntropyDec: ResidualBlock 0 temp5bit = %0d", temp5bit);
end
1:
1548,7 → 1548,7
temp3bit1 <= 1;//suffixLength
else
temp3bit1 <= 0;//suffixLength
nextstate = ResidualBlock 2;
nextstate = tagged ResidualBlock 2;
//$display( "TRACE EntropyDec: ResidualBlock 1 nC = %0d", tempreg);
$display( "ccl2SDMRtotal_coeff %0d", totalCoeffTemp );
$display( "ccl2SDMRtrailing_ones %0d", trailingOnesTemp );
1560,9 → 1560,9
temp5bit2 <= 0;
zerosLeft <= 0;
if(totalCoeff < maxNumCoeff)
nextstate = ResidualBlock 3;
nextstate = tagged ResidualBlock 3;
else
nextstate = ResidualBlock 5;
nextstate = tagged ResidualBlock 5;
end
else
begin
1615,7 → 1615,7
numbitsused = zeroExtend(level_prefix)+1+zeroExtend(levelSuffixSize);
end
temp5bit2 <= temp5bit2 + 1;
nextstate = ResidualBlock 2;
nextstate = tagged ResidualBlock 2;
end
end
3:
1632,16 → 1632,16
if(maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft) > 0)
begin
$display( "ccl2SDMRcoeffLevelZeros %0d", maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft) );
outfifo_ITB.enq(SDMRcoeffLevelZeros (maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft)));
outfifo_ITB.enq(tagged SDMRcoeffLevelZeros (maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft)));
end
nextstate = ResidualBlock 5;
nextstate = tagged ResidualBlock 5;
end
4:
begin
$display( "ccl2SDMRcoeffLevelZeros %0d", temp5bit2 );
outfifo_ITB.enq(SDMRcoeffLevelZeros temp5bit2);
outfifo_ITB.enq(tagged SDMRcoeffLevelZeros temp5bit2);
temp5bit2 <= 0;
nextstate = ResidualBlock 5;
nextstate = tagged ResidualBlock 5;
end
5:
begin
1649,7 → 1649,7
begin
tempint = signExtend(unpack(cavlcFIFO.fifo.first()));
$display( "ccl2SDMRcoeffLevel %0d", tempint );
outfifo_ITB.enq(SDMRcoeffLevel cavlcFIFO.fifo.first());
outfifo_ITB.enq(tagged SDMRcoeffLevel cavlcFIFO.fifo.first());
cavlcFIFO.fifo.deq();
totalCoeff <= totalCoeff-1;
if( zerosLeft > 0 )
1663,13 → 1663,13
begin
zerosLeft <= zerosLeft - run_before;
temp5bit2 <= zeroExtend(run_before);
nextstate = ResidualBlock 4;
nextstate = tagged ResidualBlock 4;
end
else
nextstate = ResidualBlock 5;
nextstate = tagged ResidualBlock 5;
end
else
nextstate = ResidualBlock 5;
nextstate = tagged ResidualBlock 5;
end
else
begin
1676,11 → 1676,11
if(!(mbPartPredMode(sdmmbtype,0)==Intra_16x16 && maxNumCoeff==16))
temp5bit <= temp5bit+1;
if(residualChroma==0)
nextstate = Residual 1;
nextstate = tagged Residual 1;
else if(maxNumCoeff==4)
nextstate = Residual 3;
nextstate = tagged Residual 3;
else
nextstate = Residual 5;
nextstate = tagged Residual 5;
end
end
default: $display( "ERROR EntropyDec: ResidualBlock default step" );
/trunk/src_fpga/mkCalc_nC.bsv
49,7 → 49,7
rule sendReq ( waiting == 1 && reqCount > 0 );
Bit#(PicWidthSz) temp2 = truncate(currMbHor);
Bit#(TAdd#(PicWidthSz,1)) temp = {bit1,temp2};
memReqQ.enq(LoadReq temp );
memReqQ.enq(tagged LoadReq temp );
reqCount <= reqCount-1;
endrule
 
71,7 → 71,7
currMbHor <= currMbHor+1;
Bit#(PicWidthSz) temp2 = truncate(currMbHor);
Bit#(TAdd#(PicWidthSz,1)) temp = {bit1,temp2};
memReqQ.enq(StoreReq {addr:temp,data:20'b10000100001000010000} );
memReqQ.enq(tagged StoreReq {addr:temp,data:20'b10000100001000010000} );
ipcmCount <= 0;
waiting <= 0;
endrule
83,7 → 83,7
currMbHor <= currMbHor+1;
Bit#(PicWidthSz) temp2 = truncate(currMbHor);
Bit#(TAdd#(PicWidthSz,1)) temp = {bit1,temp2};
memReqQ.enq(StoreReq {addr:temp,data:20'b00000000000000000000} );
memReqQ.enq(tagged StoreReq {addr:temp,data:20'b00000000000000000000} );
if(pskipCount == 1)
waiting <= 0;
end
91,7 → 91,7
begin
Bit#(PicWidthSz) temp2 = truncate(currMbHor);
Bit#(TAdd#(PicWidthSz,1)) temp = {bit0,temp2};
memReqQ.enq(StoreReq {addr:temp,data:20'b00000000000000000000} );
memReqQ.enq(tagged StoreReq {addr:temp,data:20'b00000000000000000000} );
end
pskipCount <= pskipCount - 1;
endrule
133,7 → 133,7
respCount <= 2;
Bit#(PicWidthSz) temp2 = truncate(currMbHor);
Bit#(TAdd#(PicWidthSz,1)) temp = {bit0,temp2};
memReqQ.enq(LoadReq temp );
memReqQ.enq(tagged LoadReq temp );
//$display( "ERROR EntropyDec: mkCalc_nC loadMb incomplete" );
end
end
226,7 → 226,7
begin
Bit#(PicWidthSz) temp2 = truncate(currMbHor);
Bit#(TAdd#(PicWidthSz,1)) temp = {bit0,temp2};
memReqQ.enq(StoreReq {addr:temp,data:topValTemp} );
memReqQ.enq(tagged StoreReq {addr:temp,data:topValTemp} );
end
//$display( "TRACE nNupdate_luma old leftVal %b", leftVal );
//$display( "TRACE nNupdate_luma old topVal %b", topVal );
267,7 → 267,7
currMbHor <= currMbHor+1;
Bit#(PicWidthSz) temp2 = truncate(currMbHor);
Bit#(TAdd#(PicWidthSz,1)) temp = {bit1,temp2};
memReqQ.enq(StoreReq {addr:temp,data:{topValChroma1Temp,topValChroma0Temp}} );
memReqQ.enq(tagged StoreReq {addr:temp,data:{topValChroma1Temp,topValChroma0Temp}} );
end
endmethod
 
280,7 → 280,7
pskipCount <= (inmb_skip_run << 1)-1;
Bit#(PicWidthSz) temp2 = truncate(currMbHor);
Bit#(TAdd#(PicWidthSz,1)) temp = {bit0,temp2};
memReqQ.enq(StoreReq {addr:temp,data:20'b00000000000000000000} );
memReqQ.enq(tagged StoreReq {addr:temp,data:20'b00000000000000000000} );
leftVal <= 0;
leftValChroma0 <= 10'b0000000000;
leftValChroma1 <= 10'b0000000000;
297,7 → 297,7
ipcmCount <= 1;
Bit#(PicWidthSz) temp2 = truncate(currMbHor);
Bit#(TAdd#(PicWidthSz,1)) temp = {bit0,temp2};
memReqQ.enq(StoreReq {addr:temp,data:20'b10000100001000010000} );
memReqQ.enq(tagged StoreReq {addr:temp,data:20'b10000100001000010000} );
endmethod
 
interface Client mem_client;
/trunk/src_fpga/mkFrameBuffer.bsv
82,7 → 82,7
 
rule read_response;
Bit#(32) resp_data <- bram.read_resp();
loadRespQ.enq(FBLoadResp resp_data);
loadRespQ.enq(FBLoadResp (resp_data));
outstandingReqs <= outstandingReqs - 1;
$display("FBuff resp , data: %h outstanding reqs: %d", resp_data, outstandingReqs - 1);
endrule
/trunk/src_fpga/mkNalUnwrap.bsv
79,7 → 79,7
end
else if(zerocount==0)
begin
outfifo.enq(RbspByte bufferc);
outfifo.enq(RbspByte (bufferc));
$display("ccl1rbspbyte %h", bufferc);
bufferc <= bufferb;
bufferb <= buffera;
89,7 → 89,7
else
begin
zerocount <= zerocount-1;
outfifo.enq(RbspByte 0);
outfifo.enq(RbspByte (0));
$display("ccl1rbspbyte 00");
end
endrule
106,13 → 106,13
else if(zerocount==0)
begin
bufcount <= 2;
outfifo.enq(RbspByte bufferc);
outfifo.enq(RbspByte (bufferc));
$display("ccl1rbspbyte %h", bufferc);
end
else
begin
zerocount <= zerocount-1;
outfifo.enq(RbspByte 0);
outfifo.enq(RbspByte (0));
$display("ccl1rbspbyte 00");
end
end
120,7 → 120,7
begin
bufcount <= 1;
if(!(bufferb==0 && buffera==0))
outfifo.enq(RbspByte bufferb);
outfifo.enq(RbspByte (bufferb));
$display("ccl1rbspbyte %h", bufferb);
end
1:
127,7 → 127,7
begin
bufcount <= 0;
if(!(buffera==0))
outfifo.enq(RbspByte buffera);
outfifo.enq(RbspByte (buffera));
$display("ccl1rbspbyte %h", buffera);
end
0:
/trunk/src_fpga/mkBufferControl.bsv
102,7 → 102,7
begin
state <= RemoveFound;
if(state==RemoveOutput)
returnList.enq(Valid tpl_2(temp));
returnList.enq(tagged Valid tpl_2(temp));
end
if(tempCount>=picCount)
$display( "ERROR BufferControl: ShortTermPicList removing not found");
148,7 → 148,7
Tuple2#(Bit#(16),Bit#(5)) temp = rfile.sub(tempPic);
if(tpl_1(temp)==tempNum)
begin
returnList.enq(Valid tpl_2(temp));
returnList.enq(tagged Valid tpl_2(temp));
state <= Idle;
end
tempPic <= shortTermPicListPrev(tempPic);
162,7 → 162,7
if(tempCount<picCount)
begin
Tuple2#(Bit#(16),Bit#(5)) temp = rfile.sub(tempPic);
returnList.enq(Valid tpl_2(temp));
returnList.enq(tagged Valid tpl_2(temp));
tempPic <= shortTermPicListPrev(tempPic);
tempCount <= tempCount+1;
end
298,7 → 298,7
begin
Maybe#(Bit#(5)) temp = rfile.sub(tempPic);
if(temp matches tagged Valid .data)
returnList.enq(Valid data);
returnList.enq(tagged Valid data);
tempPic <= tempPic+1;
end
else
318,7 → 318,7
method Action insert( Bit#(5) frameNum, Bit#(5) slot ) if(state matches tagged Idle);
if(rfile.sub(frameNum) matches tagged Invalid)
picCount <= picCount+1;
rfile.upd(frameNum,Valid slot);
rfile.upd(frameNum,tagged Valid slot);
//$display( "TRACE BufferControl: LongTermPicList insert %h %h %h", picCount, frameNum, slot);
endmethod
933,11 → 933,11
rule interResp ( loadRespQ2.first() matches tagged FBLoadResp .data );
loadRespQ2.deq();
if(inLoadOutOfBounds.first() == 2'b10)
inLoadRespQ.enq(IPLoadResp ({data[7:0],data[7:0],data[7:0],data[7:0]}));
inLoadRespQ.enq(tagged IPLoadResp ({data[7:0],data[7:0],data[7:0],data[7:0]}));
else if(inLoadOutOfBounds.first() == 2'b11)
inLoadRespQ.enq(IPLoadResp ({data[31:24],data[31:24],data[31:24],data[31:24]}));
inLoadRespQ.enq(tagged IPLoadResp ({data[31:24],data[31:24],data[31:24],data[31:24]}));
else
inLoadRespQ.enq(IPLoadResp data);
inLoadRespQ.enq(tagged IPLoadResp data);
inLoadOutOfBounds.deq();
//$display( "Trace BufferControl: interResp %h %h", inLoadOutOfBounds.first(), data);
endrule
/trunk/src_fpga/build/Makefile
1,7 → 1,7
#=======================================================================
# 6.375 Makefile for bsc-compile
#-----------------------------------------------------------------------
# $Id: Makefile,v 1.2 2008-06-26 17:52:25 jamey.hicks Exp $
# $Id: Makefile,v 1.3 2008-06-26 17:52:59 jamey.hicks Exp $
#
 
default : all
64,7 → 64,6
$(srcdir)/mkMemClient.bsv \
$(srcdir)/mkBRAMMemController.bsv \
$(srcdir)/mkRoundRobinMemScheduler.bsv \
$(srcdir)/mkReadFirstRoundRobinMemScheduler.bsv \
$(srcdir)/mkPriorityRoundRobinMemScheduler.bsv \
$(srcdir)/BRAM.bsv \
$(srcdir)/FIFO_2.bsv \
/trunk/src_fpga/mkInverseTrans.bsv
635,7 → 635,7
for(Integer ii=0; ii<4; ii=ii+1)
outputVector[ii] = truncate((workVectorTemp[pixelNum+fromInteger(ii)]+32) >> 6);
outfifo.enq(ITBresidual outputVector);
outfifo.enq( tagged ITBresidual outputVector);
Int#(10) tempint = unpack(outputVector[0]);
$display("ccl3IBTresidual %0d", tempint);
tempint = unpack(outputVector[1]);
/trunk/src_fpga/mkMemED.bsv
43,7 → 43,7
 
rule readresp ( True );
let temp <- bramfile.read_resp;
respQ.enq( LoadResp temp );
respQ.enq( LoadResp (temp) );
endrule
interface Server mem_server;
/trunk/src_fpga/mkInputGen.bsv
120,7 → 120,7
2'b00: data[31:24];
endcase;
counter <= counter + 1;
outfifo.enq(DataByte data_byte);
outfifo.enq(DataByte (data_byte));
data_counter <= data_counter - 1;
addr <= addr + 1;
end
/trunk/src/mkPrediction.bsv
296,9 → 296,9
currMbHor <= xdata;
currMbVer <= 0;
intra4x4typeLeft <= replicate(15);
interTopLeftVal <= replicate(NotInter 0);
interTopLeftVal <= replicate(NotInter (0));
if(xdata==0)
interLeftVal <= replicate(NotInter 0);
interLeftVal <= replicate(NotInter (0));
outFirstQPFlag <= True;
end
tagged SDmb_skip_run .xdata : passFlag <= False;
337,8 → 337,8
interRespCount <= 1;
intra4x4typeLeft <= replicate(14);
intra4x4typeTop <= replicate(14);
interTopLeftVal <= update(interTopLeftVal , 0, (NotInter 0));
interTopVal <= replicate(NotInter 0);
interTopLeftVal <= update(interTopLeftVal , 0, (NotInter (0)));
interTopVal <= replicate(NotInter (0));
interPskipCount <= interPskipCount+1;
interNewestMv <= 0;
interRefIdxVector <= replicate(0);
376,9 → 376,9
$display( "ERROR Prediction: MacroblockLayer 5 sdmmbtype not I_16x16" );
intraReqCount <= 1;
intraRespCount <= 1;
interTopLeftVal <= replicate(NotInter 1);
interLeftVal <= replicate(NotInter 1);
interTopVal <= replicate(NotInter 1);
interTopLeftVal <= replicate(NotInter (1));
interLeftVal <= replicate(NotInter (1));
interTopVal <= replicate(NotInter (1));
end
else
donotfire.doNotFire();
391,9 → 391,9
intrastate <= Intra4x4;
intraReqCount <= 1;
intraRespCount <= 1;
interTopLeftVal <= replicate(NotInter 1);
interLeftVal <= replicate(NotInter 1);
interTopVal <= replicate(NotInter 1);
interTopLeftVal <= replicate(NotInter (1));
interLeftVal <= replicate(NotInter (1));
interTopVal <= replicate(NotInter (1));
end
else
donotfire.doNotFire();
404,9 → 404,9
$finish;////////////////////////////////////////////////////////////////////////////////////////
intra4x4typeLeft <= replicate(13);
intra4x4typeTop <= replicate(13);
interTopLeftVal <= replicate(NotInter 1);
interLeftVal <= replicate(NotInter 1);
interTopVal <= replicate(NotInter 1);
interTopLeftVal <= replicate(NotInter (1));
interLeftVal <= replicate(NotInter (1));
interTopVal <= replicate(NotInter (1));
end
else
begin
425,8 → 425,8
interRespCount <= 1;
intra4x4typeLeft <= replicate(14);/////////////////////////////////////////////////////////////////////////////
intra4x4typeTop <= replicate(14);
interTopLeftVal <= update(interTopLeftVal , 0, (NotInter 0));
interTopVal <= replicate(NotInter 0);
interTopLeftVal <= update(interTopLeftVal , 0, (NotInter (0)));
interTopVal <= replicate(NotInter (0));
interNewestMv <= 0;
interRefIdxVector <= replicate(0);
nextoutputfifo.enq(NonSkipMB);
551,7 → 551,7
begin
interBSoutput <= True;
outputVector = predictedfifo.first();
outfifo.enq(PBoutput outputVector);
outfifo.enq(PBoutput (outputVector));
outputFlag = 1;
predictedfifo.deq();
$display( "Trace Prediction: outputing SkipMB out %h %h %h", outBlockNum, outPixelNum, outputVector);
601,7 → 601,7
else
outputVector[ii] = tempOutputValue[7:0];
end
outfifo.enq(PBoutput outputVector);
outfifo.enq(PBoutput (outputVector));
infifo_ITB.deq();
predictedfifo.deq();
outputFlag = 1;
634,7 → 634,7
if(outPixelNum == 12)
infifo_ITB.deq();
outputVector = predictedfifo.first();
outfifo.enq(PBoutput outputVector);
outfifo.enq(PBoutput (outputVector));
outputFlag = 1;
predictedfifo.deq();
$display( "Trace Prediction: outputing ITBcoeffLevelZeros out %h %h %h %h %h", outChromaFlag, outBlockNum, outPixelNum, predictedfifo.first(), outputVector);
849,7 → 849,7
end
if(!noMoreReq)
begin
interMemReqQ.enq(LoadReq temp);
interMemReqQ.enq(LoadReq (temp));
interReqCount <= interReqCount+1;
//$display( "TRACE Prediction: interSendReq addr %0d",temp);///////////////////////
end
868,8 → 868,8
interIPStepCount <= 1;
if(currMbHorTemp == 0)
begin
interLeftVal <= replicate(NotInter 0);
interTopLeftVal <= replicate(NotInter 0);
interLeftVal <= replicate(NotInter (0));
interTopLeftVal <= replicate(NotInter (0));
end
$display( "Trace Prediction: interReceiveNoResp %h %h", interstate, interRespCount);
endrule
923,8 → 923,8
interIPStepCount <= 1;
if(currMbHorTemp == 0)
begin
interLeftVal <= replicate(NotInter 0);
interTopLeftValNext = replicate(NotInter 0);
interLeftVal <= replicate(NotInter (0));
interTopLeftValNext = replicate(NotInter (0));
end
end
interTopVal <= interTopValNext;
1015,17 → 1015,17
else
$display( "ERROR Prediction: interProcessStep unexpected interstate");
Bit#(4) refIndex = ((interstate==InterPskip||interstate==InterP8x8ref0) ? 0 : interRefIdxVector[interMbPartNum]);
Vector#(3,InterBlockMv) blockABC = replicate(NotInter 0);
Vector#(3,InterBlockMv) blockABC = replicate(NotInter (0));
if( currMbTemp-firstMb==0 && blockHor==0 )
blockABC[0] = (NotInter 0);
blockABC[0] = (NotInter (0));
else
blockABC[0] = interLeftVal[blockVer];
if( currMbTemp-firstMb<zeroExtend(picWidth) && blockVer==0 )
blockABC[1] = (NotInter 0);
blockABC[1] = (NotInter (0));
else
blockABC[1] = interTopVal[blockHor];
blockABC[2] = interTopVal[{1'b0,blockHor}+partWidth];
if(noBlockC || blockABC[2]==(NotInter 0))
if(noBlockC || blockABC[2]==(NotInter (0)))
blockABC[2] = interTopLeftVal[blockVer];
Bit#(14) mvhorfinal = 0;
Bit#(12) mvverfinal = 0;
1083,7 → 1083,7
mvverPred = 0;
end
end
else if(blockABC[ii] matches tagged NotInter 0)
else if(blockABC[ii] matches tagged NotInter (0))
begin
mvhorPred = 0;
mvverPred = 0;
1358,7 → 1358,7
end
if(noMoreReq == 0)
begin
intraMemReqQ.enq(LoadReq temp);
intraMemReqQ.enq(LoadReq (temp));
intraReqCount <= intraReqCount+1;
//$display( "TRACE Prediction: intraSendReq addr %0d",temp);///////////////////////
end
1374,7 → 1374,7
intraStepCount <= 1;
blockNum <= 0;
pixelNum <= 0;
interOutBlockMvfifo.enq(NotInter 1);
interOutBlockMvfifo.enq(NotInter (1));
$display( "Trace Prediction: intraReceiveNoResp");
endrule
 
1436,7 → 1436,7
intraStepCount <= 1;
blockNum <= 0;
pixelNum <= 0;
interOutBlockMvfifo.enq(NotInter 1);
interOutBlockMvfifo.enq(NotInter (1));
end
$display( "Trace Prediction: intraReceiveResp");
endrule
/trunk/src/mkDeblockFilter.bsv
354,7 → 354,7
tagged NewUnit . xdata :
begin
infifo.deq();
outfifo.enq(EDOT infifo.first());
outfifo.enq(EDOT (infifo.first()));
$display("ccl5newunit");
$display("ccl5rbspbyte %h", xdata);
end
361,13 → 361,13
tagged SPSpic_width_in_mbs .xdata :
begin
infifo.deq();
outfifo.enq(EDOT infifo.first());
outfifo.enq(EDOT (infifo.first()));
picWidth <= xdata;
end
tagged SPSpic_height_in_map_units .xdata :
begin
infifo.deq();
outfifo.enq(EDOT infifo.first());
outfifo.enq(EDOT (infifo.first()));
picHeight <= xdata;
end
tagged PPSdeblocking_filter_control_present_flag .xdata :
383,7 → 383,7
tagged SHfirst_mb_in_slice .xdata :
begin
infifo.deq();
outfifo.enq(EDOT infifo.first());
outfifo.enq(EDOT (infifo.first()));
firstMb <= xdata;
currMb <= xdata;
currMbHor <= xdata;
421,7 → 421,7
tagged EndOfFile :
begin
infifo.deq();
outfifo.enq(EDOT infifo.first());
outfifo.enq(EDOT (infifo.first()));
$display( "ccl5: EndOfFile reached");
//$finish(0);
end
428,7 → 428,7
default:
begin
infifo.deq();
outfifo.enq(EDOT infifo.first());
outfifo.enq(EDOT (infifo.first()));
end
endcase
endrule
472,10 → 472,10
else
begin
if(dataReqCount==1)
parameterMemReqQ.enq(LoadReq temp);
parameterMemReqQ.enq(LoadReq (temp));
Bit#(4) temp2 = truncate(dataReqCount-1);
let temp3 = {temp,chromaFlag,temp2};
dataMemReqQ.enq(LoadReq temp3);
dataMemReqQ.enq(LoadReq (temp3));
if(dataReqCount==16)
dataReqCount <= 0;
else
/trunk/src/mkEntropyDec.bsv
185,11 → 185,11
nalrefidc <= rdata[6:5];
nalunittype <= rdata[4:0];
case (rdata[4:0])
1 : state <= CodedSlice 0;
5 : state <= CodedSlice 0;
1 : state <= CodedSlice (0);
5 : state <= CodedSlice (0);
6 : state <= SEI;
7 : state <= SPS 0;
8 : state <= PPS 0;
7 : state <= SPS (0);
8 : state <= PPS (0);
9 : state <= AUD;
10: state <= EndSequence;
11: state <= EndStream;
202,8 → 202,8
endcase
$display("ccl2newunit");
$display("ccl2rbspbyte %h", rdata);
outfifo.enq(NewUnit rdata);
outfifo_ITB.enq(NewUnit rdata);
outfifo.enq(NewUnit (rdata));
outfifo_ITB.enq(NewUnit (rdata));
end
tagged EndOfFile : state <= Start;
endcase
276,26 → 276,26
0:
begin
$display( "ccl2SHfirst_mb_in_slice %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHfirst_mb_in_slice truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SHfirst_mb_in_slice (truncate(expgolomb_unsigned(buffer))));
currMbAddr <= truncate(expgolomb_unsigned(buffer));
calcnc.initialize(truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 1;
nextstate = CodedSlice (1);
end
1:
begin
$display( "ccl2SHslice_type %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHslice_type truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SHslice_type (truncate(expgolomb_unsigned(buffer))));
shslice_type <= truncate(expgolomb_unsigned(buffer));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 2;
nextstate = CodedSlice (2);
end
2:
begin
$display( "ccl2SHpic_parameter_set_id %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHpic_parameter_set_id truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SHpic_parameter_set_id (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 3;
nextstate = CodedSlice (3);
if(ppspic_parameter_set_id != truncate(expgolomb_unsigned(buffer))) $display( "ERROR EntropyDec: pic_parameter_set_id don't match" );
end
3:
303,9 → 303,9
Bit#(16) tttt = buffer[buffersize-1:buffersize-16];
tttt = tttt >> 16 - zeroExtend(spslog2_max_frame_num);
$display( "ccl2SHframe_num %0d", tttt );
outfifo.enq(SHframe_num tttt);
outfifo.enq(SHframe_num (tttt));
numbitsused = zeroExtend(spslog2_max_frame_num);
nextstate = CodedSlice 4;
nextstate = CodedSlice (4);
end
4:
begin
312,10 → 312,10
if(nalunittype == 5)
begin
$display( "ccl2SHidr_pic_id %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHidr_pic_id truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SHidr_pic_id (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
end
nextstate = CodedSlice 5;
nextstate = CodedSlice (5);
end
5:
begin
324,12 → 324,12
Bit#(16) tttt = buffer[buffersize-1:buffersize-16];
tttt = tttt >> 16 - zeroExtend(spslog2_max_pic_order_cnt_lsb);
$display( "ccl2SHpic_order_cnt_lsb %0d", tttt );
outfifo.enq(SHpic_order_cnt_lsb tttt);
outfifo.enq(SHpic_order_cnt_lsb (tttt));
numbitsused = zeroExtend(spslog2_max_pic_order_cnt_lsb);
nextstate = CodedSlice 6;
nextstate = CodedSlice (6);
end
else
nextstate = CodedSlice 7;
nextstate = CodedSlice (7);
end
6:
begin
340,20 → 340,20
Bufcount tempbufcount = expgolomb_numbits32(buffer);
egnumbits <= tempbufcount;
numbitsused = tempbufcount-1;
nextstate = CodedSlice 6;
nextstate = CodedSlice (6);
end
else
begin
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
$display( "ccl2SHdelta_pic_order_cnt_bottom %0d", tempint32 );
outfifo.enq(SHdelta_pic_order_cnt_bottom truncate(expgolomb_signed32(buffer,egnumbits)));
outfifo.enq(SHdelta_pic_order_cnt_bottom (truncate(expgolomb_signed32(buffer,egnumbits))));
egnumbits <= 0;
numbitsused = egnumbits;
nextstate = CodedSlice 7;
nextstate = CodedSlice (7);
end
end
else
nextstate = CodedSlice 7;
nextstate = CodedSlice (7);
end
7:
begin
364,20 → 364,20
Bufcount tempbufcount = expgolomb_numbits32(buffer);
egnumbits <= tempbufcount;
numbitsused = tempbufcount-1;
nextstate = CodedSlice 7;
nextstate = CodedSlice (7);
end
else
begin
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
$display( "ccl2SHdelta_pic_order_cnt0 %0d", tempint32 );
outfifo.enq(SHdelta_pic_order_cnt0 truncate(expgolomb_signed32(buffer,egnumbits)));
outfifo.enq(SHdelta_pic_order_cnt0 (truncate(expgolomb_signed32(buffer,egnumbits))));
egnumbits <= 0;
numbitsused = egnumbits;
nextstate = CodedSlice 8;
nextstate = CodedSlice (8);
end
end
else
nextstate = CodedSlice 9;
nextstate = CodedSlice (9);
end
8:
begin
388,20 → 388,20
Bufcount tempbufcount = expgolomb_numbits32(buffer);
egnumbits <= tempbufcount;
numbitsused = tempbufcount-1;
nextstate = CodedSlice 8;
nextstate = CodedSlice (8);
end
else
begin
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
$display( "ccl2SHdelta_pic_order_cnt1 %0d", tempint32 );
outfifo.enq(SHdelta_pic_order_cnt1 truncate(expgolomb_signed32(buffer,egnumbits)));
outfifo.enq(SHdelta_pic_order_cnt1 (truncate(expgolomb_signed32(buffer,egnumbits))));
egnumbits <= 0;
numbitsused = egnumbits;
nextstate = CodedSlice 9;
nextstate = CodedSlice (9);
end
end
else
nextstate = CodedSlice 9;
nextstate = CodedSlice (9);
end
9:
begin
408,23 → 408,23
if(shslice_type == 0 || shslice_type == 5)
begin
$display( "ccl2SHnum_ref_idx_active_override_flag %0d", buffer[buffersize-1] );
outfifo.enq(SHnum_ref_idx_active_override_flag buffer[buffersize-1]);
outfifo.enq(SHnum_ref_idx_active_override_flag (buffer[buffersize-1]));
numbitsused = 1;
if(buffer[buffersize-1] == 1)
nextstate = CodedSlice 10;
nextstate = CodedSlice (10);
else
nextstate = CodedSlice 11;
nextstate = CodedSlice (11);
end
else
nextstate = CodedSlice 11;
nextstate = CodedSlice (11);
end
10:
begin
$display( "ccl2SHnum_ref_idx_l0_active %0d", expgolomb_unsigned(buffer)+1 );
outfifo.enq(SHnum_ref_idx_l0_active truncate(expgolomb_unsigned(buffer)+1));
outfifo.enq(SHnum_ref_idx_l0_active (truncate(expgolomb_unsigned(buffer)+1)));
num_ref_idx_l0_active_minus1 <= truncate(expgolomb_unsigned(buffer));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 11;
nextstate = CodedSlice (11);
end
11:
begin
431,87 → 431,87
if(shslice_type != 2 && shslice_type != 7)
begin
$display( "ccl2SHRref_pic_list_reordering_flag_l0 %0d", buffer[buffersize-1] );
outfifo.enq(SHRref_pic_list_reordering_flag_l0 buffer[buffersize-1]);
outfifo.enq(SHRref_pic_list_reordering_flag_l0 (buffer[buffersize-1]));
numbitsused = 1;
if(buffer[buffersize-1] == 1)
nextstate = CodedSlice 12;
nextstate = CodedSlice (12);
else
nextstate = CodedSlice 15;
nextstate = CodedSlice (15);
end
else
nextstate = CodedSlice 15;
nextstate = CodedSlice (15);
end
12:
begin
$display( "ccl2SHRreordering_of_pic_nums_idc %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHRreordering_of_pic_nums_idc truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SHRreordering_of_pic_nums_idc (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
if(expgolomb_unsigned(buffer)==0 || expgolomb_unsigned(buffer)==1)
nextstate = CodedSlice 13;
nextstate = CodedSlice (13);
else if(expgolomb_unsigned(buffer)==2)
nextstate = CodedSlice 14;
nextstate = CodedSlice (14);
else
nextstate = CodedSlice 15;
nextstate = CodedSlice (15);
end
13:
begin
Bit#(17) temp17 = zeroExtend(expgolomb_unsigned(buffer)) + 1;
$display( "ccl2SHRabs_diff_pic_num %0d", temp17 );
outfifo.enq(SHRabs_diff_pic_num temp17);
outfifo.enq(SHRabs_diff_pic_num (temp17));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 12;
nextstate = CodedSlice (12);
end
14:
begin
$display( "ccl2SHRlong_term_pic_num %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHRlong_term_pic_num truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SHRlong_term_pic_num (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 12;
nextstate = CodedSlice (12);
end
15:
begin
if(nalrefidc == 0)
nextstate = CodedSlice 23;
nextstate = CodedSlice (23);
else
begin
if(nalunittype == 5)
begin
$display( "ccl2SHDno_output_of_prior_pics_flag %0d", buffer[buffersize-1] );
outfifo.enq(SHDno_output_of_prior_pics_flag buffer[buffersize-1]);
outfifo.enq(SHDno_output_of_prior_pics_flag (buffer[buffersize-1]));
numbitsused = 1;
nextstate = CodedSlice 16;
nextstate = CodedSlice (16);
end
else
nextstate = CodedSlice 17;
nextstate = CodedSlice (17);
end
end
16:
begin
$display( "ccl2SHDlong_term_reference_flag %0d", buffer[buffersize-1] );
outfifo.enq(SHDlong_term_reference_flag buffer[buffersize-1]);
outfifo.enq(SHDlong_term_reference_flag (buffer[buffersize-1]));
numbitsused = 1;
nextstate = CodedSlice 23;
nextstate = CodedSlice (23);
end
17:
begin
$display( "ccl2SHDadaptive_ref_pic_marking_mode_flag %0d", buffer[buffersize-1] );
outfifo.enq(SHDadaptive_ref_pic_marking_mode_flag buffer[buffersize-1]);
outfifo.enq(SHDadaptive_ref_pic_marking_mode_flag (buffer[buffersize-1]));
numbitsused = 1;
if(buffer[buffersize-1] == 1)
nextstate = CodedSlice 18;
nextstate = CodedSlice (18);
else
nextstate = CodedSlice 23;
nextstate = CodedSlice (23);
end
18:
begin
$display( "ccl2SHDmemory_management_control_operation %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHDmemory_management_control_operation truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SHDmemory_management_control_operation (truncate(expgolomb_unsigned(buffer))));
shdmemory_management_control_operation <= truncate(expgolomb_unsigned(buffer));
numbitsused = expgolomb_numbits(buffer);
if(expgolomb_unsigned(buffer)!=0)
nextstate = CodedSlice 19;
nextstate = CodedSlice (19);
else
nextstate = CodedSlice 23;
nextstate = CodedSlice (23);
end
19:
begin
519,12 → 519,12
begin
Bit#(17) temp17 = zeroExtend(expgolomb_unsigned(buffer)) + 1;
$display( "ccl2SHDdifference_of_pic_nums %0d", temp17 );
outfifo.enq(SHDdifference_of_pic_nums temp17);
outfifo.enq(SHDdifference_of_pic_nums (temp17));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 20;
nextstate = CodedSlice (20);
end
else
nextstate = CodedSlice 20;
nextstate = CodedSlice (20);
end
20:
begin
531,12 → 531,12
if(shdmemory_management_control_operation==2)
begin
$display( "ccl2SHDlong_term_pic_num %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHDlong_term_pic_num truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SHDlong_term_pic_num (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 21;
nextstate = CodedSlice (21);
end
else
nextstate = CodedSlice 21;
nextstate = CodedSlice (21);
end
21:
begin
543,12 → 543,12
if(shdmemory_management_control_operation==3 || shdmemory_management_control_operation==6)
begin
$display( "ccl2SHDlong_term_frame_idx %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHDlong_term_frame_idx truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SHDlong_term_frame_idx (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 22;
nextstate = CodedSlice (22);
end
else
nextstate = CodedSlice 22;
nextstate = CodedSlice (22);
end
22:
begin
555,20 → 555,20
if(shdmemory_management_control_operation==4)
begin
$display( "ccl2SHDmax_long_term_frame_idx_plus1 %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHDmax_long_term_frame_idx_plus1 truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SHDmax_long_term_frame_idx_plus1 (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 18;
nextstate = CodedSlice (18);
end
else
nextstate = CodedSlice 18;
nextstate = CodedSlice (18);
end
23:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SHslice_qp_delta %0d", tempint );
outfifo_ITB.enq(SHslice_qp_delta truncate(expgolomb_signed(buffer)));
outfifo_ITB.enq(SHslice_qp_delta (truncate(expgolomb_signed(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 24;
nextstate = CodedSlice (24);
end
24:
begin
575,35 → 575,35
if(ppsdeblocking_filter_control_present_flag==1)
begin
$display( "ccl2SHdisable_deblocking_filter_idc %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SHdisable_deblocking_filter_idc truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SHdisable_deblocking_filter_idc (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
if(expgolomb_unsigned(buffer)!=1)
nextstate = CodedSlice 25;
nextstate = CodedSlice (25);
else
nextstate = CodedSlice 27;
nextstate = CodedSlice (27);
end
else
nextstate = CodedSlice 27;
nextstate = CodedSlice (27);
end
25:
begin
tempint = unpack(expgolomb_signed(buffer) << 1);
$display( "ccl2SHslice_alpha_c0_offset %0d", tempint );
outfifo.enq(SHslice_alpha_c0_offset truncate(expgolomb_signed(buffer) << 1));
outfifo.enq(SHslice_alpha_c0_offset (truncate(expgolomb_signed(buffer) << 1)));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 26;
nextstate = CodedSlice (26);
end
26:
begin
tempint = unpack(expgolomb_signed(buffer) << 1);
$display( "ccl2SHslice_beta_offset %0d", tempint );
outfifo.enq(SHslice_beta_offset truncate(expgolomb_signed(buffer) << 1));
outfifo.enq(SHslice_beta_offset (truncate(expgolomb_signed(buffer) << 1)));
numbitsused = expgolomb_numbits(buffer);
nextstate = CodedSlice 27;
nextstate = CodedSlice (27);
end
27:
begin
nextstate = SliceData 0;
nextstate = SliceData (0);
end
default: $display( "ERROR EntropyDec: CodedSlice default step" );
endcase
625,53 → 625,53
outputdata = buffer[buffersize-17:buffersize-24];
$display( "INFO EntropyDec: level_idc = %d", outputdata );
numbitsused = 24;
nextstate = SPS 1;
nextstate = SPS (1);
end
1:
begin
$display( "ccl2SPSseq_parameter_set_id %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SPSseq_parameter_set_id truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SPSseq_parameter_set_id (truncate(expgolomb_unsigned(buffer))));
spsseq_parameter_set_id <= truncate(expgolomb_unsigned(buffer));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 2;
nextstate = SPS (2);
end
2:
begin
$display( "ccl2SPSlog2_max_frame_num %0d", expgolomb_unsigned(buffer)+4 );
outfifo.enq(SPSlog2_max_frame_num truncate(expgolomb_unsigned(buffer)+4));
outfifo.enq(SPSlog2_max_frame_num (truncate(expgolomb_unsigned(buffer)+4)));
spslog2_max_frame_num <= truncate(expgolomb_unsigned(buffer)+4);
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 3;
nextstate = SPS (3);
end
3:
begin
let tttt = expgolomb_unsigned(buffer);
$display( "ccl2SPSpic_order_cnt_type %0d", tttt );
outfifo.enq(SPSpic_order_cnt_type truncate(tttt));
outfifo.enq(SPSpic_order_cnt_type (truncate(tttt)));
spspic_order_cnt_type <= truncate(tttt);
numbitsused = expgolomb_numbits(buffer);
if(tttt == 0)
nextstate = SPS 4;
nextstate = SPS (4);
else if(tttt == 1)
nextstate = SPS 5;
nextstate = SPS (5);
else
nextstate = SPS 10;
nextstate = SPS (10);
end
4:
begin
$display( "ccl2SPSlog2_max_pic_order_cnt_lsb %0d", expgolomb_unsigned(buffer)+4 );
outfifo.enq(SPSlog2_max_pic_order_cnt_lsb truncate(expgolomb_unsigned(buffer)+4));
outfifo.enq(SPSlog2_max_pic_order_cnt_lsb (truncate(expgolomb_unsigned(buffer)+4)));
spslog2_max_pic_order_cnt_lsb <= truncate(expgolomb_unsigned(buffer)+4);
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 10;
nextstate = SPS (10);
end
5:
begin
$display( "ccl2SPSdelta_pic_order_always_zero_flag %0d", buffer[buffersize-1] );
outfifo.enq(SPSdelta_pic_order_always_zero_flag buffer[buffersize-1]);
outfifo.enq(SPSdelta_pic_order_always_zero_flag (buffer[buffersize-1]));
spsdelta_pic_order_always_zero_flag <= buffer[buffersize-1];
numbitsused = 1;
nextstate = SPS 6;
nextstate = SPS (6);
end
6:
begin
680,16 → 680,16
Bufcount tempbufcount = expgolomb_numbits32(buffer);
egnumbits <= tempbufcount;
numbitsused = tempbufcount-1;
nextstate = SPS 6;
nextstate = SPS (6);
end
else
begin
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
$display( "ccl2SPSoffset_for_non_ref_pic %0d", tempint32 );
outfifo.enq(SPSoffset_for_non_ref_pic truncate(expgolomb_signed32(buffer,egnumbits)));
outfifo.enq(SPSoffset_for_non_ref_pic (truncate(expgolomb_signed32(buffer,egnumbits))));
egnumbits <= 0;
numbitsused = egnumbits;
nextstate = SPS 7;
nextstate = SPS (7);
end
end
7:
699,30 → 699,30
Bufcount tempbufcount = expgolomb_numbits32(buffer);
egnumbits <= tempbufcount;
numbitsused = tempbufcount-1;
nextstate = SPS 7;
nextstate = SPS (7);
end
else
begin
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
$display( "ccl2SPSoffset_for_top_to_bottom_field %0d", tempint32 );
outfifo.enq(SPSoffset_for_top_to_bottom_field truncate(expgolomb_signed32(buffer,egnumbits)));
outfifo.enq(SPSoffset_for_top_to_bottom_field (truncate(expgolomb_signed32(buffer,egnumbits))));
egnumbits <= 0;
numbitsused = egnumbits;
nextstate = SPS 8;
nextstate = SPS (8);
end
end
8:
begin
$display( "ccl2SPSnum_ref_frames_in_pic_order_cnt_cycle %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SPSnum_ref_frames_in_pic_order_cnt_cycle truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SPSnum_ref_frames_in_pic_order_cnt_cycle (truncate(expgolomb_unsigned(buffer))));
spsnum_ref_frames_in_pic_order_cnt_cycle <= truncate(expgolomb_unsigned(buffer));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 9;
nextstate = SPS (9);
end
9:
begin
if(spsnum_ref_frames_in_pic_order_cnt_cycle == 0)
nextstate = SPS 10;
nextstate = SPS (10);
else
begin
if(egnumbits == 0)
730,17 → 730,17
Bufcount tempbufcount = expgolomb_numbits32(buffer);
egnumbits <= tempbufcount;
numbitsused = tempbufcount-1;
nextstate = SPS 9;
nextstate = SPS (9);
end
else
begin
tempint32 = unpack(expgolomb_signed32(buffer,egnumbits));
$display( "ccl2SPSoffset_for_ref_frame %0d", tempint32 );
outfifo.enq(SPSoffset_for_ref_frame truncate(expgolomb_signed32(buffer,egnumbits)));
outfifo.enq(SPSoffset_for_ref_frame (truncate(expgolomb_signed32(buffer,egnumbits))));
egnumbits <= 0;
spsnum_ref_frames_in_pic_order_cnt_cycle <= spsnum_ref_frames_in_pic_order_cnt_cycle - 1;
numbitsused = egnumbits;
nextstate = SPS 9;
nextstate = SPS (9);
end
end
end
747,82 → 747,82
10:
begin
$display( "ccl2SPSnum_ref_frames %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SPSnum_ref_frames truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SPSnum_ref_frames (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 11;
nextstate = SPS (11);
end
11:
begin
$display( "ccl2SPSgaps_in_frame_num_allowed_flag %0d", buffer[buffersize-1] );
outfifo.enq(SPSgaps_in_frame_num_allowed_flag buffer[buffersize-1]);
outfifo.enq(SPSgaps_in_frame_num_allowed_flag (buffer[buffersize-1]));
numbitsused = 1;
nextstate = SPS 12;
nextstate = SPS (12);
end
12:
begin
$display( "ccl2SPSpic_width_in_mbs %0d", expgolomb_unsigned(buffer)+1 );
outfifo.enq(SPSpic_width_in_mbs truncate(expgolomb_unsigned(buffer)+1));
outfifo.enq(SPSpic_width_in_mbs (truncate(expgolomb_unsigned(buffer)+1)));
calcnc.initialize_picWidth(truncate(expgolomb_unsigned(buffer)+1));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 13;
nextstate = SPS (13);
end
13:
begin
$display( "ccl2SPSpic_height_in_map_units %0d", expgolomb_unsigned(buffer)+1 );
outfifo.enq(SPSpic_height_in_map_units truncate(expgolomb_unsigned(buffer)+1));
outfifo.enq(SPSpic_height_in_map_units (truncate(expgolomb_unsigned(buffer)+1)));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 14;
nextstate = SPS (14);
end
14:
begin
//SPSframe_mbs_only_flag = 1 for baseline
numbitsused = 1;
nextstate = SPS 15;
nextstate = SPS (15);
end
15:
begin
$display( "ccl2SPSdirect_8x8_inference_flag %0d", buffer[buffersize-1] );
outfifo.enq(SPSdirect_8x8_inference_flag buffer[buffersize-1]);
outfifo.enq(SPSdirect_8x8_inference_flag (buffer[buffersize-1]));
numbitsused = 1;
nextstate = SPS 16;
nextstate = SPS (16);
end
16:
begin
$display( "ccl2SPSframe_cropping_flag %0d", buffer[buffersize-1] );
outfifo.enq(SPSframe_cropping_flag buffer[buffersize-1]);
outfifo.enq(SPSframe_cropping_flag (buffer[buffersize-1]));
numbitsused = 1;
if(buffer[buffersize-1] == 1)
nextstate = SPS 17;
nextstate = SPS (17);
else
nextstate = SPS 21;
nextstate = SPS (21);
end
17:
begin
$display( "ccl2SPSframe_crop_left_offset %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SPSframe_crop_left_offset truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SPSframe_crop_left_offset (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 18;
nextstate = SPS (18);
end
18:
begin
$display( "ccl2SPSframe_crop_right_offset %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SPSframe_crop_right_offset truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SPSframe_crop_right_offset (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 19;
nextstate = SPS (19);
end
19:
begin
$display( "ccl2SPSframe_crop_top_offset %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SPSframe_crop_top_offset truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SPSframe_crop_top_offset (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 20;
nextstate = SPS (20);
end
20:
begin
$display( "ccl2SPSframe_crop_bottom_offset %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SPSframe_crop_bottom_offset truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SPSframe_crop_bottom_offset (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = SPS 21;
nextstate = SPS (21);
end
21:
begin
839,17 → 839,17
begin
ppspic_parameter_set_id <= truncate(expgolomb_unsigned(buffer));
$display( "ccl2PPSpic_parameter_set_id %0d", expgolomb_unsigned(buffer) );
outfifo.enq(PPSpic_parameter_set_id truncate(expgolomb_unsigned(buffer)));
outfifo_ITB.enq(PPSpic_parameter_set_id truncate(expgolomb_unsigned(buffer)));
outfifo.enq(PPSpic_parameter_set_id (truncate(expgolomb_unsigned(buffer))));
outfifo_ITB.enq(PPSpic_parameter_set_id (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = PPS 1;
nextstate = PPS (1);
end
1:
begin
$display( "ccl2PPSseq_parameter_set_id %0d", expgolomb_unsigned(buffer) );
outfifo.enq(PPSseq_parameter_set_id truncate(expgolomb_unsigned(buffer)));
outfifo.enq(PPSseq_parameter_set_id (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = PPS 2;
nextstate = PPS (2);
if(spsseq_parameter_set_id != truncate(expgolomb_unsigned(buffer)))
$display( "ERROR EntropyDec: seq_parameter_set_id don't match" );
end
857,20 → 857,20
begin
//PPSentropy_coding_mode_flag = 0 for baseline
numbitsused = 1;
nextstate = PPS 3;
nextstate = PPS (3);
end
3:
begin
ppspic_order_present_flag <= buffer[buffersize-1];
$display( "ccl2PPSpic_order_present_flag %0d", buffer[buffersize-1] );
outfifo.enq(PPSpic_order_present_flag buffer[buffersize-1]);
outfifo.enq(PPSpic_order_present_flag (buffer[buffersize-1]));
numbitsused = 1;
nextstate = PPS 4;
nextstate = PPS (4);
end
4:
begin
numbitsused = expgolomb_numbits(buffer);
nextstate = PPS 5;
nextstate = PPS (5);
if(expgolomb_unsigned(buffer)+1 != 1)
$display( "ERROR EntropyDec: PPSnum_slice_groups not equal to 1" );//=1 for main
end
877,66 → 877,66
5:
begin
$display( "ccl2PPSnum_ref_idx_l0_active %0d", expgolomb_unsigned(buffer)+1 );
outfifo.enq(PPSnum_ref_idx_l0_active truncate(expgolomb_unsigned(buffer)+1));
outfifo.enq(PPSnum_ref_idx_l0_active (truncate(expgolomb_unsigned(buffer)+1)));
num_ref_idx_l0_active_minus1 <= truncate(expgolomb_unsigned(buffer));
numbitsused = expgolomb_numbits(buffer);
nextstate = PPS 6;
nextstate = PPS (6);
end
6:
begin
$display( "ccl2PPSnum_ref_idx_l1_active %0d", expgolomb_unsigned(buffer)+1 );
outfifo.enq(PPSnum_ref_idx_l1_active truncate(expgolomb_unsigned(buffer)+1));
outfifo.enq(PPSnum_ref_idx_l1_active (truncate(expgolomb_unsigned(buffer)+1)));
numbitsused = expgolomb_numbits(buffer);
nextstate = PPS 7;
nextstate = PPS (7);
end
7:
begin
//PPSweighted_pred_flag = 0 for baseline; PPSweighted_bipred_idc = 0 for baseline
numbitsused = 3;
nextstate = PPS 8;
nextstate = PPS (8);
end
8:
begin
$display( "ccl2PPSpic_init_qp %0d", expgolomb_signed(buffer)+26 );
outfifo_ITB.enq(PPSpic_init_qp truncate(expgolomb_signed(buffer)+26));
outfifo_ITB.enq(PPSpic_init_qp (truncate(expgolomb_signed(buffer)+26)));
numbitsused = expgolomb_numbits(buffer);
nextstate = PPS 9;
nextstate = PPS (9);
end
9:
begin
$display( "ccl2PPSpic_init_qs %0d", expgolomb_signed(buffer)+26 );
outfifo_ITB.enq(PPSpic_init_qs truncate(expgolomb_signed(buffer)+26));
outfifo_ITB.enq(PPSpic_init_qs (truncate(expgolomb_signed(buffer)+26)));
numbitsused = expgolomb_numbits(buffer);
nextstate = PPS 10;
nextstate = PPS (10);
end
10:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2PPSchroma_qp_index_offset %0d", tempint );
outfifo_ITB.enq(PPSchroma_qp_index_offset truncate(expgolomb_signed(buffer)));
outfifo_ITB.enq(PPSchroma_qp_index_offset (truncate(expgolomb_signed(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = PPS 11;
nextstate = PPS (11);
end
11:
begin
ppsdeblocking_filter_control_present_flag <= buffer[buffersize-1];
$display( "ccl2PPSdeblocking_filter_control_present_flag %0d", buffer[buffersize-1] );
outfifo.enq(PPSdeblocking_filter_control_present_flag buffer[buffersize-1]);
outfifo.enq(PPSdeblocking_filter_control_present_flag (buffer[buffersize-1]));
numbitsused = 1;
nextstate = PPS 12;
nextstate = PPS (12);
end
12:
begin
$display( "ccl2PPSconstrained_intra_pred_flag %0d", buffer[buffersize-1] );
outfifo.enq(PPSconstrained_intra_pred_flag buffer[buffersize-1]);
outfifo.enq(PPSconstrained_intra_pred_flag (buffer[buffersize-1]));
numbitsused = 1;
nextstate = PPS 13;
nextstate = PPS (13);
end
13:
begin
//PPSredundant_pic_cnt_present_flag = 0 for main
numbitsused = 1;
nextstate = PPS 14;
nextstate = PPS (14);
if(buffer[buffersize-1] != 0)
$display( "ERROR EntropyDec: PPSredundant_pic_cnt_present_flag not equal to 0" );//=0 for main
end
949,7 → 949,7
end
tagged AUD .step :
begin
outfifo.enq(AUDPrimaryPicType buffer[buffersize-1:buffersize-3]);
outfifo.enq(AUDPrimaryPicType (buffer[buffersize-1:buffersize-3]));
numbitsused = 3;
nextstate = Start;
end
975,14 → 975,14
if( shslice_type!=2 && shslice_type!=7 )
begin
$display( "ccl2SDmb_skip_run %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDmb_skip_run truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SDmb_skip_run (truncate(expgolomb_unsigned(buffer))));
tempreg <= truncate(expgolomb_unsigned(buffer));
calcnc.nNupdate_pskip( truncate(expgolomb_unsigned(buffer)) );
numbitsused = expgolomb_numbits(buffer);
nextstate = SliceData 1;
nextstate = SliceData (1);
end
else
nextstate = SliceData 2;
nextstate = SliceData (2);
end
1:
begin
990,13 → 990,13
begin
currMbAddr <= currMbAddr+1;//only because input assumed to comform to both baseline and main
tempreg <= tempreg-1;
nextstate = SliceData 1;
nextstate = SliceData (1);
end
else
begin
////$display( "ccl2SDcurrMbAddr %0d", currMbAddr );
////outfifo.enq(SDcurrMbAddr currMbAddr);
nextstate = SliceData 2;
nextstate = SliceData (2);
end
end
2:
1004,16 → 1004,16
if( bufcount>8 || buffer[buffersize-1]!=1 || (buffer<<1)!=0 )
begin
calcnc.loadMb(currMbAddr);
nextstate = MacroblockLayer 0;
nextstate = MacroblockLayer (0);
end
else
nextstate = SliceData 3;
nextstate = SliceData (3);
end
3:
begin
currMbAddr <= currMbAddr+1;//only because input assumed to comform to both baseline and main
if( bufcount>8 || buffer[buffersize-1]!=1 || (buffer<<1)!=0 )
nextstate = SliceData 0;
nextstate = SliceData (0);
else
nextstate = Start;
end
1026,23 → 1026,23
0:
begin
$display( "ccl2SDMmb_type %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMmbtype mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) );
outfifo_ITB.enq(SDMmbtype mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) );
outfifo.enq(SDMmbtype (mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type)) );
outfifo_ITB.enq(SDMmbtype (mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type)) );
sdmmbtype <= mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type);
numbitsused = expgolomb_numbits(buffer);
if(mbtype_convert(truncate(expgolomb_unsigned(buffer)), shslice_type) == I_PCM)
begin
calcnc.nNupdate_ipcm();
nextstate = MacroblockLayer 1;
nextstate = MacroblockLayer (1);
end
else
nextstate = MacroblockLayer 4;
nextstate = MacroblockLayer (4);
end
1:
begin
tempreg <= 256;
numbitsused = zeroExtend(bufcount[2:0]);
nextstate = MacroblockLayer 2;
nextstate = MacroblockLayer (2);
end
2:
begin
1050,15 → 1050,15
begin
Bit#(8) outputdata = buffer[buffersize-1:buffersize-8];
$display( "ccl2SDMpcm_sample_luma %0d", outputdata );
outfifo.enq(SDMpcm_sample_luma outputdata);
outfifo.enq(SDMpcm_sample_luma (outputdata));
tempreg <= tempreg-1;
numbitsused = 8;
nextstate = MacroblockLayer 2;
nextstate = MacroblockLayer (2);
end
else
begin
tempreg <= 128;
nextstate = MacroblockLayer 3;
nextstate = MacroblockLayer (3);
end
end
3:
1067,13 → 1067,13
begin
Bit#(8) outputdata = buffer[buffersize-1:buffersize-8];
$display( "ccl2SDMpcm_sample_chroma %0d", outputdata );
outfifo.enq(SDMpcm_sample_chroma outputdata);
outfifo.enq(SDMpcm_sample_chroma (outputdata));
tempreg <= tempreg-1;
numbitsused = 8;
nextstate = MacroblockLayer 3;
nextstate = MacroblockLayer (3);
end
else
nextstate = SliceData 3;
nextstate = SliceData (3);
end
4:
begin
1080,9 → 1080,9
if(sdmmbtype != I_NxN
&&& mbPartPredMode(sdmmbtype,0) != Intra_16x16
&&& numMbPart(sdmmbtype) == 4)
nextstate = SubMbPrediction 0;
nextstate = SubMbPrediction (0);
else
nextstate = MbPrediction 0;
nextstate = MbPrediction (0);
end
5:
begin
1104,7 → 1104,7
else
$display( "ERROR EntropyDec: MacroblockLayer 5 sdmmbtype not I_16x16" );
end
nextstate = MacroblockLayer 6;
nextstate = MacroblockLayer (6);
end
6:
begin
1114,13 → 1114,13
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMmb_qp_delta %0d", tempint );
outfifo_ITB.enq(SDMmb_qp_delta truncate(expgolomb_signed(buffer)));
outfifo_ITB.enq(SDMmb_qp_delta (truncate(expgolomb_signed(buffer))));
numbitsused = expgolomb_numbits(buffer);
end
residualChroma <= 0;
temp5bit <= 0;
maxNumCoeff <= 16;
nextstate = ResidualBlock 0;
nextstate = ResidualBlock (0);
end
default: $display( "ERROR EntropyDec: MacroblockLayer default step" );
endcase
1133,24 → 1133,24
if(mbPartPredMode(sdmmbtype,0) == Intra_16x16)
begin
$display( "ccl2SDMMintra_chroma_pred_mode %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMMintra_chroma_pred_mode truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SDMMintra_chroma_pred_mode (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = MacroblockLayer 5;
nextstate = MacroblockLayer (5);
end
else if(mbPartPredMode(sdmmbtype,0) == Intra_4x4)
begin
temp5bit <= 16;
nextstate = MbPrediction 1;
nextstate = MbPrediction (1);
end
else if(num_ref_idx_l0_active_minus1 > 0)
begin
temp3bit0 <= numMbPart(sdmmbtype);
nextstate = MbPrediction 2;
nextstate = MbPrediction (2);
end
else
begin
temp3bit0 <= numMbPart(sdmmbtype);
nextstate = MbPrediction 3;
nextstate = MbPrediction (3);
end
end
1:
1158,9 → 1158,9
if(temp5bit == 0)
begin
$display( "ccl2SDMMintra_chroma_pred_mode %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMMintra_chroma_pred_mode truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SDMMintra_chroma_pred_mode (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = MacroblockLayer 5;
nextstate = MacroblockLayer (5);
end
else
begin
1169,16 → 1169,16
begin
Bit#(4) tttt = buffer[buffersize-1:buffersize-4];
$display( "ccl2SDMMrem_intra4x4_pred_mode %0d", tttt );
outfifo.enq(SDMMrem_intra4x4_pred_mode tttt);
outfifo.enq(SDMMrem_intra4x4_pred_mode (tttt));
numbitsused = 4;
end
else
begin
outfifo.enq(SDMMrem_intra4x4_pred_mode 4'b1000);
outfifo.enq(SDMMrem_intra4x4_pred_mode (4'b1000));
numbitsused = 1;
end
temp5bit <= temp5bit-1;
nextstate = MbPrediction 1;
nextstate = MbPrediction (1);
end
end
2:
1186,24 → 1186,24
if(num_ref_idx_l0_active_minus1 == 1)
begin
$display( "ccl2SDMMref_idx_l0 %0d", 1-buffer[buffersize-1] );
outfifo.enq(SDMMref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
outfifo.enq(SDMMref_idx_l0 (zeroExtend(1-buffer[buffersize-1])));
numbitsused = 1;
end
else
begin
$display( "ccl2SDMMref_idx_l0 %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMMref_idx_l0 truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SDMMref_idx_l0 (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
end
if(temp3bit0 == 1)
begin
temp3bit0 <= numMbPart(sdmmbtype);
nextstate = MbPrediction 3;
nextstate = MbPrediction (3);
end
else
begin
temp3bit0 <= temp3bit0-1;
nextstate = MbPrediction 2;
nextstate = MbPrediction (2);
end
end
3:
1210,21 → 1210,21
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMMmvd_l0 %0d", tempint );
outfifo.enq(SDMMmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(SDMMmvd_l0 (truncate(expgolomb_signed(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = MbPrediction 4;
nextstate = MbPrediction (4);
end
4:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMMmvd_l0 %0d", tempint );
outfifo.enq(SDMMmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(SDMMmvd_l0 (truncate(expgolomb_signed(buffer))));
numbitsused = expgolomb_numbits(buffer);
temp3bit0 <= temp3bit0-1;
if(temp3bit0 == 1)
nextstate = MacroblockLayer 5;
nextstate = MacroblockLayer (5);
else
nextstate = MbPrediction 3;
nextstate = MbPrediction (3);
end
default: $display( "ERROR EntropyDec: MbPrediction default step" );
endcase
1235,38 → 1235,38
0:
begin
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMSsub_mb_type truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SDMSsub_mb_type (truncate(expgolomb_unsigned(buffer))));
temp3bit0 <= numSubMbPart(truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = SubMbPrediction 1;
nextstate = SubMbPrediction (1);
end
1:
begin
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMSsub_mb_type truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SDMSsub_mb_type (truncate(expgolomb_unsigned(buffer))));
temp3bit1 <= numSubMbPart(truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = SubMbPrediction 2;
nextstate = SubMbPrediction (2);
end
2:
begin
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMSsub_mb_type truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SDMSsub_mb_type (truncate(expgolomb_unsigned(buffer))));
temp3bit2 <= numSubMbPart(truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
nextstate = SubMbPrediction 3;
nextstate = SubMbPrediction (3);
end
3:
begin
$display( "ccl2SDMSsub_mb_type %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMSsub_mb_type truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SDMSsub_mb_type (truncate(expgolomb_unsigned(buffer))));
temp3bit3 <= numSubMbPart(truncate(expgolomb_unsigned(buffer)));
numbitsused = expgolomb_numbits(buffer);
if(num_ref_idx_l0_active_minus1 > 0
&& sdmmbtype != P_8x8ref0)
nextstate = SubMbPrediction 4;
nextstate = SubMbPrediction (4);
else
nextstate = SubMbPrediction 8;
nextstate = SubMbPrediction (8);
end
4:
begin
1273,16 → 1273,16
if(num_ref_idx_l0_active_minus1 == 1)
begin
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] );
outfifo.enq(SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
outfifo.enq(SDMSref_idx_l0 (zeroExtend(1-buffer[buffersize-1])));
numbitsused = 1;
end
else
begin
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SDMSref_idx_l0 (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
end
nextstate = SubMbPrediction 5;
nextstate = SubMbPrediction (5);
end
5:
begin
1289,16 → 1289,16
if(num_ref_idx_l0_active_minus1 == 1)
begin
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] );
outfifo.enq(SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
outfifo.enq(SDMSref_idx_l0 (zeroExtend(1-buffer[buffersize-1])));
numbitsused = 1;
end
else
begin
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SDMSref_idx_l0 (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
end
nextstate = SubMbPrediction 6;
nextstate = SubMbPrediction (6);
end
6:
begin
1305,16 → 1305,16
if(num_ref_idx_l0_active_minus1 == 1)
begin
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] );
outfifo.enq(SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
outfifo.enq(SDMSref_idx_l0 (zeroExtend(1-buffer[buffersize-1])));
numbitsused = 1;
end
else
begin
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SDMSref_idx_l0 (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
end
nextstate = SubMbPrediction 7;
nextstate = SubMbPrediction (7);
end
7:
begin
1321,96 → 1321,96
if(num_ref_idx_l0_active_minus1 == 1)
begin
$display( "ccl2SDMSref_idx_l0 %0d", 1-buffer[buffersize-1] );
outfifo.enq(SDMSref_idx_l0 zeroExtend(1-buffer[buffersize-1]));
outfifo.enq(SDMSref_idx_l0 (zeroExtend(1-buffer[buffersize-1])));
numbitsused = 1;
end
else
begin
$display( "ccl2SDMSref_idx_l0 %0d", expgolomb_unsigned(buffer) );
outfifo.enq(SDMSref_idx_l0 truncate(expgolomb_unsigned(buffer)));
outfifo.enq(SDMSref_idx_l0 (truncate(expgolomb_unsigned(buffer))));
numbitsused = expgolomb_numbits(buffer);
end
nextstate = SubMbPrediction 8;
nextstate = SubMbPrediction (8);
end
8:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMSmvd_l0 %0d", tempint );
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(SDMSmvd_l0 (truncate(expgolomb_signed(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = SubMbPrediction 9;
nextstate = SubMbPrediction (9);
end
9:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMSmvd_l0 %0d", tempint );
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(SDMSmvd_l0 (truncate(expgolomb_signed(buffer))));
numbitsused = expgolomb_numbits(buffer);
temp3bit0 <= temp3bit0-1;
if(temp3bit0 == 1)
nextstate = SubMbPrediction 10;
nextstate = SubMbPrediction (10);
else
nextstate = SubMbPrediction 8;
nextstate = SubMbPrediction (8);
end
10:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMSmvd_l0 %0d", tempint );
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(SDMSmvd_l0 (truncate(expgolomb_signed(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = SubMbPrediction 11;
nextstate = SubMbPrediction (11);
end
11:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMSmvd_l0 %0d", tempint );
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(SDMSmvd_l0 (truncate(expgolomb_signed(buffer))));
numbitsused = expgolomb_numbits(buffer);
temp3bit1 <= temp3bit1-1;
if(temp3bit1 == 1)
nextstate = SubMbPrediction 12;
nextstate = SubMbPrediction (12);
else
nextstate = SubMbPrediction 10;
nextstate = SubMbPrediction (10);
end
12:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMSmvd_l0 %0d", tempint );
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(SDMSmvd_l0 (truncate(expgolomb_signed(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = SubMbPrediction 13;
nextstate = SubMbPrediction (13);
end
13:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMSmvd_l0 %0d", tempint );
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(SDMSmvd_l0 (truncate(expgolomb_signed(buffer))));
numbitsused = expgolomb_numbits(buffer);
temp3bit2 <= temp3bit2-1;
if(temp3bit2 == 1)
nextstate = SubMbPrediction 14;
nextstate = SubMbPrediction (14);
else
nextstate = SubMbPrediction 12;
nextstate = SubMbPrediction (12);
end
14:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMSmvd_l0 %0d", tempint );
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(SDMSmvd_l0 (truncate(expgolomb_signed(buffer))));
numbitsused = expgolomb_numbits(buffer);
nextstate = SubMbPrediction 15;
nextstate = SubMbPrediction (15);
end
15:
begin
tempint = unpack(expgolomb_signed(buffer));
$display( "ccl2SDMSmvd_l0 %0d", tempint );
outfifo.enq(SDMSmvd_l0 truncate(expgolomb_signed(buffer)));
outfifo.enq(SDMSmvd_l0 (truncate(expgolomb_signed(buffer))));
numbitsused = expgolomb_numbits(buffer);
temp3bit3 <= temp3bit3-1;
if(temp3bit3 == 1)
nextstate = MacroblockLayer 5;
nextstate = MacroblockLayer (5);
else
nextstate = SubMbPrediction 14;
nextstate = SubMbPrediction (14);
end
default: $display( "ERROR EntropyDec: SubMbPrediction default step" );
endcase
1431,26 → 1431,26
else
tempreg <= zeroExtend(6'b111111);
if(mbPartPredMode(sdmmbtype,0)==Intra_16x16 && maxNumCoeff==16)
nextstate = ResidualBlock 1;
nextstate = ResidualBlock (1);
else if(residualChroma==0 && (sdmcodedBlockPatternLuma & (1 << zeroExtend(temp5bit[3:2])))==0)
begin
calcnc.nNupdate_luma(truncate(temp5bit),0);
outfifo_ITB.enq(SDMRcoeffLevelZeros maxNumCoeff);
nextstate = ResidualBlock 5;
outfifo_ITB.enq(SDMRcoeffLevelZeros (maxNumCoeff));
nextstate = ResidualBlock (5);
end
else if(residualChroma==1 && maxNumCoeff==4 && (sdmcodedBlockPatternChroma & 3)==0)
begin
outfifo_ITB.enq(SDMRcoeffLevelZeros 4);
nextstate = ResidualBlock 5;
outfifo_ITB.enq(SDMRcoeffLevelZeros (4));
nextstate = ResidualBlock (5);
end
else if(residualChroma==1 && maxNumCoeff!=4 && (sdmcodedBlockPatternChroma & 2)==0)
begin
calcnc.nNupdate_chroma(truncate(temp5bit),0);
outfifo_ITB.enq(SDMRcoeffLevelZeros 15);
nextstate = ResidualBlock 5;
outfifo_ITB.enq(SDMRcoeffLevelZeros (15));
nextstate = ResidualBlock (5);
end
else
nextstate = ResidualBlock 1;
nextstate = ResidualBlock (1);
//$display( "TRACE EntropyDec: ResidualBlock 0 temp5bit = %0d", temp5bit);
end
1:
1470,7 → 1470,7
temp3bit1 <= 1;//suffixLength
else
temp3bit1 <= 0;//suffixLength
nextstate = ResidualBlock 2;
nextstate = ResidualBlock (2);
//$display( "TRACE EntropyDec: ResidualBlock 1 nC = %0d", tempreg);
$display( "ccl2SDMRtotal_coeff %0d", totalCoeffTemp );
$display( "ccl2SDMRtrailing_ones %0d", trailingOnesTemp );
1533,14 → 1533,14
temp5bit2 <= 0;
zerosLeft <= 0;
if(totalCoeff < maxNumCoeff)
nextstate = ResidualBlock 3;
nextstate = ResidualBlock (3);
else
nextstate = ResidualBlock 5;
nextstate = ResidualBlock (5);
end
else
begin
temp5bit2 <= temp5bit2 + 1;
nextstate = ResidualBlock 2;
nextstate = ResidualBlock (2);
end
end
3:
1559,7 → 1559,7
$display( "ccl2SDMRcoeffLevelZeros %0d", maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft) );
outfifo_ITB.enq(SDMRcoeffLevelZeros (maxNumCoeff - totalCoeff - zeroExtend(tempZerosLeft)));
end
nextstate = ResidualBlock 5;
nextstate = ResidualBlock (5);
end
5:
begin
1588,7 → 1588,7
begin
if(residualChroma==0)
begin
nextstate = ResidualBlock 0;
nextstate = ResidualBlock (0);
if(mbPartPredMode(sdmmbtype,0)==Intra_16x16 && maxNumCoeff==16)
maxNumCoeff <= 15;
else if(temp5bit==15)
1602,7 → 1602,7
end
else if(maxNumCoeff==4)
begin
nextstate = ResidualBlock 0;
nextstate = ResidualBlock (0);
if(temp5bit==1)
begin
temp5bit <= 0;
1616,17 → 1616,17
if(temp5bit==7)
begin
temp5bit <= 0;
nextstate = SliceData 3;
nextstate = SliceData (3);
end
else
begin
nextstate = ResidualBlock 0;
nextstate = ResidualBlock (0);
temp5bit <= temp5bit+1;
end
end
end
else
nextstate = ResidualBlock 5;
nextstate = ResidualBlock (5);
end
default: $display( "ERROR EntropyDec: ResidualBlock default step" );
endcase
/trunk/src/mkInterpolator.bsv
784,7 → 784,7
rule switching( work1Done && (work2Done || reqregWork2==Invalid) && !work8x8Done);
work1Done <= False;
work2Done <= False;
reqregWork2 <= (Valid reqfifoWork1.first());
reqregWork2 <= (Valid (reqfifoWork1.first()));
workFileFlag <= 1-workFileFlag;
reqfifoWork1.deq();
$display( "Trace interpolator: switching %h %h", outBlockNum, outPixelNum);
797,7 → 797,7
resultReady <= replicate(0);
work1Done <= False;
work2Done <= False;
reqregWork2 <= (Valid reqfifoWork1.first());
reqregWork2 <= (Valid (reqfifoWork1.first()));
workFileFlag <= 1-workFileFlag;
reqfifoWork1.deq();
$display( "Trace interpolator: switching8x8 %h %h", outBlockNum, outPixelNum);
/trunk/src/mkCalc_nC.bsv
49,7 → 49,7
rule sendReq ( waiting == 1 && reqCount > 0 );
Bit#(PicWidthSz) temp2 = truncate(currMbHor);
Bit#(TAdd#(PicWidthSz,1)) temp = {bit1,temp2};
memReqQ.enq(LoadReq temp );
memReqQ.enq(LoadReq (temp) );
reqCount <= reqCount-1;
endrule
 
133,7 → 133,7
respCount <= 2;
Bit#(PicWidthSz) temp2 = truncate(currMbHor);
Bit#(TAdd#(PicWidthSz,1)) temp = {bit0,temp2};
memReqQ.enq(LoadReq temp );
memReqQ.enq(LoadReq (temp) );
//$display( "ERROR EntropyDec: mkCalc_nC loadMb incomplete" );
end
end
/trunk/src/mkFrameBuffer.bsv
64,7 → 64,7
rule loading1 ( loadReqQ1.first() matches tagged FBLoadReq .addrt );
if(addrt<frameBufferSize)
begin
loadRespQ1.enq( FBLoadResp rfile2.load1(addrt) );
loadRespQ1.enq( FBLoadResp (rfile2.load1(addrt)) );
loadReqQ1.deq();
end
else
74,7 → 74,7
rule loading2 ( loadReqQ2.first() matches tagged FBLoadReq .addrt );
if(addrt<frameBufferSize)
begin
loadRespQ2.enq( FBLoadResp rfile2.load2(addrt) );
loadRespQ2.enq( FBLoadResp (rfile2.load2(addrt)) );
loadReqQ2.deq();
end
else
/trunk/src/mkNalUnwrap.bsv
79,7 → 79,7
end
else if(zerocount==0)
begin
outfifo.enq(RbspByte bufferc);
outfifo.enq(RbspByte (bufferc));
$display("ccl1rbspbyte %h", bufferc);
bufferc <= bufferb;
bufferb <= buffera;
89,7 → 89,7
else
begin
zerocount <= zerocount-1;
outfifo.enq(RbspByte 0);
outfifo.enq(RbspByte (0));
$display("ccl1rbspbyte 00");
end
endrule
106,13 → 106,13
else if(zerocount==0)
begin
bufcount <= 2;
outfifo.enq(RbspByte bufferc);
outfifo.enq(RbspByte (bufferc));
$display("ccl1rbspbyte %h", bufferc);
end
else
begin
zerocount <= zerocount-1;
outfifo.enq(RbspByte 0);
outfifo.enq(RbspByte (0));
$display("ccl1rbspbyte 00");
end
end
120,7 → 120,7
begin
bufcount <= 1;
if(!(bufferb==0 && buffera==0))
outfifo.enq(RbspByte bufferb);
outfifo.enq(RbspByte (bufferb));
$display("ccl1rbspbyte %h", bufferb);
end
1:
127,7 → 127,7
begin
bufcount <= 0;
if(!(buffera==0))
outfifo.enq(RbspByte buffera);
outfifo.enq(RbspByte (buffera));
$display("ccl1rbspbyte %h", buffera);
end
0:
/trunk/src/mkBufferControl.bsv
92,7 → 92,7
begin
state <= RemoveFound;
if(state==RemoveOutput)
returnList.enq(Valid tpl_2(temp));
returnList.enq(Valid (tpl_2(temp)));
end
if(tempCount>=picCount)
$display( "ERROR BufferControl: ShortTermPicList removing not found");
139,7 → 139,7
Tuple2#(Bit#(16),Bit#(5)) temp <- rfile.sub(tempPic);
if(tpl_1(temp)==tempNum)
begin
returnList.enq(Valid tpl_2(temp));
returnList.enq(Valid (tpl_2(temp)));
state <= Idle;
end
tempPic <= shortTermPicListPrev(tempPic);
153,7 → 153,7
if(tempCount<picCount)
begin
Tuple2#(Bit#(16),Bit#(5)) temp <- rfile.sub(tempPic);
returnList.enq(Valid tpl_2(temp));
returnList.enq(Valid (tpl_2(temp)));
tempPic <= shortTermPicListPrev(tempPic);
tempCount <= tempCount+1;
end
290,7 → 290,7
begin
Maybe#(Bit#(5)) temp <- rfile.sub(tempPic);
if(temp matches tagged Valid .data)
returnList.enq(Valid data);
returnList.enq(Valid (data));
tempPic <= tempPic+1;
end
else
311,7 → 311,7
let rData <- rfile.sub(frameNum);
if(rData matches tagged Invalid)
picCount <= picCount+1;
rfile.upd(frameNum,Valid slot);
rfile.upd(frameNum,Valid (slot));
//$display( "TRACE BufferControl: LongTermPicList insert %h %h %h", picCount, frameNum, slot);
endmethod
882,7 → 882,7
if(loadRespQ1.first() matches tagged FBLoadResp .xdata)
begin
loadRespQ1.deq();
outfifo.enq(YUV xdata);
outfifo.enq(YUV (xdata));
if(outRespCount == {1'b0,frameinmb,6'b000000}+{2'b00,frameinmb,5'b00000}-1)
outputframedone <= True;
outRespCount <= outRespCount+1;
949,7 → 949,7
else if(inLoadOutOfBounds.first() == 2'b11)
inLoadRespQ.enq(IPLoadResp ({data[31:24],data[31:24],data[31:24],data[31:24]}));
else
inLoadRespQ.enq(IPLoadResp data);
inLoadRespQ.enq(IPLoadResp (data));
inLoadOutOfBounds.deq();
//$display( "Trace BufferControl: interResp %h %h", inLoadOutOfBounds.first(), data);
endrule
/trunk/src/mkInverseTrans.bsv
503,7 → 503,7
if(stage1Zeros)
work2Vector <= Zeros;
else
work2Vector <= (Values workVectorTemp);
work2Vector <= (Values (workVectorTemp));
stage1Zeros <= False;
stage1Done <= False;
workVector <= replicate(0);
655,7 → 655,7
for(Integer ii=0; ii<4; ii=ii+1)
work2VectorNew[tempIndex+fromInteger(ii*4)] = resultVector[ii];
end
work2Vector <= (Values work2VectorNew);
work2Vector <= (Values (work2VectorNew));
if(stage2Step == 7)
stage2Done <= True;
stage2Step <= stage2Step+1;
671,7 → 671,7
Vector#(4,Bit#(10)) outputVector = replicate(0);
for(Integer ii=0; ii<4; ii=ii+1)
outputVector[ii] = truncate((xdata[{stage3Step,2'b00}+fromInteger(ii)]+32) >> 6);
outfifo.enq(ITBresidual outputVector);
outfifo.enq(ITBresidual (outputVector));
Int#(10) tempint = unpack(outputVector[0]);
$display("ccl3IBTresidual %0d", tempint);
tempint = unpack(outputVector[1]);
/trunk/src/mkMemED.bsv
37,7 → 37,7
endrule
 
rule reading ( reqQ.first() matches tagged LoadReq .addrt );
respQ.enq( LoadResp rfile.sub(addrt) );
respQ.enq( LoadResp (rfile.sub(addrt)) );
reqQ.deq();
endrule
/trunk/src/mkInputGen.bsv
25,7 → 25,7
 
rule output_byte (index < `INPUT_SIZE);
//$display( "ccl0inputbyte %x", rfile.sub(index) );
outfifo.enq(DataByte rfile.sub(index));
outfifo.enq(DataByte (rfile.sub(index)));
index <= index+1;
endrule
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.