Innovative Integration
 
Log inUsernamePassword
Log me on automatically each visit    
Register
Register
Log in to check your private messages
Log in to check your private messages
How to assemble the program using malibu?

 
Post new topic   Reply to topic    II Support Forum Index -> X5-400M
View previous topic :: View next topic  
Author Message
ikhwan_h17f



Joined: 02 Jun 2010
Posts: 9
Location: Bandung

PostPosted: Wed Jun 02, 2010 8:53 pm    Post subject: How to assemble the program using malibu? Reply with quote

Hello everyone...

I'm a newbie in using X5 400M DSP and C++/CLI. Now, I'm trying to use this DSP as a signal generator for my practicing. I've no idea to make from the beginning, so I re-design the "wave" program that including in example folder [ C:\Program Files\Innovative\X5-400M\Examples\Wave ]. I copy some of this program like ApplicationIo (header & cpp file), stdafx (header & cpp file), target (header file), AssemblyInfo (header & cpp file), and also I make my main program. after that, I set the path of compiler to the malibu library and microsoft visual studio 8 ("C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib";"C:\Program Files\Innovative\Lib";"C:\Program Files\Innovative\Malibu\IPP";"C:\Program Files\Innovative\Malibu"). I use microsoft visual C++ as the compiler, and "release" mode configuration same as the "wave" program.

After I compile it, it can't give the output in analog channel that connect to the osciloscope, but the output only appear in binview. why is it happen?

hope to hear many suggestion from all in this forum
thanks...
Back to top
View user's profile Send private message Yahoo Messenger
jhenderson
Site Admin


Joined: 07 Mar 2006
Posts: 1177
Location: So. Cal. USA

PostPosted: Thu Jun 03, 2010 10:35 am    Post subject: Reply with quote

It is very important to realize that the most expedient method to create a custom application is to incorporate the ApplicationIo class in its entirety directly into your custom app. ApplicationIo contains only portable code, without any framework dependencies whatsoever. It contains all of the essential hardware initialization code, event handlers, etc to support efficient communications with the board. You'll likely need all of the features of ApplicationIo in your application - so why reinvent the wheel?

Many users are initially unclear on how ApplicationIo can remain agnostic to the framework. This is accomplished by factoring all functions used to relay information between framework-specific code and the ApplicationIo into a small separate class called UserInterface within the supplied examples.

The concrete UserInterface object derives from the pure abstract IUserInterface base class. IUserInterface simply specifies the functions that must be supplied by a user application to provide a bridge to the stock features of the ApplicationIo object. Your application must create a UserInterface class and pass it to the constructor of the ApplicationIo object, but your implementation of the IUserInterface methods may degenerate to trivial no-ops if desired.

See the thread at http://www.iidsp.com/forum/viewtopic.php?t=543 for additional details.
Back to top
View user's profile Send private message Visit poster's website
ikhwan_h17f



Joined: 02 Jun 2010
Posts: 9
Location: Bandung

PostPosted: Thu Jun 03, 2010 10:47 pm    Post subject: Reply with quote

Thanks for your link, I have read all, and that make senses....

Now, I'm going to continue my practice. I will generate 2 different signal with two different channel. For that purpose, I change the (ActiveChannels=0010) in Settings.ini but it just change the channel and not generate 2 signal.
What should I do?

thanks for your attention...
Favian
Back to top
View user's profile Send private message Yahoo Messenger
jhenderson
Site Admin


Joined: 07 Mar 2006
Posts: 1177
Location: So. Cal. USA

PostPosted: Fri Jun 04, 2010 1:07 am    Post subject: Reply with quote

The ActiveChannel array is a boolean array of the enabled channels. To enable channels 0 and 1, for instance, ActiveChannel should be set to 0011.
Back to top
View user's profile Send private message Visit poster's website
ikhwan_h17f



Joined: 02 Jun 2010
Posts: 9
Location: Bandung

PostPosted: Fri Jun 04, 2010 1:36 am    Post subject: Reply with quote

thanks for you information.

I have tried it, than it works. But, why the signal quality (stability) become worst than just 1 channel? I change the Settings.ini (ActiveChannels=0110).

What about generating 2 different signal (like 1st channel Sine, 2nd channel square) ? What should I set in the Settings.ini? or What syntax should be added?

Thanks...
Favian
Back to top
View user's profile Send private message Yahoo Messenger
jhenderson
Site Admin


Joined: 07 Mar 2006
Posts: 1177
Location: So. Cal. USA

PostPosted: Fri Jun 04, 2010 2:04 am    Post subject: Reply with quote

If using the internal 400 MHz oscillator as the sample clock, the X5-400M will sample at 400 MSPS. With one channel enabled, this equates to a sustained transfer rate of 800 MB/s, since each channel is two-bytes in length. If enabling two channels, the transfer rate would escalate to 1600 MB/s.

But, most motherboards support maximum transfer rates of only about 1200 MB/s to devices equipped with 8-lane, gen1 PCIe interfaces. So, gaps are produced in the output stream. This results in a distorted output waveform on the scope.

This limitation is typically avoided by embedding DSP functionality within the Virtex5 FPGA on the card. For instance, if a waveform generator were embedded into the firmware, no waveform data would need to be transferred via PCIe at all, since the samples would be generated locally.
Back to top
View user's profile Send private message Visit poster's website
ikhwan_h17f



