Error: A cast between fixpt and floating point type is not supported

1 次查看(过去 30 天)
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);
end
function 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
  4 个评论
Walter Roberson
Walter Roberson 2019-12-21
I have not used the Fixed Point toolbox, only read a little about it.
At the moment I am concerned that possibly dwt2() is not being transformed to fixed point.

请先登录,再进行评论。

采纳的回答

Kiran Kintali
Kiran Kintali 2019-12-23
编辑:Kiran Kintali 2019-12-23
Hi Sandip,
The issue here is not related to fixed-point conversion; HDL Coder currently does not support dwt2 function out of the box for HDL code generation.
You need to rewrite dwt2_hdl(pixel_in) function to accomplish the algorithm on hardware.
Thanks

更多回答(2 个)

Kiran Kintali
Kiran Kintali 2019-12-26
Hi Sandip,
Since dwt2 is not supported out of the box, please consider using core MATLAB to HDL features and implement dwt2_fpga.m using first principles. There is lot of material on the web related to this topic. https://tinyurl.com/s8flm5j
The previously mentioned links show you how to write good MATLAB suitable for HDL code generation.
Thanks

Sandip Paul
Sandip Paul 2019-12-23
编辑:Sandip Paul 2019-12-23
Hi Kiran, very much thank you for your suggestion. Is there any other way to make a HDL representation of dwt2 from matlab code?

类别

Help CenterFile Exchange 中查找有关 HDL Code Generation 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by