Machine Vision

cancel
Showing results for 
Search instead for 
Did you mean: 

What is the PCI bus performance of the 1422?

I'm currently using an IMAQ PCI-1422 to acquire images from a camera. The image size is 1280x1024 @ 8-bits a pixel. Currently the camera can only run freely at 20 fps. So this data rate is roughly 26 MB/s. The IMAQ card seems to be able to acquire these images at that rate. However, I need to be able to retrieve these images into system memory at the same rate. At this time, I've only managed to retrieve the images at around 12 fps which is about 16 MB/s. Is this all I can reasonably expect from this card? There is no other activity along the PCI bus except for perhaps minor updates to the video display.

I'm acquiring images using a Grab. I use a callback on the Buffer Done signal to trigger an acquisit
ion running in another thread. Actually, I'd prefer to the acquisition in the callback itself, but I am uncertain as to how the callback is implemented and what I can and can't do in a callback. Is there documentation somewhere that I'm missing?

Oh yeah. I'm using MSVC++ and Windows 98.

Thanks
0 Kudos
Message 1 of 3
(3,293 Views)
Hi Cstanhop,

The PCI-1422 is able to transfer up to 45MB/sec. Transferring 1280x1024 @ 8bit/pixel at 20fps shouldn't be a problem.

My guess is that the problem is software related at the buffer done callback. I guess you are doing this to free up processor time. Usually we have a callback that creates a Grab thread that continously calls imgGrab. To verify whether this is a software issue or hardware, can you try the shipping examples for Grab?

I would try that example to see if you are able to acquire at maximum frame rate.

Ken Sun
Applications Engineer
National Instruments
0 Kudos
Message 2 of 3
(3,293 Views)
I tried the example and removed the clipping the ROI to the size of the canvas and also took out the image plot to make sure we would get accurate times. I get the same frame rate with that example as I did with my own code (around 12 fps). Also, I neglected to mention that for my own code I placed calls to timers just before and just after the call to imgGrab, and the time difference is what you would expect: about .083 seconds (average) to retrieve one frame.

I know nothing about the internal structure of the PCI-1422, but considering that we are retrieving images from the same SDRAM memory that is being used to acquire images, are we seeing some sort of bus contention on the PCI-1422 itself? Also, the camera I'm using is an evaluation board, and I have access
to the schematics and should soon have access to the CPLD design. So I can verify the design of the camera itself. I'm glad to hear that you expect to be able to transfer at 45MB/sec. That probably means that there is something not quite right either in the camera interface or perhaps in the computer system being used. But if you have any other ideas, I'd be glad to hear them.

Thanks for the response.
0 Kudos
Message 3 of 3
(3,293 Views)