Joined: 02 Jun 2010
Posts: 9
Location: Bandung

PostPosted: Wed Jun 09, 2010 8:13 pm    Post subject: Reply with quote

Dear all,

If I want to stream digital data into channel 1, what should I do? Is it still using ApplicationIo.h & ApplicationIo.cpp? What header should I use?


thanks for your attentention..

regards
Favian
Back to top
View user's profile Send private message Yahoo Messenger
jhenderson
Site Admin


Joined: 07 Mar 2006
Posts: 1177
Location: So. Cal. USA

PostPosted: Thu Jun 10, 2010 3:58 am    Post subject: Reply with quote

The Malibu libraries and the X5-400M Wave example does not support flowing data to ch1 only. When only one channel is enabled, the software enables stack mode, which redirects data ch1 data to ch0, effectively doubling the digital data rate and allowing ch0 to operate at 500 MSPS max. However, this architecture disallows use of ch1 in isolation.
Back to top
View user's profile Send private message Visit poster's website
ikhwan_h17f



Joined: 02 Jun 2010
Posts: 9
Location: Bandung

PostPosted: Thu Jun 10, 2010 4:53 am    Post subject: Reply with quote

Ok, what about I flow to the both of channels (ch0 & ch1)?

Is it flow the same digital signal or different? Or, can I flow different digital signal to those channel?

What should I do to the wave code? What syntax should I add/reduce?

Thanks..
Back to top
View user's profile Send private message Yahoo Messenger
jhenderson
Site Admin


Joined: 07 Mar 2006
Posts: 1177
Location: So. Cal. USA

PostPosted: Thu Jun 10, 2010 7:01 am    Post subject: Reply with quote

To stream data to both channels 0 & 1, construct packets as described at http://www.iidsp.com/forum/viewtopic.php?t=411&highlight=packet+format. Data for each channel is 14-bit, twos complement data stored as two-byte, short values.

The data sent to each D/A can be different. Simply construct the the data for each channel independently, then merge the samples into each buffer in the interleaved format described above, then send each packet to the card using the Stream.Send() method, as illustrated in the Wave example.
Back to top
View user's profile Send private message Visit poster's website
ikhwan_h17f



Joined: 02 Jun 2010
Posts: 9
Location: Bandung

PostPosted: Sun Jun 13, 2010 7:59 pm    Post subject: Reply with quote

I want to ask about Snap program. As I know that example program is used for data acquisition. What about if the function is changed become data streaming? Is it possible?

thanks..
Back to top
View user's profile Send private message Yahoo Messenger
ikhwan_h17f



Joined: 02 Jun 2010
Posts: 9
Location: Bandung

PostPosted: Sun Jun 13, 2010 8:07 pm    Post subject: Reply with quote

ikhwan_h17f wrote:
I want to ask about Snap program. As I know that example program is used for data acquisition. What about if the function is changed become data streaming? Is it possible?

thanks..


I'm sorry, I mean, I stream data from PC, to channel 0 & 1 in X5 400M.
Ok, thanks...
Back to top
View user's profile Send private message Yahoo Messenger
jhenderson
Site Admin


Joined: 07 Mar 2006
Posts: 1177
Location: So. Cal. USA

PostPosted: Mon Jun 14, 2010 5:08 am    Post subject: Reply with quote

The Wave example illustrates streaming of precalculated analog data from the Host PC to the X5-400M. The max data rate from the Host to the module is approximately 900 MB/s which is dependent on the particular motherboard used.
Back to top
View user's profile Send private message Visit poster's website
ikhwan_h17f



Joined: 02 Jun 2010
Posts: 9
Location: Bandung

PostPosted: Mon Jun 14, 2010 6:29 pm    Post subject: Reply with quote

jhenderson wrote:
The Wave example illustrates streaming of precalculated analog data from the Host PC to the X5-400M. The max data rate from the Host to the module is approximately 900 MB/s which is dependent on the particular motherboard used.


What about if I just want to stream digital signal that I generate myself? Is it still use wave example? What syntax must be changed? What should I do?

thanks..
Back to top
View user's profile Send private message Yahoo Messenger
jhenderson
Site Admin


Joined: 07 Mar 2006
Posts: 1177
Location: So. Cal. USA

PostPosted: Tue Jun 15, 2010 6:27 am    Post subject: Reply with quote

As delivered, the wave example streams the contents of a single, precalculated waveform to the board. However, by modifying the implementation of the ApplicationIo::HandleDataRequired() method within ApplicationIo.cpp, you could send data from another source.

Bear in mind, however, that the data source used must be capable of sustaining data flow at the data rates required by the board. One channel of D/A running at 250 MHz requires 500 MB/s sustained. It will probably be necessary to precalculate your waveform contents prior to streaming or to locate the precalculated waveform on a fast RAID0 disk array to match that speed requirement.
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    II Support Forum Index -> X5-400M (GMT - 8 Hours)
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum

© Copyright 2006-2008 Innovative Integration
Powered by phpBB © 2001, 2002 phpBB Group
Based on iCGstation v1.0 Template By Ray © 2003, 2004 iOptional