problem of real type in synthesis,

S

senthil

Guest
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
 
senthil wrote:

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
 
yes, very true real is not synthesizable .
its not a problem, thats how vhdl is .
please check for synthesisable features of VHDL.

bhuvasen@hotmail.com (senthil) wrote in message news:<3045a319.0402032020.3546784c@posting.google.com>...
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
 
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.



senthil wrote:

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 ray@andraka.com
http://www.andraka.com

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

Welcome to EDABoard.com

Sponsor

Back
Top