cancel
Showing results for
Show  only  | Search instead for
Did you mean:
Highlighted
Observer
1,231 Views
Registered: ‎08-02-2018

## DDS output format and interface

Hello,

I have to multiply a signal coming fro a DDS output with an other signal.

I see that the DDS output format is fix16_15 and the Complex Multiplier core input (channel B)  is fix16_0.

What fix16_15 and fix 16_0 mean ? Do I have to translate fix16_15 to fix16_0 to be compliant with the  Complex Multiplier input ?

Thank you.

1 Solution

Accepted Solutions
Highlighted
Scholar
1,165 Views
Registered: ‎06-21-2017

@cvasselin

You should avoid duplicate posts like the one in https://forums.xilinx.com/t5/Welcome-Join/DDS-output-format-and-Complex-multiplier/td-p/925064https://forums.xilinx.com/t5/Welcome-Join/DDS-output-format-and-Complex-multiplier/td-p/925064.  The question really belongs in the DSP forum, but you don't need to translate anything.  FIX16_0 means a sixteen bit signed signal with no fractional bits.  A full scale positive signal will be 0x7fff and in FIX16_0 format is one sign bit and 15 integer bits.  FIX16_15 is a signed 16 bit number with one sign bit and 15 fractional bits.  A full scale positive number is still 0x7fff.  0x7fff in one format means (2^15)-1, in the other format, it means 1-(1/(2^15)).  The hardware doesn't see the difference, it's all in how you interpret the number.  The DDS and multiplier will work just fine.  Run a simulation and try it.  I find that a simulation is a good idea just to be sure I know how the numbers scale and if I'm losing any dynamic range.

It's possible that I may have transposed the meanings of FIX16_0 and FIX16_15.  With most IP cores, it doesn't matter too much where you have the binary point.  The CORDIC seems to be an exception.

2 Replies
Highlighted
Scholar
1,166 Views
Registered: ‎06-21-2017

@cvasselin

You should avoid duplicate posts like the one in https://forums.xilinx.com/t5/Welcome-Join/DDS-output-format-and-Complex-multiplier/td-p/925064https://forums.xilinx.com/t5/Welcome-Join/DDS-output-format-and-Complex-multiplier/td-p/925064.  The question really belongs in the DSP forum, but you don't need to translate anything.  FIX16_0 means a sixteen bit signed signal with no fractional bits.  A full scale positive signal will be 0x7fff and in FIX16_0 format is one sign bit and 15 integer bits.  FIX16_15 is a signed 16 bit number with one sign bit and 15 fractional bits.  A full scale positive number is still 0x7fff.  0x7fff in one format means (2^15)-1, in the other format, it means 1-(1/(2^15)).  The hardware doesn't see the difference, it's all in how you interpret the number.  The DDS and multiplier will work just fine.  Run a simulation and try it.  I find that a simulation is a good idea just to be sure I know how the numbers scale and if I'm losing any dynamic range.

It's possible that I may have transposed the meanings of FIX16_0 and FIX16_15.  With most IP cores, it doesn't matter too much where you have the binary point.  The CORDIC seems to be an exception.

Highlighted
Observer
1,106 Views
Registered: ‎08-02-2018
Thank you very much