| Home | Download Service Center Jobs  | Add Favorites |




首頁 支援服務ateme > IEKC64x/NVDK
IEKC64x/NVDK
 
Software Installation
 After updating the software from the web, I cannot access the IekC64 board from PCI
When I want to update FPGA with software release v1.2, the compiler can't link because the file fpgac64.ate is missing.
DSP Programming
How video acquisition internally work ?
How video restitution internally work ?
Could you explain me which are video format used with  IEKC64x/NVDKC64x ?
IEKC64_init() returns error code <0x80130004>
DSP Terminal and PCI
 When I run DSP Terminal application and try to connect to the IEKC64 board, I get the message "Runing controller failed".
When I try to download in PCI mode, an error message appears : "Cannot download DSP Code from PCI in this boot mode"
Code Composer Studio / JTAG emulation
 I have problems using XDS510PP_PLUS Emulator from Spectrum Digital with IEK/NVDK
 What is the correct sequence for connecting and disconnecting JTAG ?
 
Software Installation

After updating the software from the web, I cannot access the IekC64 board from PCI
The Windows driver is not updated by the setup. You have to do this manually. Go to the Windows device manager (right click on "Your computer", "Properties", "Devices" tab and on "Device manager" button). The Iekc64 board should appear in the "multifunction boards" section, double-click on it to open the properties sheet. From te "Driver" tab, use the "Update driver" button to force Windows to use the new driver in C:\Program files\iekc64\pc\drivers.

When I want to update FPGA with software release v1.2, the compiler can't link because the file fpgac64.ate is missing.
Copy this file fpgac64.ate (zip.file)
Right click on the name and select Save Target As... to the directory "C:\Program Files\ATEME\iekc64\dsp\Tools\Flash" and recompile your project.

You also need to update the board with Code Composer Studio (You cannot update the board with DSPTerminal application).

 

DSP Programming

How video acquisition internally work ?
The VIN Module captures video into frames. Frames are alllocated contiguously in a circular buffer provided by user before openning the module. This buffer must be large enough to allow at least 3 frames to be stored. Using a 3 frames buffer is the best way to insure that you won't have any overlapping between the background capture and the processing.
If your process need to work on more than 1 frame (for example when working on motion estimation), you don't need to copy frames to another buffer, you just have to create a buffer large enough and tell the VIN module to always leave the last N frames untouched.
The video input module use the EDMA channel for external event interrupt 4.
In CIF or QCIF resolution, we also use the first reload table available. When we want to update the address for next frame transfert, we update the destination address in a reload table.
In FULL resolution mode, as we have frames I and P, we need to use 4 reload tables. These tables are dynamicly allocated by CSL. The first two reload tables are used for a complete picture (I+P). When we want to update a picture, we first update the destination address in the 2 remaining reload tables and then we link the first P reload table on the I remaing reload table. And so on. For each end of EDMA transfer, the Transfer Complete Code (TCC) used is EDMA_CHA_GPINT1.
The EDMA channel used is the channel 4 (which correspond to external interrupt 4)

How video restitution internally work ?
The VOUT Module generates video from frames provided by the user. Frames are allocated by the user.
Their memory location is non important, as far as each frame start is aligned on a 32 bit word boudary.
Frames for video generation don't need to be contiguously allocated in the same buffer like the ones used for video capture. They even doesn't need to be allocated before openning the module.

The video output module use the EDMA channel for external event interrupt 5 (COMPOSITE output) or external event interrupt 6 (VGA output)

In CIF resolution, we also use the first reload table available available. When we want to update the address for next frame transfert, we update the source address in reload table and in the current EDMA transfert In FULL resolution mode, as we have frames I and P, we need to use 4 reload tables. These tables are dynamicly allocated by CSL. The first two reload tables are used for a complete picture (I+P).

When we want to update a picture, we first update the source address in the 2 remaining reload tables and then we link the first P reload table on the I remaing reload table. And so on. For each end of EDMA transfer, the Transfer Complete Code used is EDMA_CHA_GPINT2 for COMPOSITE video output and EDMA_CHA_GPINT3 for VGA output. For COMPOSITE, the EDMA channel used is the channel 5 (which correspond to external interrupt 5) and for VGA the channel 6 (for external interrupt 6)

