problem of real type in synthesis,

S

senthil

hello friends,

for the direct implementation of the dft, i need the real variable
intends multiply with that of real converted integer values. upto
simulation level i didn't found no prblem. but at synthesis level, the
real types are not synthesisable. the error will occur ..

simulation -modelsim S.E 5.5
synthesis - leonardo spectrum level3

coding.

wn <= 0.982;
if mapp = '1' and en < 64 then
int := real(en);
Wk := int*Wn;
for ke in 0 to 63 loop
ke1 := real(ke);
upd := ke1*Wk;
c := cosine(upd);
s1 := sine(upd);
vifftre(en) := vifftre(en) + re(ke)*c - im(ke)*s1;
vifftim(en) := vifftim(en) + re(ke)*s1 + im(ke)*c;
end loop;
ifftre(en) <= (vifftre(en))/npt;
ifftim(en) <= (vifftim(en))/npt;
en <= en + 1;
end if
 
V

Vladislav Vasilenko

senthil said:
hello friends,

for the direct implementation of the dft, i need the real variable
intends multiply with that of real converted integer values. upto
simulation level i didn't found no prblem. but at synthesis level, the
real types are not synthesisable. the error will occur ..

At present, real data is not synthesable yet.
They have to be exchanged to integers with range or bit vectors.
Also the algorithm needs the proper scale factors.

But this is not problem. The problem consists
in huge hardware which is
inferred by the loop operator.

A.Ser
 
S

Sajan

yes, very true real is not synthesizable .
its not a problem, thats how vhdl is .
please check for synthesisable features of VHDL.
 
R

Ray Andraka

Surely you don't expect double precision floating point in your hardware?
If reals were synthesizable, that's probably what would be needed to
satisfy the real type. Rather than converting your inputs to reals,
convert the weights to fixed point values with however much precision you
deem necessary to meet your accuracy requirements. I suspect the trouble
you are having is thinking that you cannot represent fractions in fixed
point. You can of course: You basically just have an implied weight
associated with the data word that says where the radix point lies (no one
says the radix point has to be to the immediate right of the LSB). For
example,
0011 could represent 3, 1.5, 0.75, or any other value of the form 3*(2^a)
where a is an integer.


hello friends,

for the direct implementation of the dft, i need the real variable
intends multiply with that of real converted integer values. upto
simulation level i didn't found no prblem. but at synthesis level, the
real types are not synthesisable. the error will occur ..

simulation -modelsim S.E 5.5
synthesis - leonardo spectrum level3

coding.

wn <= 0.982;
if mapp = '1' and en < 64 then
int := real(en);
Wk := int*Wn;
for ke in 0 to 63 loop
ke1 := real(ke);
upd := ke1*Wk;
c := cosine(upd);
s1 := sine(upd);
vifftre(en) := vifftre(en) + re(ke)*c - im(ke)*s1;
vifftim(en) := vifftim(en) + re(ke)*s1 + im(ke)*c;
end loop;
ifftre(en) <= (vifftre(en))/npt;
ifftim(en) <= (vifftim(en))/npt;
en <= en + 1;
end if

--
--Ray Andraka, P.E.
President, the Andraka Consulting Group, Inc.
401/884-7930 Fax 401/884-7950
email (e-mail address removed)
http://www.andraka.com

"They that give up essential liberty to obtain a little
temporary safety deserve neither liberty nor safety."
-Benjamin Franklin, 1759
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top