Showing results for 
Search instead for 
Did you mean: 

Acquire many signals for FPGA



I will use LAbView to manipulate the FPGA,  I want to acquire and separate fetal ECG from the maternal ECG. I have two SCB-68, NI PXI-1033, NI PXI-7841R and DAQ 6009 and of course labview 8.6.  For this I have to do this with different manner and compare them:


1)      I will use different algorithm in LabView to calculate The fetal heart rate, the amplitude of each wave form and the duration

2)      I will do the acquisition of  the signals with different way using:


  • First, I have to try to acquire 2 signals  (for example sinus and square signals combined) and separate them with the appropriate algorithm
  • Second, I have to test the separation of fetal ECG and maternal ECG signals (simulate signals) that I find in the NI example (can I use them with the FPGA? and how?)
  • Finally I have to use a real signal

     - From data base (But I have a problem in installing biomedical startup kit and I'm waitting to solve it)

     - From pregnant women (But up to now I didn’t find a woman which accept to go with me to the search laboratory because they afraid) with SCB-68. That’s why, I thought if I will bring the hardware to the hospital may be I improve to chance to find women accepting this or I thought to use the SCB-68 to instead to transport all the hardware.


3)      Before beginning the acquisition I want design the possibility choosing the acquisition mode, single (one electrode for the abdominal ECG and one for the thorax ECG) and multichannel acquisition (I hope to obtain 20 channels acquisition and after I supress the noise signal but I thougut it impossible with my FPGA. Otherwise, for example 8 electrodes 5 abdominal and 3 thorax and having the possibility to changes the choice 6 abdominal and 2 thorax….An message appear to ask to operator tochoice which to he want to select)


