📄 iqit.v
字号:
.D3(butterfly_D3), .F0(butterfly_F0), .F1(butterfly_F1), .F2(butterfly_F2), .F3(butterfly_F3), .IsHadamard(IsHadamard) ); always @ (i4x4_CbCr or OneD_counter or TwoD_counter or blk4x4_rec_counter[3:0] or residual_state or res_AC or res_LumaDCBlk_IsZero or res_ChromaDCBlk_Cb_IsZero or res_ChromaDCBlk_Cr_IsZero or DC_output[0] or DC_output[1] or DC_output[2] or DC_output[3] or DC_output[4] or DC_output[5] or DC_output[6] or DC_output[7] or DC_output[8] or DC_output[9] or DC_output[10] or DC_output[11] or DC_output[12] or DC_output[13] or DC_output[14] or DC_output[15] or coeffLevel_ext_0 or coeffLevel_ext_1 or coeffLevel_ext_2 or coeffLevel_ext_3 or coeffLevel_ext_4 or coeffLevel_ext_5 or coeffLevel_ext_6 or coeffLevel_ext_7 or coeffLevel_ext_8 or coeffLevel_ext_9 or coeffLevel_ext_10 or coeffLevel_ext_11 or coeffLevel_ext_12 or coeffLevel_ext_13 or coeffLevel_ext_14 or coeffLevel_ext_15 or OneD_output[0] or OneD_output[1] or OneD_output[2] or OneD_output[3] or OneD_output[4] or OneD_output[5] or OneD_output[6] or OneD_output[7] or OneD_output[8] or OneD_output[9] or OneD_output[10] or OneD_output[11] or OneD_output[12] or OneD_output[13] or OneD_output[14] or OneD_output[15] or rescale_output[0] or rescale_output[1] or rescale_output[2] or rescale_output[3]) if (OneD_counter != 0) case (OneD_counter) 3'b100: begin case (residual_state) `Intra16x16ACLevel_s: if (res_LumaDCBlk_IsZero == 1'b1) butterfly_D0 <= 0; else case (blk4x4_rec_counter[3:0]) 4'b0000: butterfly_D0 <= DC_output[0]; 4'b0001: butterfly_D0 <= DC_output[1]; 4'b0010: butterfly_D0 <= DC_output[2]; 4'b0011: butterfly_D0 <= DC_output[3]; 4'b0100: butterfly_D0 <= DC_output[4]; 4'b0101: butterfly_D0 <= DC_output[5]; 4'b0110: butterfly_D0 <= DC_output[6]; 4'b0111: butterfly_D0 <= DC_output[7]; 4'b1000: butterfly_D0 <= DC_output[8]; 4'b1001: butterfly_D0 <= DC_output[9]; 4'b1010: butterfly_D0 <= DC_output[10]; 4'b1011: butterfly_D0 <= DC_output[11]; 4'b1100: butterfly_D0 <= DC_output[12]; 4'b1101: butterfly_D0 <= DC_output[13]; 4'b1110: butterfly_D0 <= DC_output[14]; 4'b1111: butterfly_D0 <= DC_output[15]; endcase `ChromaACLevel_Cb_s: if(res_ChromaDCBlk_Cb_IsZero) butterfly_D0 <= 0; else case (i4x4_CbCr) 2'b00:butterfly_D0 <= DC_output[0]; 2'b01:butterfly_D0 <= DC_output[1]; 2'b10:butterfly_D0 <= DC_output[2]; 2'b11:butterfly_D0 <= DC_output[3]; endcase `ChromaACLevel_Cr_s: if(res_ChromaDCBlk_Cr_IsZero) butterfly_D0 <= 0; else case (i4x4_CbCr) 2'b00:butterfly_D0 <= DC_output[4]; 2'b01:butterfly_D0 <= DC_output[5]; 2'b10:butterfly_D0 <= DC_output[6]; 2'b11:butterfly_D0 <= DC_output[7]; endcase default: //luma DC,chroma DC,luma4x4 AC butterfly_D0 <= (res_AC == 1'b1)? rescale_output[0]:coeffLevel_ext_0; endcase butterfly_D1 <= (res_AC == 1'b1)? rescale_output[1]:coeffLevel_ext_1; butterfly_D2 <= (res_AC == 1'b1)? rescale_output[2]:coeffLevel_ext_5; butterfly_D3 <= (res_AC == 1'b1)? rescale_output[3]:coeffLevel_ext_6; end 3'b011: begin butterfly_D0 <= (res_AC == 1'b1)? rescale_output[0]:coeffLevel_ext_2; butterfly_D1 <= (res_AC == 1'b1)? rescale_output[1]:coeffLevel_ext_4; butterfly_D2 <= (res_AC == 1'b1)? rescale_output[2]:coeffLevel_ext_7; butterfly_D3 <= (res_AC == 1'b1)? rescale_output[3]:coeffLevel_ext_12; end 3'b010: begin butterfly_D0 <= (res_AC == 1'b1)? rescale_output[0]:coeffLevel_ext_3; butterfly_D1 <= (res_AC == 1'b1)? rescale_output[1]:coeffLevel_ext_8; butterfly_D2 <= (res_AC == 1'b1)? rescale_output[2]:coeffLevel_ext_11; butterfly_D3 <= (res_AC == 1'b1)? rescale_output[3]:coeffLevel_ext_13; end 3'b001: begin //luma DC if (residual_state == `Intra16x16DCLevel_s) begin butterfly_D0 <= coeffLevel_ext_9; butterfly_D1 <= coeffLevel_ext_10; butterfly_D2 <= coeffLevel_ext_14; butterfly_D3 <= coeffLevel_ext_15; end //chroma DC else if (residual_state == `ChromaDCLevel_Cb_s || residual_state == `ChromaDCLevel_Cr_s) begin butterfly_D0 <= coeffLevel_ext_0; butterfly_D1 <= coeffLevel_ext_1; butterfly_D2 <= coeffLevel_ext_2; butterfly_D3 <= coeffLevel_ext_3; end //AC else begin butterfly_D0 <= rescale_output[0]; butterfly_D1 <= rescale_output[1]; butterfly_D2 <= rescale_output[2]; butterfly_D3 <= rescale_output[3]; end end default: begin butterfly_D0 <= 0; butterfly_D1 <= 0; butterfly_D2 <= 0; butterfly_D3 <= 0; end endcase else if (TwoD_counter != 0) case (TwoD_counter) 3'b100: begin butterfly_D0 <= OneD_output[0];butterfly_D1 <= OneD_output[4]; butterfly_D2 <= OneD_output[8];butterfly_D3 <= OneD_output[12]; end 3'b011: begin butterfly_D0 <= OneD_output[1];butterfly_D1 <= OneD_output[5]; butterfly_D2 <= OneD_output[9];butterfly_D3 <= OneD_output[13]; end 3'b010: begin butterfly_D0 <= OneD_output[2]; butterfly_D1 <= OneD_output[6]; butterfly_D2 <= OneD_output[10];butterfly_D3 <= OneD_output[14]; end 3'b001: begin butterfly_D0 <= OneD_output[3]; butterfly_D1 <= OneD_output[7]; butterfly_D2 <= OneD_output[11];butterfly_D3 <= OneD_output[15]; end default: begin butterfly_D0 <= 0; butterfly_D1 <= 0; butterfly_D2 <= 0; butterfly_D3 <= 0; end endcase else begin butterfly_D0 <= 0; butterfly_D1 <= 0; butterfly_D2 <= 0; butterfly_D3 <= 0; end assign QP = (res_luma == 1'b1)? QPy:QPc; mod6 mod6 ( .qp(QP), .mod(QPmod6) ); // Specify LevelScale parameter: LevelScale_DC & LevelScale_AC always @ (rescale_counter or res_DC or QPmod6) if (rescale_counter != 0 && res_DC == 1'b1) case (QPmod6) 0:LevelScale_DC <= 10; 1:LevelScale_DC <= 11; 2:LevelScale_DC <= 13; 3:LevelScale_DC <= 14; 4:LevelScale_DC <= 16; 5:LevelScale_DC <= 18; default:LevelScale_DC <= 0; endcase else LevelScale_DC <= 0; always @ (rescale_counter or res_AC or QPmod6) if (rescale_counter != 0 && res_AC == 1'b1) case (rescale_counter) 3'b100,3'b010: //1 & 3 row case (QPmod6) 3'b000:begin LevelScale_AC[0] <= 10; LevelScale_AC[1] <= 13; LevelScale_AC[2] <= 10; LevelScale_AC[3] <= 13; end 3'b001:begin LevelScale_AC[0] <= 11; LevelScale_AC[1] <= 14; LevelScale_AC[2] <= 11; LevelScale_AC[3] <= 14; end 3'b010:begin LevelScale_AC[0] <= 13; LevelScale_AC[1] <= 16; LevelScale_AC[2] <= 13; LevelScale_AC[3] <= 16; end 3'b011:begin LevelScale_AC[0] <= 14; LevelScale_AC[1] <= 18; LevelScale_AC[2] <= 14; LevelScale_AC[3] <= 18; end 3'b100:begin LevelScale_AC[0] <= 16; LevelScale_AC[1] <= 20; LevelScale_AC[2] <= 16; LevelScale_AC[3] <= 20; end 3'b101:begin LevelScale_AC[0] <= 18; LevelScale_AC[1] <= 23; LevelScale_AC[2] <= 18; LevelScale_AC[3] <= 23; end default:begin LevelScale_AC[0] <= 0; LevelScale_AC[1] <= 0; LevelScale_AC[2] <= 0; LevelScale_AC[3] <= 0; end endcase 3'b011,3'b001: //2 & 4 row case (QPmod6) 3'b000:begin LevelScale_AC[0] <= 13; LevelScale_AC[1] <= 16; LevelScale_AC[2] <= 13; LevelScale_AC[3] <= 16; end 3'b001:begin LevelScale_AC[0] <= 14; LevelScale_AC[1] <= 18; LevelScale_AC[2] <= 14; LevelScale_AC[3] <= 18; end 3'b010:begin LevelScale_AC[0] <= 16; LevelScale_AC[1] <= 20; LevelScale_AC[2] <= 16; LevelScale_AC[3] <= 20; end 3'b011:begin LevelScale_AC[0] <= 18; LevelScale_AC[1] <= 23; LevelScale_AC[2] <= 18; LevelScale_AC[3] <= 23; end 3'b100:begin LevelScale_AC[0] <= 20; LevelScale_AC[1] <= 25; LevelScale_AC[2] <= 20; LevelScale_AC[3] <= 25; end 3'b101:begin LevelScale_AC[0] <= 23; LevelScale_AC[1] <= 29; LevelScale_AC[2] <= 23; LevelScale_AC[3] <= 29; end default:begin LevelScale_AC[0] <= 0; LevelScale_AC[1] <= 0; LevelScale_AC[2] <= 0; LevelScale_AC[3] <= 0; end endcase default:begin LevelScale_AC[0] <= 0; LevelScale_AC[1] <= 0; LevelScale_AC[2] <= 0; LevelScale_AC[3] <= 0; end endcase else begin LevelScale_AC[0] <= 0; LevelScale_AC[1] <= 0; LevelScale_AC[2] <= 0; LevelScale_AC[3] <= 0; end assign LevelScale[0] = (rescale_counter == 0)? 0:((res_AC == 1)? LevelScale_AC[0]:LevelScale_DC); assign LevelScale[1] = (rescale_counter == 0)? 0:((res_AC == 1)? LevelScale_AC[1]:LevelScale_DC); assign LevelScale[2] = (rescale_counter == 0)? 0:((res_AC == 1)? LevelScale_AC[2]:LevelScale_DC); assign LevelScale[3] = (rescale_counter == 0)? 0:((res_AC == 1)? LevelScale_AC[3]:LevelScale_DC); // Specify rescale multiplier input always @ (residual_state or res_DC or rescale_counter or OneD_output[0] or OneD_output[1] or OneD_output[2] or OneD_output[3] or OneD_output[4] or OneD_output[5] or OneD_output[6] or OneD_output[7] or OneD_output[8] or OneD_output[9] or OneD_output[10] or OneD_output[11] or OneD_output[12] or OneD_output[13] or OneD_output[14] or OneD_output[15] or TwoD_output[0] or TwoD_output[1] or TwoD_output[2] or TwoD_output[3] or coeffLevel_ext_0 or coeffLevel_ext_1 or coeffLevel_ext_2 or coeffLevel_ext_3 or coeffLevel_ext_4 or coeffLevel_ext_5 or coeffLevel_ext_6 or coeffLevel_ext_7 or coeffLevel_ext_8 or coeffLevel_ext_9 or coeffLevel_ext_10 or coeffLevel_ext_11 or coeffLevel_ext_12 or coeffLevel_ext_13 or coeffLevel_ext_14 or coeffLevel_ext_15) if (residual_state == `Intra16x16DCLevel_s && rescale_counter != 0) //Intra16x16DC begin mult0_a <= TwoD_output[0]; mult1_a <= TwoD_output[1]; mult2_a <= TwoD_output[2]; mult3_a <= TwoD_output[3]; end else if (res_DC == 1'b1 && rescale_counter != 0) //ChromaDC begin mult0_a <= OneD_output[12]; mult1_a <= OneD_output[15]; mult2_a <= OneD_output[13]; mult3_a <= OneD_output[14]; end else if (rescale_counter != 0) //AC case (rescale_counter) 3'b100: begin mult0_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_0:0; mult1_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_1:coeffLevel_ext_0; mult2_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_5:coeffLevel_ext_4; mult3_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_6:coeffLevel_ext_5; end 3'b011: begin mult0_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_2:coeffLevel_ext_1; mult1_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_4:coeffLevel_ext_3; mult2_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_7:coeffLevel_ext_6; mult3_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_12:coeffLevel_ext_11; end 3'b010: begin mult0_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_3:coeffLevel_ext_2; mult1_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_8:coeffLevel_ext_7; mult2_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_11:coeffLevel_ext_10; mult3_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_13:coeffLevel_ext_12; end 3'b001: begin mult0_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_9:coeffLevel_ext_8; mult1_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_10:coeffLevel_ext_9; mult2_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_14:coeffLevel_ext_13; mult3_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_15:coeffLevel_ext_14; end default: begin mult0_a <= 0; mult1_a <= 0; mult2_a <= 0; mult3_a <= 0; end endcase else begin mult0_a <= 0; mult1_a <= 0; mult2_a <= 0; mult3_a <= 0; end //rescale multiplier assign product0 = (rescale_counter == 0)? 0:mult0_a * {1'b0,LevelScale[0]}; assign product1 = (rescale_counter == 0)? 0:mult1_a * {1'b0,LevelScale[1]}; assign product2 = (rescale_counter == 0)? 0:mult2_a * {1'b0,LevelScale[2]}; assign product3 = (rescale_counter == 0)? 0:mult3_a * {1'b0,LevelScale[3]}; always @ (res_AC or res_luma or QPy or QPc) if (res_AC == 1'b1) IsLeftShift <= 1'b1; else if (res_luma == 1'b1) IsLeftShift <= (QPy < 12)? 1'b0:1'b1; else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -