Line 447... |
Line 447... |
Vector#(16,Bit#(1)) resultReadyNext = resultReady;
|
Vector#(16,Bit#(1)) resultReadyNext = resultReady;
|
Vector#(4,Bit#(8)) tempResult8 = replicate(0);
|
Vector#(4,Bit#(8)) tempResult8 = replicate(0);
|
Vector#(4,Bit#(15)) readdata = replicate(0);
|
Vector#(4,Bit#(15)) readdata = replicate(0);
|
if(yfracl==0)
|
if(yfracl==0)
|
begin
|
begin
|
readdata = workFile.sub({(1-workFileFlag),1'b0,work2VerNum[1],work2HorNum,work2VerNum[0]});
|
readdata <- workFile.sub({(1-workFileFlag),1'b0,work2VerNum[1],work2HorNum,work2VerNum[0]});
|
for(Integer ii=0; ii<4; ii=ii+1)
|
for(Integer ii=0; ii<4; ii=ii+1)
|
tempResult8[ii] = (readdata[ii])[12:5];
|
tempResult8[ii] = (readdata[ii])[12:5];
|
resultFile.upd({work2VerNum[1],work2HorNum,work2VerNum[0]},tempResult8);
|
resultFile.upd({work2VerNum[1],work2HorNum,work2VerNum[0]},tempResult8);
|
resultReadyNext[{work2VerNum[1],work2HorNum,work2VerNum[0]}] = 1;
|
resultReadyNext[{work2VerNum[1],work2HorNum,work2VerNum[0]}] = 1;
|
work2HorNum <= work2HorNum+1;
|
work2HorNum <= work2HorNum+1;
|
Line 473... |
Line 473... |
work2VerNum <= work2VerNum+1;
|
work2VerNum <= work2VerNum+1;
|
end
|
end
|
end
|
end
|
else if(xfracl==0 || xfracl==2)//vertical interpolation
|
else if(xfracl==0 || xfracl==2)//vertical interpolation
|
begin
|
begin
|
readdata = workFile.sub({(1-workFileFlag),work2VerNum,work2HorNum[0]});
|
readdata <- workFile.sub({(1-workFileFlag),work2VerNum,work2HorNum[0]});
|
for(Integer ii=0; ii<4; ii=ii+1)
|
for(Integer ii=0; ii<4; ii=ii+1)
|
begin
|
begin
|
tempResult8[ii] = interpolate15to8(work2Vector15[ii],work2Vector15[ii+4],work2Vector15[ii+8],work2Vector15[ii+12],work2Vector15[ii+16],readdata[ii]);
|
tempResult8[ii] = interpolate15to8(work2Vector15[ii],work2Vector15[ii+4],work2Vector15[ii+8],work2Vector15[ii+12],work2Vector15[ii+16],readdata[ii]);
|
if(yfracl == 1)
|
if(yfracl == 1)
|
tempResult8[ii] = truncate(({1'b0,tempResult8[ii]} + {1'b0,clip1y10to8(truncate((work2Vector15[ii+8]+16)>>5))} + 1) >> 1);
|
tempResult8[ii] = truncate(({1'b0,tempResult8[ii]} + {1'b0,clip1y10to8(truncate((work2Vector15[ii+8]+16)>>5))} + 1) >> 1);
|
Line 523... |
Line 523... |
else//horizontal interpolation
|
else//horizontal interpolation
|
begin
|
begin
|
offset = offset-2;
|
offset = offset-2;
|
if(yfracl == 2)
|
if(yfracl == 2)
|
begin
|
begin
|
readdata = workFile.sub({(1-workFileFlag),work2VerNum[2:0],work2HorNum});
|
readdata <- workFile.sub({(1-workFileFlag),work2VerNum[2:0],work2HorNum});
|
for(Integer ii=0; ii<8; ii=ii+1)
|
for(Integer ii=0; ii<8; ii=ii+1)
|
work2Vector15Next[ii] = work2Vector15[ii+4];
|
work2Vector15Next[ii] = work2Vector15[ii+4];
|
for(Integer ii=0; ii<4; ii=ii+1)
|
for(Integer ii=0; ii<4; ii=ii+1)
|
begin
|
begin
|
Bit#(4) tempIndex = fromInteger(ii) + 8 - zeroExtend(offset);
|
Bit#(4) tempIndex = fromInteger(ii) + 8 - zeroExtend(offset);
|
Line 542... |
Line 542... |
tempResult8[ii] = truncate(({1'b0,tempResult8[ii]} + {1'b0,clip1y10to8(truncate((work2Vector15Next[ii+3]+16)>>5))} + 1) >> 1);
|
tempResult8[ii] = truncate(({1'b0,tempResult8[ii]} + {1'b0,clip1y10to8(truncate((work2Vector15Next[ii+3]+16)>>5))} + 1) >> 1);
|
end
|
end
|
end
|
end
|
else
|
else
|
begin
|
begin
|
Vector#(4,Bit#(8)) readdata8 = storeFile.sub({(1-workFileFlag),work2VerNum[2:0],work2HorNum});
|
Vector#(4,Bit#(8)) readdata8 <- storeFile.sub({(1-workFileFlag),work2VerNum[2:0],work2HorNum});
|
for(Integer ii=0; ii<8; ii=ii+1)
|
for(Integer ii=0; ii<8; ii=ii+1)
|
work2Vector8Next[ii] = work2Vector8[ii+4];
|
work2Vector8Next[ii] = work2Vector8[ii+4];
|
for(Integer ii=0; ii<4; ii=ii+1)
|
for(Integer ii=0; ii<4; ii=ii+1)
|
begin
|
begin
|
Bit#(4) tempIndex = fromInteger(ii) + 8 - zeroExtend(offset);
|
Bit#(4) tempIndex = fromInteger(ii) + 8 - zeroExtend(offset);
|
Line 562... |
Line 562... |
Vector#(4,Bit#(15)) verResult15 = replicate(0);
|
Vector#(4,Bit#(15)) verResult15 = replicate(0);
|
if(xfracl == 1)
|
if(xfracl == 1)
|
verOffset = reqdata.offset;
|
verOffset = reqdata.offset;
|
else
|
else
|
verOffset = reqdata.offset+1;
|
verOffset = reqdata.offset+1;
|
readdata = workFile.sub({(1-workFileFlag),work2VerNum[2:0],(work2HorNum-2+(verOffset==0?0:1))});
|
readdata <- workFile.sub({(1-workFileFlag),work2VerNum[2:0],(work2HorNum-2+(verOffset==0?0:1))});
|
for(Integer ii=0; ii<4; ii=ii+1)
|
for(Integer ii=0; ii<4; ii=ii+1)
|
begin
|
begin
|
Bit#(2) offsetplusii = verOffset+fromInteger(ii);
|
Bit#(2) offsetplusii = verOffset+fromInteger(ii);
|
if(verOffset <= 3-fromInteger(ii) && verOffset!=0)
|
if(verOffset <= 3-fromInteger(ii) && verOffset!=0)
|
verResult15[ii] = work2Vector15[offsetplusii];
|
verResult15[ii] = work2Vector15[offsetplusii];
|
Line 745... |
Line 745... |
endrule
|
endrule
|
|
|
|
|
rule work2Chroma ( reqregWork2 matches tagged Valid .vdata &&& vdata matches tagged IPWChroma .reqdata &&& !work2Done &&& !work8x8Done );
|
rule work2Chroma ( reqregWork2 matches tagged Valid .vdata &&& vdata matches tagged IPWChroma .reqdata &&& !work2Done &&& !work8x8Done );
|
Vector#(16,Bit#(1)) resultReadyNext = resultReady;
|
Vector#(16,Bit#(1)) resultReadyNext = resultReady;
|
resultFile.upd({work2VerNum[1],work2HorNum,work2VerNum[0]},storeFile.sub({(1-workFileFlag),1'b0,work2VerNum[1],work2HorNum,work2VerNum[0]}));
|
Vector#(4,Bit#(8)) resultData <- storeFile.sub({(1-workFileFlag),1'b0,work2VerNum[1],work2HorNum,work2VerNum[0]});
|
|
resultFile.upd({work2VerNum[1],work2HorNum,work2VerNum[0]},resultData);
|
resultReadyNext[{work2VerNum[1],work2HorNum,work2VerNum[0]}] = 1;
|
resultReadyNext[{work2VerNum[1],work2HorNum,work2VerNum[0]}] = 1;
|
work2HorNum <= work2HorNum+1;
|
work2HorNum <= work2HorNum+1;
|
if(work2HorNum == 3)
|
if(work2HorNum == 3)
|
begin
|
begin
|
if(work2VerNum == 3)
|
if(work2VerNum == 3)
|
Line 765... |
Line 766... |
$display( "Trace interpolator: work2Chroma %h %h", work2HorNum, work2VerNum);
|
$display( "Trace interpolator: work2Chroma %h %h", work2HorNum, work2VerNum);
|
endrule
|
endrule
|
|
|
|
|
rule outputing( !outDone && resultReady[{outBlockNum[1],outPixelNum,outBlockNum[0]}]==1 );
|
rule outputing( !outDone && resultReady[{outBlockNum[1],outPixelNum,outBlockNum[0]}]==1 );
|
outfifo.enq(resultFile.sub({outBlockNum[1],outPixelNum,outBlockNum[0]}));
|
Vector#(4,Bit#(8)) outputData <- resultFile.sub({outBlockNum[1],outPixelNum,outBlockNum[0]});
|
|
outfifo.enq(outputData);
|
outPixelNum <= outPixelNum+1;
|
outPixelNum <= outPixelNum+1;
|
if(outPixelNum == 3)
|
if(outPixelNum == 3)
|
begin
|
begin
|
outBlockNum <= outBlockNum+1;
|
outBlockNum <= outBlockNum+1;
|
if(outBlockNum == 3)
|
if(outBlockNum == 3)
|