📄 quant.v
字号:
def_q_mem_reg3 <= def_q_mem_reg2;
end
end
/*****************************************************************************/
/* Two 64x8 memories to store the user defined intra and non-intra Qmatrix
(q_value_new). A 68x12 memory is used to store the input dct values */
initial
begin
q_value_new_intra[0] <= 8'b0; q_value_new_intra[1] <= 8'b0;
q_value_new_intra[2] <= 8'b0; q_value_new_intra[3] <= 8'b0;
q_value_new_intra[4] <= 8'b0; q_value_new_intra[5] <= 8'b0;
q_value_new_intra[6] <= 8'b0; q_value_new_intra[7] <= 8'b0;
q_value_new_intra[8] <= 8'b0; q_value_new_intra[9] <= 8'b0;
q_value_new_intra[10] <= 8'b0; q_value_new_intra[11] <= 8'b0;
q_value_new_intra[12] <= 8'b0; q_value_new_intra[13] <= 8'b0;
q_value_new_intra[14] <= 8'b0; q_value_new_intra[15] <= 8'b0;
q_value_new_intra[16] <= 8'b0; q_value_new_intra[17] <= 8'b0;
q_value_new_intra[18] <= 8'b0; q_value_new_intra[19] <= 8'b0;
q_value_new_intra[20] <= 8'b0; q_value_new_intra[21] <= 8'b0;
q_value_new_intra[22] <= 8'b0; q_value_new_intra[23] <= 8'b0;
q_value_new_intra[24] <= 8'b0; q_value_new_intra[25] <= 8'b0;
q_value_new_intra[26] <= 8'b0; q_value_new_intra[27] <= 8'b0;
q_value_new_intra[28] <= 8'b0; q_value_new_intra[29] <= 8'b0;
q_value_new_intra[30] <= 8'b0; q_value_new_intra[31] <= 8'b0;
q_value_new_intra[32] <= 8'b0; q_value_new_intra[33] <= 8'b0;
q_value_new_intra[34] <= 8'b0; q_value_new_intra[35] <= 8'b0;
q_value_new_intra[36] <= 8'b0; q_value_new_intra[37] <= 8'b0;
q_value_new_intra[38] <= 8'b0; q_value_new_intra[39] <= 8'b0;
q_value_new_intra[40] <= 8'b0; q_value_new_intra[41] <= 8'b0;
q_value_new_intra[42] <= 8'b0; q_value_new_intra[43] <= 8'b0;
q_value_new_intra[44] <= 8'b0; q_value_new_intra[45] <= 8'b0;
q_value_new_intra[46] <= 8'b0; q_value_new_intra[47] <= 8'b0;
q_value_new_intra[48] <= 8'b0; q_value_new_intra[49] <= 8'b0;
q_value_new_intra[50] <= 8'b0; q_value_new_intra[51] <= 8'b0;
q_value_new_intra[52] <= 8'b0; q_value_new_intra[53] <= 8'b0;
q_value_new_intra[54] <= 8'b0; q_value_new_intra[55] <= 8'b0;
q_value_new_intra[56] <= 8'b0; q_value_new_intra[57] <= 8'b0;
q_value_new_intra[58] <= 8'b0; q_value_new_intra[59] <= 8'b0;
q_value_new_intra[60] <= 8'b0; q_value_new_intra[61] <= 8'b0;
q_value_new_intra[62] <= 8'b0; q_value_new_intra[63] <= 8'b0;
q_value_new_intra[64] <= 8'b0;
q_value_new_non_intra[0] <= 8'b0; q_value_new_non_intra[1] <= 8'b0;
q_value_new_non_intra[2] <= 8'b0; q_value_new_non_intra[3] <= 8'b0;
q_value_new_non_intra[4] <= 8'b0; q_value_new_non_intra[5] <= 8'b0;
q_value_new_non_intra[6] <= 8'b0; q_value_new_non_intra[7] <= 8'b0;
q_value_new_non_intra[8] <= 8'b0; q_value_new_non_intra[9] <= 8'b0;
q_value_new_non_intra[10] <= 8'b0; q_value_new_non_intra[11] <= 8'b0;
q_value_new_non_intra[12] <= 8'b0; q_value_new_non_intra[13] <= 8'b0;
q_value_new_non_intra[14] <= 8'b0; q_value_new_non_intra[15] <= 8'b0;
q_value_new_non_intra[16] <= 8'b0; q_value_new_non_intra[17] <= 8'b0;
q_value_new_non_intra[18] <= 8'b0; q_value_new_non_intra[19] <= 8'b0;
q_value_new_non_intra[20] <= 8'b0; q_value_new_non_intra[21] <= 8'b0;
q_value_new_non_intra[22] <= 8'b0; q_value_new_non_intra[23] <= 8'b0;
q_value_new_non_intra[24] <= 8'b0; q_value_new_non_intra[25] <= 8'b0;
q_value_new_non_intra[26] <= 8'b0; q_value_new_non_intra[27] <= 8'b0;
q_value_new_non_intra[28] <= 8'b0; q_value_new_non_intra[29] <= 8'b0;
q_value_new_non_intra[30] <= 8'b0; q_value_new_non_intra[31] <= 8'b0;
q_value_new_non_intra[32] <= 8'b0; q_value_new_non_intra[33] <= 8'b0;
q_value_new_non_intra[34] <= 8'b0; q_value_new_non_intra[35] <= 8'b0;
q_value_new_non_intra[36] <= 8'b0; q_value_new_non_intra[37] <= 8'b0;
q_value_new_non_intra[38] <= 8'b0; q_value_new_non_intra[39] <= 8'b0;
q_value_new_non_intra[40] <= 8'b0; q_value_new_non_intra[41] <= 8'b0;
q_value_new_non_intra[42] <= 8'b0; q_value_new_non_intra[43] <= 8'b0;
q_value_new_non_intra[44] <= 8'b0; q_value_new_non_intra[45] <= 8'b0;
q_value_new_non_intra[46] <= 8'b0; q_value_new_non_intra[47] <= 8'b0;
q_value_new_non_intra[48] <= 8'b0; q_value_new_non_intra[49] <= 8'b0;
q_value_new_non_intra[50] <= 8'b0; q_value_new_non_intra[51] <= 8'b0;
q_value_new_non_intra[52] <= 8'b0; q_value_new_non_intra[53] <= 8'b0;
q_value_new_non_intra[54] <= 8'b0; q_value_new_non_intra[55] <= 8'b0;
q_value_new_non_intra[56] <= 8'b0; q_value_new_non_intra[57] <= 8'b0;
q_value_new_non_intra[58] <= 8'b0; q_value_new_non_intra[59] <= 8'b0;
q_value_new_non_intra[60] <= 8'b0; q_value_new_non_intra[61] <= 8'b0;
q_value_new_non_intra[62] <= 8'b0; q_value_new_non_intra[63] <= 8'b0;
q_value_new_non_intra[64] <= 8'b0;
end
/* read in new intra Q value: pipe2 */
always @ (posedge CLK)
begin
if (rdy_in == 1'b1 && load_intra_qmatrix == 1'b1)
q_value_new_intra[cnt64[6:0]] <= q_value;
end
/* read in new non intra Q values:pipe2 */
always @ (posedge CLK)
if (rdy_in == 1'b1 && load_non_intra_qmatrix == 1'b1)
q_value_new_non_intra[cnt64[6:0]] <= q_value;
/* user defined Q values are read out :pipe3*/
always @ (posedge CLK)
begin
if (rdy_in == 1'b1 && macroblock_type_reg1 == 1'b0)
q_value_new_out <= q_value_new_intra[cnt64c[6:0]];
else if (rdy_in == 1'b1 && macroblock_type_reg1 == 1'b1)
q_value_new_out <= q_value_new_non_intra[cnt64c[6:0]];
else q_value_new_out <= 8'b0;
end
always @ (posedge CLK or posedge RST)
begin
if (RST)
begin
q_value_new_out_reg1 <= 8'b0;
end
else
begin
q_value_new_out_reg1 <= q_value_new_out;
end
end
/* END MEMORY SECTION */
/*****************************************************************************/
/* q_value_new_out has 3 pipe stages. def_q_mem and q_value_new_out has 2 pipe
stages each*/
always @ (posedge CLK or posedge RST)
begin
if (RST)
begin
q_value_select <= 9'b0;
end
else
begin
q_value_select <= (load_intra_qmatrix_reg2 == 1'b0 && load_non_intra_qmatrix_reg2 == 1'b0)
? def_q_mem : q_value_new_out;
end
end
/*****************************************************************************/
/* store 1/Qmatrix coefficient values . All the possible 256 values are inverted
and stored in q_value_mem. Q_value_select is the output of the mux that chooses
between default matrix and user defined matrix.
q value select has 3 pipe stages. So memoryQ has 4 pipe stages. */
always @ (posedge CLK or posedge RST)
begin
if (RST)
begin
memoryQ <= 11'b0;
end
else
begin
case (q_value_select)
9'd1 : begin memoryQ <= 11'b10000000000; end
9'd2 : begin memoryQ <= 11'b01000000000; end
9'd3 : begin memoryQ <= 11'b00101010101; end
9'd4 : begin memoryQ <= 11'b00100000000; end
9'd5 : begin memoryQ <= 11'b00011001100; end
9'd6 : begin memoryQ <= 11'b00010101010; end
9'd7 : begin memoryQ <= 11'b00010010010; end
9'd8 : begin memoryQ <= 11'b00010000000; end
9'd9 : begin memoryQ <= 11'b00001110001; end
9'd10: begin memoryQ <= 11'b00001100110; end
9'd11: begin memoryQ <= 11'b00001011101; end
9'd12: begin memoryQ <= 11'b00001010101; end
9'd13: begin memoryQ <= 11'b00001001110; end
9'd14: begin memoryQ <= 11'b00001001001; end
9'd15: begin memoryQ <= 11'b00001000100; end
9'd16: begin memoryQ <= 11'b00001000000; end
9'd17: begin memoryQ <= 11'b00000111100; end
9'd18: begin memoryQ <= 11'b00000111000; end
9'd19: begin memoryQ <= 11'b00000110101; end
9'd20: begin memoryQ <= 11'b00000110011; end
9'd21: begin memoryQ <= 11'b00000110000; end
9'd22: begin memoryQ <= 11'b00000101110; end
9'd23: begin memoryQ <= 11'b00000101100; end
9'd24: begin memoryQ <= 11'b00000101010; end
9'd25: begin memoryQ <= 11'b00000101000; end
9'd26: begin memoryQ <= 11'b00000100111; end
9'd27: begin memoryQ <= 11'b00000100101; end
9'd28: begin memoryQ <= 11'b00000100100; end
9'd29: begin memoryQ <= 11'b00000100011; end
9'd30: begin memoryQ <= 11'b00000100010; end
9'd31: begin memoryQ <= 11'b00000100001; end
9'd32: begin memoryQ <= 11'b00000100000; end
/*----------------------------------------------------------------------------*/
9'd33: begin memoryQ <= 11'b00000011111; end
9'd34: begin memoryQ <= 11'b00000011110; end
9'd35: begin memoryQ <= 11'b00000011101; end
9'd36: begin memoryQ <= 11'b00000011100; end
9'd37: begin memoryQ <= 11'b00000011011; end
9'd38: begin memoryQ <= 11'b00000011010; end
9'd39: begin memoryQ <= 11'b00000011010; end
9'd40: begin memoryQ <= 11'b00000011001; end
9'd41: begin memoryQ <= 11'b00000011001; end
9'd42: begin memoryQ <= 11'b00000011000; end
9'd43: begin memoryQ <= 11'b00000010111; end
9'd44: begin memoryQ <= 11'b00000010111; end
9'd45: begin memoryQ <= 11'b00000010110; end
9'd46: begin memoryQ <= 11'b00000010110; end
9'd47: begin memoryQ <= 11'b00000010101; end
9'd48: begin memoryQ <= 11'b00000010101; end
9'd49: begin memoryQ <= 11'b00000010100; end
9'd50: begin memoryQ <= 11'b00000010100; end
9'd51: begin memoryQ <= 11'b00000010100; end
9'd52: begin memoryQ <= 11'b00000010011; end
9'd53: begin memoryQ <= 11'b00000010011; end
9'd54: begin memoryQ <= 11'b00000010010; end
9'd55: begin memoryQ <= 11'b00000010010; end
9'd56: begin memoryQ <= 11'b00000010010; end
9'd57: begin memoryQ <= 11'b00000010001; end
9'd58: begin memoryQ <= 11'b00000010001; end
9'd59: begin memoryQ <= 11'b00000010001; end
9'd60: begin memoryQ <= 11'b00000010001; end
9'd61: begin memoryQ <= 11'b00000010000; end
9'd62: begin memoryQ <= 11'b00000010000; end
9'd63: begin memoryQ <= 11'b00000010000; end
9'd64: begin memoryQ <= 11'b00000010000; end
/*----------------------------------------------------------------------------*/
9'd65: begin memoryQ <= 11'b00000001111; end
9'd66: begin memoryQ <= 11'b00000001111; end
9'd67: begin memoryQ <= 11'b00000001111; end
9'd68: begin memoryQ <= 11'b00000001111; end
9'd69: begin memoryQ <= 11'b00000001110; end
9'd70: begin memoryQ <= 11'b00000001110; end
9'd71: begin memoryQ <= 11'b00000001110; end
9'd72: begin memoryQ <= 11'b00000001110; end
9'd73: begin memoryQ <= 11'b00000001110; end
9'd74: begin memoryQ <= 11'b00000001101; end
9'd75: begin memoryQ <= 11'b00000001101; end
9'd76: begin memoryQ <= 11'b00000001101; end
9'd77: begin memoryQ <= 11'b00000001101; end
9'd78: begin memoryQ <= 11'b00000001101; end
9'd79: begin memoryQ <= 11'b00000001100; end
9'd80: begin memoryQ <= 11'b00000001100; end
9'd81: begin memoryQ <= 11'b00000001100; end
9'd82: begin memoryQ <= 11'b00000001100; end
9'd83: begin memoryQ <= 11'b00000001100; end
9'd84: begin memoryQ <= 11'b00000001100; end
9'd85: begin memoryQ <= 11'b00000001100; end
9'd86: begin memoryQ <= 11'b00000001011; end
/*----------------------------------------------------------------------------*/
9'd87: begin memoryQ <= 11'b00000001011; end
9'd88: begin memoryQ <= 11'b00000001011; end
9'd89: begin memoryQ <= 11'b00000001011; end
9'd90: begin memoryQ <= 11'b00000001011; end
9'd91: begin memoryQ <= 11'b00000001011; end
9'd92: begin memoryQ <= 11'b00000001011; end
9'd93: begin memoryQ <= 11'b00000001011; end
9'd94: begin memoryQ <= 11'b00000001010; end
9'd95: begin memoryQ <= 11'b00000001010; end
9'd96: begin memoryQ <= 11'b00000001010; end
9'd97: begin memoryQ <= 11'b00000001010; end
9'd98: begin memoryQ <= 11'b00000001010; end
9'd99: begin memoryQ <= 11'b00000001010; end
9'd100: begin memoryQ <= 11'b00000001010; end
9'd101: begin memoryQ <= 11'b00000001010;end
9'd102: begin memoryQ <= 11'b00000001010; end
/*----------------------------------------------------------------------------*/
9'd103: begin memoryQ <= 11'b00000001001;end
9'd104: begin memoryQ <= 11'b00000001001; end
9'd105: begin memoryQ <= 11'b00000001001;end
9'd106: begin memoryQ <= 11'b00000001001; end
9'd107: begin memoryQ <= 11'b00000001001;end
9'd108: begin memoryQ <= 11'b00000001001; end
9'd109: begin memoryQ <= 11'b00000001001;end
9'd110: begin memoryQ <= 11'b00000001001; end
9'd111: begin memoryQ <= 11'b00000001001;end
9'd112: begin memoryQ <= 11'b00000001001; end
9'd113: begin memoryQ <= 11'b00000001001;end
9'd114: begin memoryQ <= 11'b00000001001; end
9'd115: begin memoryQ <= 11'b00000001000;end
9'd116: begin memoryQ <= 11'b00000001000; end
9'd117: begin memoryQ <= 11'b00000001000;end
9'd118: begin memoryQ <= 11'b00000001000; end
9'd119: begin memoryQ <= 11'b00000001000;end
9'd120: begin memoryQ <= 11'b00000001000; end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -