I am trying to convert my matlab code to HDL verilog code by HDL Coder. Fixed-Point Conversion shows no Error,but at the time HDL code Generation it show error that
" ErrorA cast between fixpt and floating point type is not supported, at Function 'cameraman_dwt_code1_fixpt' (#1.874.875), line 21, column 12."
My Fixed-Point Arithmatic code is-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% Generated by MATLAB 9.2 and Fixed-Point Designer 5.4 %
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#codegen
function xavg12 = cameraman_dwt_code1_fixpt(xr1)fm = get_fimath();[fmo_1,fmo_2,fmo_3,fmo_4] = dwt2(xr1,'db3');xavg = fi(fmo_1, 0, 14, 5, fm);xhr = fi(fmo_2, 1, 14, 43, fm);xvr = fi(fmo_3, 1, 14, 43, fm);xdig = fi(fmo_4, 0, 14, 83, fm);x1=fi(xavg(1,1), 0, 14, 5, fm); %#This line creates error at xavg(1,1) section(above mentiond on error- line21,coloumn 12)
xavg12=fi(x1, 0, 14, 5, fm);endfunction fm = get_fimath() fm = fimath('RoundingMethod', 'Floor',... 'OverflowAction', 'Wrap',... 'ProductMode','FullPrecision',... 'MaxProductWordLength', 128,... 'SumMode','FullPrecision',... 'MaxSumWordLength', 128);end
####################### My function is->
function xavg12 = cameraman_dwt_code1(xr1)[xavg,xhr,xvr,xdig] = dwt2(xr1,'db3');x1=xavg(1,1);xavg12=x1;
####################### My TestBench code is->
x=158;xavg11=cameraman_dwt_code1(x);disp(xavg11);
############# It is actually for an Image processing code but I want to test it only for a single pixel value.
Overall code output is 1.2392 for pixel or input value 158 which is acurate but still I can not solved the Fixed-Point Arithmatic code.
Please Help me.Thank you
Best Answer