Exponential code in VHDL

Z

Zaid Al-Hilli

Guest
Hi all,

I am about implementing a VHDL code but I am facing problem, I have an
exponential operation and I want to run that code op an FPGA board!!

Generally speaking the assignment is: X = (1 / (1+ exp((y + 87.8) /
8.5)));

Would you please help me in that?

Many thanks in advance...

Zaid
 
On 7/27/2011 2:19 AM, Zaid Al-Hilli wrote:
Hi all,

I am about implementing a VHDL code but I am facing problem, I have an
exponential operation and I want to run that code op an FPGA board!!

Generally speaking the assignment is: X = (1 / (1+ exp((y + 87.8) /
8.5)));

Would you please help me in that?

Many thanks in advance...

Zaid
Yeah, bound the range of y sufficiently that you can implement the
entire thing in a RAM lookup table.

--
Rob Gaddi, Highland Technology
Email address is currently out of order
 
On 27 juil, 05:19, Zaid Al-Hilli <z.alhil...@gmail.com> wrote:
Hi all,

I am about implementing a VHDL code but I am facing problem, I have an
exponential operation and I want to run that code op an FPGA board!!

Generally speaking the assignment is:  X = (1 / (1+ exp((y + 87.8) /
8.5)));

Would you please help me in that?

Many thanks in advance...

Zaid
One simple way would be to use a look-up table implemented in a ROM.
With "y" being the address and X being the data read at "y" address.
This solution would work well if the range of "y" in bits is smaller
or equal to 16 bits. If "y" is 32-bit wide then I don't think a look-
up table implemented in a FPGA-Rom will work.
 
On Jul 27, 2:19 pm, Zaid Al-Hilli <z.alhil...@gmail.com> wrote:
Hi all,

I am about implementing a VHDL code but I am facing problem, I have an
exponential operation and I want to run that code op an FPGA board!!

Generally speaking the assignment is:  X = (1 / (1+ exp((y + 87.8) /
8.5)));

Would you please help me in that?

Many thanks in advance...

Zaid
Use Taylor series expansion for the calculation of this equation. Use
fixed point arithmetic.
 
On Jul 27, 7:23 pm, Benjamin Couillard <benjamin.couill...@gmail.com>
wrote:
On 27 juil, 05:19, Zaid Al-Hilli <z.alhil...@gmail.com> wrote:

Hi all,

I am about implementing a VHDL code but I am facing problem, I have an
exponential operation and I want to run that code op an FPGA board!!

Generally speaking the assignment is:  X = (1 / (1+ exp((y + 87.8) /
8.5)));

Would you please help me in that?

Many thanks in advance...

Zaid

One simple way would be to use a look-up table implemented in a ROM.
With "y" being the address and X being the data read at "y" address.
This solution would work well if the range of "y" in bits is smaller
or equal to 16 bits. If "y" is 32-bit wide then I don't think a look-
up table implemented in a FPGA-Rom will work.
Thanks a lot!
 
On Jul 27, 6:09 pm, Rob Gaddi <rga...@technologyhighland.com> wrote:
On 7/27/2011 2:19 AM, Zaid Al-Hilli wrote:

Hi all,

I am about implementing a VHDL code but I am facing problem, I have an
exponential operation and I want to run that code op an FPGA board!!

Generally speaking the assignment is:  X = (1 / (1+ exp((y + 87.8) /
8.5)));

Would you please help me in that?

Many thanks in advance...

Zaid

Yeah, bound the range of y sufficiently that you can implement the
entire thing in a RAM lookup table.

--
Rob Gaddi, Highland Technology
Email address is currently out of order
Thanks a lot!
 
Em quarta-feira, 27 de julho de 2011 06:19:26 UTC-3, Zaid Al-Hilli escreveu:
Hi all,

I am about implementing a VHDL code but I am facing problem, I have an
exponential operation and I want to run that code op an FPGA board!!

Generally speaking the assignment is: X = (1 / (1+ exp((y + 87.8) /
8.5)));

Would you please help me in that?

Many thanks in advance...

Zaid

Use Elliott function, also known as fast sigmoid function. It will solve your problem.
 
On Wednesday, October 7, 2015 at 4:44:34 PM UTC-4, mauro...@gmail.com wrote:
Em quarta-feira, 27 de julho de 2011 06:19:26 UTC-3, Zaid Al-Hilli escreveu:
Hi all,

I am about implementing a VHDL code but I am facing problem, I have an
exponential operation and I want to run that code op an FPGA board!!

Generally speaking the assignment is: X = (1 / (1+ exp((y + 87.8) /
8.5)));

Would you please help me in that?

Many thanks in advance...

Zaid

Use Elliott function, also known as fast sigmoid function. It will solve your problem.

Why do you want to bring an ancient thread up...
 

Welcome to EDABoard.com

Sponsor

Back
Top