语音信号adpcm编解码实现课程设计报告(编辑修改稿)内容摘要:
724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767]。 prevsample = 0。 previndex = 1。 Ns = length(adpcm_y)。 n = 1。 while (n = Ns) predsample = prevsample。 index = previndex。 step = StepSizeTable(index)。 code = adpcm_y(n)。 diffq = bitshift(step, 3)。 if (bitand(code, 4)) diffq = diffq + step。 end if (bitand(code, 2)) diffq = diffq + bitshift(step, 1)。 end if (bitand(code, 1)) diffq = diffq + bitshift(step, 2)。 end if (bitand(code, 8)) XIV predsample = predsample diffq。 else predsample = predsample + diffq。 end if (predsample 32767) predsample = 32767。 elseif (predsample 32768) predsample = 32768。 end index = index + IndexTable(code+1)。 if (index 1) index = 1。 end if (index 89) index = 89。 end prevsample = predsample。 previndex = index。 raw_y(n) = predsample / 32767。 n = n + 1。 end 附录 2 编码模块 module ADPCMEncoder(RST,EN,CLK,PCMIN,CODEOUT)。 input RST。 input EN。 input CLK。 input signed [15:0] PCMIN。 output[3:0] CODEOUT。 reg[3:0] CODEOUT。 reg tai。 reg sb。 reg signed[15:0] predsample,diff,prevsample。 XV reg[15:0] code。 reg signed[7:0] index。 reg start。 initial begin tai = 0。 prevsample = 0。 start = 0。 end always @(posedge CLK) begin if(EN == 0) begin start = 1。 end if(RST==0) begin tai = 0。 prevsample = 0。 index = 0。 end if(start==1) begin if(!tai) begin predsample = PCMIN。 diff=predsampleprevsample。 if (diff0) begin diff=diff。 sb=1。 end else sb=0。 if(diff=StepSizeTable(index)) begin diff = diff StepSizeTable(index)。 XVI code[2] = 1。 end else code[2] = 0。 diff = diff1。 if(diff=StepSizeTable(index)) begin diff = diff StepSizeTable(index)。 code[1] = 1。 end else code[1] = 0。 diff = diff1。 if(diff=StepSizeTable(index)) begin code[0] = 1。 end else code[0] = 0。 end else begin CODEOUT[0] = code[0]。 CODEOUT[1] = code[1]。 CODEOUT[2] = code[2]。 CODEOUT[3] = sb。 index =index + IndexTable(code)。 if (index0) index=0。 else if (index88) index=88。 prevsample=predsample。 start = 0。 end tai = ~tai。 end end function[7:0] IndexTable。 XVII input[2:0] index_a。 case(index_a) 339。 d00:IndexTable = 839。 hFF。 339。 d01:IndexTable = 839。 hFF。 339。 d02:IndexTable = 839。 hFF。 339。 d03:IndexTable = 839。 hFF。 339。 d04:IndexTable = 2。 339。 d05:IndexTable = 4。 339。 d06:IndexTable = 6。 339。 d07:IndexTable = 8。 default:IndexTable = 839。 hFF。 endcase Endfunction function[15:0] StepSizeTable。 input[7:0] Index。 case(Index) 839。 d00:StepSizeTable= 1639。 d7。 839。 d01:StepSizeTable= 1639。 d8。 839。 d02:StepSizeTable= 1639。 d9。 839。 d03:StepSizeTable= 1639。 d10。 839。 d04:StepSizeTable= 1639。 d11。 839。 d05:StepSizeTable= 1639。 d12。 839。 d06:StepSizeTable= 1639。 d13。 839。 d07:StepSizeTable= 1639。 d14。 839。 d08:StepSizeTable= 1639。 d16。 839。 d09:StepSizeTable= 1639。 d17。 839。 d10:StepSizeTable= 1639。 d19。 839。 d11:StepSizeTable= 1639。 d21。 839。 d12:StepSizeTable= 1639。 d23。 839。 d13:StepSizeTable= 1639。 d25。 839。 d14:StepSizeTable= 1639。 d28。 839。 d15:StepSizeTable= 1639。 d31。 839。 d16:StepSizeTable= 1639。 d34。 839。 d17:StepSizeTable= 1639。 d37。 839。 d18:StepSizeTable= 1639。 d41。 XVIII 839。 d19:StepSizeTable= 1639。 d45。 839。 d20:StepSizeTable= 1639。 d50。 839。 d21:StepSizeTable= 1639。 d55。 839。 d22:StepSizeTable= 1639。 d60。 839。 d23:StepSizeTable= 1639。 d66。 839。 d24:StepSizeTable= 1639。 d73。 839。 d25:StepSizeTable= 1639。 d80。 839。 d26:StepSizeTable= 1639。 d88。 839。 d27:StepSizeTable= 1639。 d97。 839。 d28:StepSizeTable= 1639。 d107。 839。 d29:StepSizeTable= 1639。 d118。 839。 d30:StepSizeTable= 1639。 d130。 839。 d31:StepSizeTable= 1639。 d143。 839。 d32:StepSizeTable= 1639。 d157。 839。 d33:StepSizeTable= 1639。 d173。 839。 d34:StepSizeTable= 1639。 d190。 839。 d35:StepSizeTable= 1639。 d209。 839。 d36:StepS。语音信号adpcm编解码实现课程设计报告(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。