What is a correct function input type (HDL coder)
Show older comments
I want to design my own 2D convolution function to implement in FPGA. I couldn't give vector like a function input. I tried to use few way but I got errors.
I created the code
function [out] = my_conv2(target,kernel)
mult = target.*kernel;
summ = sum(sum(mult));
out = summ/9;
end
I want to use matrix 3x3, but I reshaped it to 1x9

But I got the errors.

I think I it's my mistake, because matlab offer me option with vector or matrix input

I can't believe that MATLAB not allow to use vector (or matrix) like a function input. Is it true?
Of course i can change my code. This way works, but it looks so silly... If I wanted conv 7x7 for example, I would use about 100 inputs...
function [out] = my_conv2(t1,t2,t3,t4,t5,t6,t7,t8,t9 ...
,k1,k2,k3,k4,k5,k6,k7,k8,k9)
mult1 = t1*k1
mult2 = t2*k2
mult3 = t3*k3
mult4 = t4*k4
mult5 = t5*k5
mult6 = t6*k6
mult7 = t7*k7
mult8 = t8*k8
mult9 = t9*k9
% etc
summ = mult1+mult2+mult3+mult4...
+mult5+mult6+mult7+mult8+mult9;
out = summ/9;
end
I know that "summ = mult1+mult2+mult3+mult4+mult5+mult6+mult7+mult8+mult9;" is really bad for real FPGA. I know about "persistent", I wrote such I because just want to try my concept.
I read some documents https://www.mathworks.com/help/fixedpoint/ug/propose-data-types-based-on-derived-ranges.html for example, but i can't belive... "input [7:0] IN [8:0];" is normal verilog code...
My main question: Can I use vector/matrix like a function input?
Answers (1)
shvlad
on 15 May 2019
0 votes
Categories
Find more on Code Generation in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!