Could you explain me which are video format used with IEKC64x/NVDKC64x ?

Video input or output format on IEKC64x board is in UYVY 4:2:2 format which is probably the most popular of the various YUV 4:2:2 formats.

Horizontal

Vertical

Y Sample Period

1

1

U Sample Period

2

1

V Sample Period

2

1

So each pixel is coded on 16 bits. The byte ordering used on IEK/NVDK is :..

Y0

U0

Y1

V0

Y2

U2

Y3

V2

Y4

U4

Y5

V4

...

The AGL library delivered with the SDK allows you to quickly convert this pixel format to planar format.(and vice versa)
So you can use IYUV (Planar 4:2:0) format with your algorithm. This format comprise an NxN Y plane followed by (N/2)x(N/2) U and V planes :

Horizontal

Vertical

Y Sample Period

1

1

U Sample Period

2

2

V Sample Period

2

2


Luminance plane :

Y(0,0)

...

...

Y(N-1,0)

Y(0,1)

...

...

Y(N-1,1)

...

...

...

...

Y(0,N-1)

...

...

Chrominance U plane :

U(0,0)

...

...

U(N-1,0)

...

...

...

...

U(0,N-3).

...

...

U(N-1,N-3)

U(0,N-1)

...

...

U(N-1,N-1)

Chrominance V plane:

V(0,0)

...

...

V(N-1,0)

...

...

...

...

V(0,N-3).

...

...

V(N-1,N-3)

V(0,N-1)

..

..

Y(N-1,N-1)

IEKC64_init() returns error code <0x80130004>
This problem appears when using IEKLIB v1.3.x on some board which are configured in stand-alone mode. This will be corrected with v1.4. However, there is a workaround to this problem : Even if you are using the board in stand-alone, configure the dip-switch for PCI operation (check User's Manual or Getting Started Guide). Note that this will only prevent the DSP to bootload from flash, but for CCS usage, it will remains transparent.

DSP Terminal and PCI

When I run DSP Terminal application and try to connect to the IEKC64 board, I get the message "Runing controller failed".
If you have release 1 or 1.1 of the software package, there is a bug in a configuration file provided by the installation.

Get the following file BoardDataBase.cfg (zip.file) and copy it into the C:\Program files\ATEME\iekc64\bin directory.

If you have release 1.0 to 1.2 and your Windows version has localized the Program files directory (ie if the name of your Program files directory is not "Program Files" in english), you have to manually edit this file with a text editor such as Note pad. Locate the following line in BoardDataBase.cfg :

strController = s: "C:\Program files\ATEME\iekc64\bin\IekC64PCICtrl.exe"
and replace "C:\Program files" by the correct directory name.

When I try to download in PCI mode, an error message appears : " Cannot download DSP Code from PCI in this boot mode
This problem is probably due to an error with the dip-switch (SW1) configuration of the board. You use the board in PCI mode and the dip-switch are configured in stand-alone mode. Try to reconfigure the board in PCI mode and this will solve the problem. You can refer to the IEKC64x Users Manual p.13 for more details.

Code Composer Studio / JTAG emulation

I have problems using XDS510PP_PLUS Emulator from Spectrum Digital with IEK/NVDK
Possible problems may be : - can't open CCS - single step message error - error message :"GTI driver error" These problems are related to Spectrum Digital drivers and must be addressed to them.
Try first to update to the latest drivers available on their web site (www.spectrumdigital.com).

What is the correct sequence for connecting and disconnecting JTAG ?
The recommended method for connecting JTAG in stand-alone mode is the following :

  • Start with the IEK/NVDK not powered and JTAG not connected

  • Power up the board

  • Wait for the embedded test to start (red led onboard switch on, switch off and the two green leds -onboard and bracket- switch on) and video loopback alterning PAL and NTSC on the video out.

  • Connect JTAG cable from your emulator

  • Run CCS

To disconnect the JTAG and powering down the board :

  • Close CCS

  • Reset your emulator

  • Press the reset button on the board

  • Wait for the embedded test to start (leds switch off and the two green leds switch on) and video loopback alterning PAL and NTSC on the video out.

  • Disconnect JTAG cable

  • Power down the board

Doing these steps in other order such as powering the board up or down with JTAG connected may destroy your DSP or emulator. This will not be covered by ATEME warranty.