I try to do the acquisition block diagram FPGA (following the example video and example which work correctly with one acquisition) by two cases: with FIFO DMA and with IRQ but I didn’t know what to change to obtain two acquisition instead one showing by the example, to do block diagram do I have to repeat each time (new project, choose Input output,…..? in the term to compare the different manner (simulate signal and real signal), i need to do different project for each case, I want to find some way to copie the block biagram of the FPGA to win time instead to re make each time a the main block biagram of the FPGA (the "copy" work with the block diagram only in the host) :smileysad:


For FIFO method and IRQ method could I have to use two FIFO  (or two IRQ in the second case) and changing the size from 32 bits to I16 or U16? Or I have to repeat the bloc as much as the number of acquisition? And also do I have to change the proprieties of the clock timer and tick counter from 32 to 16 bits? Please find below the attachments. For FIFO method, I didn't change any things compared to the original example I just added two acquisition instead one but it didn't compilate correctly. For IRQ I just changed the loop timer to 16 bits in the FPGA block diagram, and the compilation work correctly but I find problem in host block diagram.


Thanks a lot to help me


Download All
0 Kudos
Message 1 of 12



Do you think you can state your problem more simply (and not all wrapped up in your particular application)?  For instance:

  • What are your signals?  Based on what you have put here I will assume 2 - an AI for the fetal heart rate and an AI for the maternal?  Or is it just one from which you have to deconvolve two rates?  I don't fully understand what the 20 inputs has to do with the 7841R given that there are only 8 AI available on this particular unit.  And since there are only 8 AI available for the 6009, this system is acquiring anaolg inputs (and insufficient given the need for 20+).
  • What is your acquisition rate? 
  • At what rate are you trying to process your data? 
  • What need do you have for the FPGA?  i.e. what function will the FPGA perform that can not be performed on the desktop?

Anyway, if you can answer some of these questions, this might prove to be a good starting point for you getting assistance.


Cheers, Matt

0 Kudos
Message 2 of 12

Hi Matt,


Thank you very much to open my eyes to this many questions, I sorry for replying late because I want to find more informations about them,


In reality I am beginner in the world of Labview FPGA et signal processing.  In the last time, I just tried the examples in case of DMA and IRQ (given by Ni) which allow me to acquired a signal and I will adapt it to my case. I tryed the examples (one acquisition) with the real  sinusoidal signal from the generator with 100 hz frequency, and it's worked perfectly.


The goal is to extract fetal ECG “FECG” (directly from pregnant women) which is weak signal  from the abdominal mother signal “AECG” which contain the fetal ECG and the Maternal ECG (MECG) (captured from the thorax). I mean that I have to cancel the MECG which from the abdominal signal to obtain the FECG; please see below the picture. Of course, before this, I have to denoise the AECG (from the baseline wander, power line interference, ….) after this, enhance FECG. After extracting FECG I have to  the FHR (Fetal heart Rate) in order to have an idea about the situation of the foetus, also compute the amplitude of and the duration of each waveform (P,Q, R, S,T waveforms)


First of all I have, to try to do the acquisition and the separation and of simulate signals (which I find in the LabView example related to adaptive toolkits named Fetal ECG extraction) and reel from database “Daisy database" and the "MIT-BIH" but I don't know how can I do this, if you can give me a file which can help me or a suggestion. The second step is to extract FECG from pregnant women; you can see the following link related to NI:

Daisy database:

MIT-BIH database :



The Abdominal ECG (AECG) can be obtained from many manners: from many leads (multichannel) or one (single channel) and also the thoracic ECG (= maternel ECG). The first it's more complicated and my hardware don't permit it , that's way I will connect to the mother 3 leads (one in the thoracic emplacement, another in the belly and the last in the foot to be the GND)

Features FECG: amplitude = 10 –100μand the FHR normally lies between 120 and 160 beats per minute (bpm) corresponding to a fundamental FECG frequency between 2 and 2.7 Hz. In pathological cases, the FHR may be outside this range, resulting in a fundamental FECG frequency around 1.3 Hz (fetal bradycardia) or 3.3 Hz (fetal tachycardia)

 Features MECG: amplitude = 0.5–10 mV  and the Heart Rate (HR) the maximum rate is around 100 beats per minute and the minimum heart beat is around 60 beats per minute that mean between 1 and 1,66 Hz  (HR=1/T = 1/RR (pic intervals) in Hz to obtain in bpm we have to multiply by 60).

The last time I just tried to do the correct block diagram with many acquisition and I thought to compute the necessary rate sampling and he rate of the processing in the first step, but now I realized that I was wrong to think this way. I found in many papers that the rate sampling are diffrent values but I don’t know how they choose it? I thought that may be they used the Shanon rule? I find this in one of the related papers:


Definition of The RR Intervals: the implementation ofthis algorithm depends mainly on the normal heart rate (HR)and the sampling frequency, where the maximum rate is around 100 beats per minute and the minimum heart beat is around 60 beats per minute and the sampling frequency. Thesampling frequency is chosen 256 in this work.


And what about the processin rate, is it calculated by this rule:

 Rate processing= 1/ period processing which the period of processing = duration of the acquisition/ memory size?


0 Kudos
Message 3 of 12

Forgive me Rira, but I am going to ask you once again to boil this problem down to the most fundamental data acquisition tasks.  It is really difficult for me to understand exactly what you are trying to do on the data acquisition side, where FPGA comes into this, etc, etc.  I think you will get a better response from everyone if you can simplify this.  Try to state it like this (without all of the jargon regarding ECGs and whatnot):

  • What signals do you wish to acquire?  What is the dynamic range of those signals?  What is the rate at which they will need to be acquired at?(the rate will be dependent on the signal of interest which you will define but can be determined using Nyquist theory).  Will you be acquiring digital and analog?  Just one or the other?  Will you bre acquiring signals at different rates (i.e. maybe you have a signal that changes slowly while another one has a target rate on which it varies more rapidly)?
  • What kind of processing exactly do you need to do on the signals?  What kind of rate will you be processing your signals at?  Will the processing be on hardware (FPGA) or in software?  Will you require moving them into the frequency domain or will they stay in the time domain?  Are you writing them to file?  What is the format?  Will your system require
  • Do you needto generate any digital or analog signals? Are they changing in time or are they a well defined waveform? What rate will you need to produce them at (again refer to Nyquist for this)? Over what range are you generating them?
  • What hardware do you plan to use for these tasks? Will that hardware be sufficient for the task?
  • Do you need to connect to any servers or external databases? 

This will not exhaust all of the questions you can ask to clarify the problem, but these should go a long way toward helping me (and others) understand the nature of the problem.  And please, please, if you wish for help, try to answer these questions in a manner that does not require you to couch this in terms of fetal heart rates, ECG, etc.  Ultimately, every data acquisition and signal processing task shares a lot with other more generic tasks, so the specificity that you have provided only undermines my ability to understand what exactly you are trying to do and how you have tried to do it.


Finally, if you have a project or some VIs that are executable, consider attaching these to your reply - even if I can't fully understand your statement of the problem, I might be able to discern what you are doing from the VIs you post (and the more complete the set of VIs, the better).


Cheers, Matt

Message 4 of 12

For ECG acquisition, the sampling rate should be about 500 samples/sec (per channel) - most ECG amplifiers are bandwidth limited from about 0.5Hz to 50Hz.  Lower sample rates are OK, but no real need to go lower in most cases.  Maternal or fetal, it doesn't matter - the heart rate is a result of processing the ECG data (how many "beats" per minute is a result of detecting the QRS pulse/waveform in the ECG signal).


Rira - I hope you don't expect to actually acquire the ECG signals directly from the mother using NI hardware.  There are two issues, one technical - you need a proper amplifier before the NI data acquisition device (whether low-cost USB like the USB-6008, or FPGA-based like the R-series boards).  The signals are too small and swamped in common-mode noise to actually acquire with NI DAQ devices.  Secondly - you need to provide some safety in for the form of isolation or other current limiting scheme to prevent a possible shock hazard.  NI doesn't make amplifiers like this, but most biosignal amplifiers made for this purpose will have analog outputs that are ready to connect directly to NI DAQ devices. 


In general, I think you need to consider this problem as two tasks - first, acquiring and digitizing the ECG signals and streaming to disk, and then second, processing the acquired combined mother/fetal ECG signals to separate the two signals using the algorithm described in the article that you referenced. For the second, you can use files that are pre-recorded from the MIT Physionet database to test your code.  Once you have these two components working, then you can start figuring out how to combine them into one application.


I'm not sure where the FPGA comes into this - will you be attempting to deploy the algorithm described in the article on the FPGA?




Visit the NI Biomedical User Group at:
Message 5 of 12


Thank you very much Steve and Matt, for more information please find in the attachments "data information" for more details

Thanks Steve for your precious help, really I feel lost because I sent already 2 discussions in Biomedical Community (9 days ago) but I didn't have a response until today (when I received  a partial response about a problem that I already resolved it). By the way, it's possible to continue discussion here or we have to change ?

As you mentioned, I have two part in my topic, acquiring and digitizing the ECG signals and streaming to disk, and then second, processing the acquired combined mother/fetal ECG signals to separate the two signals using the algorithm.
For my topic, I have to use the FPGA to process the signals (it's a necessity related to my study), I will insert in the host related to the FPGA the processing that allow me to do the separation ( please see in the attachements "picture1" ). When you say processing in the FPGA, you mean in the block diagram of the FPGA or in the block diagram of the host related to the FPGA?

My hardware : SCB-68, NI PXI-1033, NI PXI-7841R, DAQ 6009  and LabView 8.6 as software

1) For the first part (acquiring & digitizing & streaming to disk):

1.1 My superviosor told me it isn't necessary to use the USB-6009 because the SCB-68 will acquire the signals and the PXI-7841R
 will digitize and stream to the host, but if the USB -6009 can do this and amplify the signals, can I used  with the FPGA (as I can be used only with LabView not LabView and FPGA)? If yes, it will be great. I find a NI link that make me so confusing:

1.2 The I tried to do the acquisition (please see bellow in the attachments VI & pictures) of two signals (to test if it work well: sinus, squares signals with different frequency) from generator.I found that only one acquisition work correctly, when I entered a sinus signal, or square I found it in the graph. For the second input I just found a signal in the high amplitude: I found only the square signal but the sinus had only one alternance. By the way I used connector 0/ AI2 and AI3 in the SCB-68 connector and entred the same signals from one generator. Waht's the problem? Also I had a problem with the scale of the graph, I try to changed but when it ran it come in the last so high values
By the way, at the first time I though taht I can acquire signals and after I can amplify it, but when I tried to acquire signals with a week frequency I failed.

1.3 For the safety I don't have biosignal amplifiers made for this purpose I tried to find it but in my country biomedical science is  new specialty, did you recommanded me to use some component to make something which assure the security

2) For processing:

In the FPGA can I use the example provided by LabView in the FPGA (a simulated signals + filter related to extraction) (refer to the attachements VI) ? And can I use in the same way the the signals from the database?

Please, if you can help me don't hesitate because I'm beginner in FPGA world and signal processing

Best reagrds

0 Kudos
Message 6 of 12

The V's, thanks a lot 🙂


0 Kudos
Message 7 of 12



The real connections: the wireds of SCB-68 and the generator,


Kind regards

Download All
0 Kudos
Message 8 of 12

Hi Rira,


I think you have duplicated your question. Is this post of yours about the same thing?

I strongly suggest you avoid duplication of posts so that you do not get the same help over and over again, which leads to considerable time watage on the part of the people helping you out.


However, if you really need to duplicate your post, atleast post a link to the duplicate so that everyone knows the history of the question.



Prashanth N
National Instruments
0 Kudos
Message 9 of 12

Hi Pachi,


Thanks to sign it to me, I'm so so sorry, in the last period I re post my questions because I didn't receive a response to all questions and because I have find a new  problem and questionsSmiley Sad

If some one need to read it please refer to


Sorry again

Best regards




0 Kudos
Message 10 of 12