FPGA Intellectual Property
PCI Express*, Networking and Connectivity, Memory Interfaces, DSP IP, and Video IP

Tone Generation

Altera_Forum
Honored Contributor II
1,849 Views

Hi I am facing problem regarding Generation of tones (like Busy, Beap, Dial tone), if any help regarding this.

0 Kudos
11 Replies
Altera_Forum
Honored Contributor II
920 Views

Are you using a custom board or an evaluation board? What is the hardware architecture that you are using?

0 Kudos
Altera_Forum
Honored Contributor II
920 Views

you mean dtmf generator, here is one paper from free scale

(Virus scan in progress ...)
0 Kudos
Altera_Forum
Honored Contributor II
920 Views

Hi thanks for replay, I am using Altera Cyclone-II device(EP2C8T144C8)

0 Kudos
Altera_Forum
Honored Contributor II
920 Views

currently we are I am using Altera Cyclone-II device(EP2C8T144C8), but in future I have to fit this logic in Altera CPLD Device

0 Kudos
Altera_Forum
Honored Contributor II
920 Views

OK I was also asking you which kind of digital-to-analogue converter you are using for the tone generation.

0 Kudos
Altera_Forum
Honored Contributor II
920 Views

I am using 14-bit DAc (AD9736)

0 Kudos
Altera_Forum
Honored Contributor II
920 Views

A simple way could be to use an altsyncram block and use it in ROM mode. Then you have to initialize it with a mif file that contains the samples of a sinuosid period. You can vary the frequency of the output tone by changing the frequency of the clock which sequentially allows the read from the ROM. Also you can work by changing the address increment to modulate the output frequency. 

If you want to use the DAC full resolution you can use 14-bit wide words in your altsyncram block. 

 

Cheers 

OD
0 Kudos
Altera_Forum
Honored Contributor II
920 Views

Hi OrchestraDirector 

 

Certainly an Orchestra Director is the best guy to synthesize all sorts of tones. 

You are right, and the second method of using one clock is more practical. You can then generate frequencies with fine steps at any rate below .5Fclk using a modulo adder to address the LUT.Normally designers use a wide adder but then use few of its MSBs as LUT address. See AnalogDevices tutorial(DDS) 

 

Kaz
0 Kudos
Altera_Forum
Honored Contributor II
920 Views

Hi, 

Yes same Logic I am using, Now I am trying to generate base band data for particular tone using below equation in matLab and Generated Base band data is taken in ROM and data is accessed with SAMPLING frequency(Fs). 

 

tone_data=sin(2*pi*row_freq*time_period)+sin(2*pi*col_freq*time_period)  

0 Kudos
Altera_Forum
Honored Contributor II
920 Views

 

--- Quote Start ---  

Hi, 

Yes same Logic I am using, Now I am trying to generate base band data for particular tone using below equation in matLab and Generated Base band data is taken in ROM and data is accessed with SAMPLING frequency(Fs). 

 

tone_data=sin(2*pi*row_freq*time_period)+sin(2*pi*col_freq*time_period)  

 

--- Quote End ---  

 

 

I will follow that by(for 14 bits signed): 

tone_data = round((2^13-1) * tone_data/max(abs(tone_data))); 

 

also make sure of phase continuity i.e. the last value of tone_data must wrap-up correctly with first data. 

 

kaz
0 Kudos
Altera_Forum
Honored Contributor II
920 Views

Basically, a sine LUT for DDS/NCO can be generated from pure VHDL code, without using external tools, the basic technique has been discussed in a previous thread http://www.alteraforum.com/forum/showthread.php?t=1902.

0 Kudos
Reply