Info Telefon
09132 733 400

Unified Development Kit: UDK

Das UDK ist ein platform übergreifendes Konzept um unterschiedliche FPGA Karten einheitlich anzusprechen.

 

FPGA Entwicklungskit mit Wishbone Schnittstelle unter XP und Linux

Auf der Host Seite steht unter den verschiedenen Betriebssystemen die standardisierte API "CeUni.lib" zur Verfügung. FPGA-seitig kommt eine standardisierte 32-bit Wishbone-Bus Schnittstelle zum Einsatz.

FPGA-Designs und zugehörige PC-Software sind durch das Cesys UDK ohne bzw. mit minimalen Codeänderung unter allen unterstützten Betriebssystemen auf allen unterstützten FPGA-Karten lauffähig.

Für kundenspezifische Enwicklungen können wir ebenfalls auf das UDK aufsetzen.
Dadurch erreichen wir nicht nur eine signifikante Reduktion der Entwicklungskosten, sondern auch eine große Freiheit bei der Auswahl des Host-Betriebssystems und der Host-Schnittstelle.

Code Beispiel:

#include "usbuniapi.h"
using namespace ceSystem;
using namespace ceUSBUni;

void DownloadDesign(ceDevice *pDev, const char *pszDesignName)
{
   // load a FPGA design file
   ceFPGA FPGA;
   FPGA.LoadBin(pszDesignName);

   // download design and reset FPGA (internally called)
   pDev->ProgramFPGA(&FPGA);
}

void CheckWOProtocol(ceDevice *pDev)
{
   // Program the FPGA
   DownloadDesign(pDev, "AnyUserDesign.bin");

   uchar *pucBuffer = new uchar[256*1024];

   // download 256k Data in FIFO mode
   uint uiRealTransfered = -1;
   pDev->WriteBulk(pucBuffer, 256*1024, uiRealTransfered);

   delete [] pucBuffer;
}

void CheckWProtocol(ceDevice *pDev)
{
   // Program the FPGA
   DownloadDesign(pDev, "AnyUserDesignWithProtocol.bin");

   uchar *pucBuffer = new uchar[256*1024];

   // create protocol handler
   ceProtocol *pP = pDev->GetProtocol();

   // download 256k Data in protocol mode (to address 0x20000000)
   pP->WriteBlock(0x20000000, pucBuffer, 256*1024);

   delete [] pucBuffer;
}

int main()
{
   // begin of exception catch area
   try
   {
      // initialize API and search for USBV4F and EFM01 boards.
      ceUSBUniAPI::Init(ceDevice::ceDT_USBV4F);
      ceUSBUniAPI::Init(ceDevice::ceDT_EFM01);

      // check if any device is detected
      if(0!=ceDevice::GetDeviceCount())
      {
         // access first device
         ceDevice *pDev = ceDevice::GetDevice(0);

         // open device for usage
         pDev->Open();

         // Do something without protocol
         CheckWOProtocol(pDev);

         // Do some protocol transfer
         CheckWProtocol(pDev);

         // device not needed anymore, close it
         pDev->Close();
      }
      else
         cout << "No device detected." << endl;
   }
   catch(ceException &e)
   {
      cout << e.What() << endl;
   }

   // deinitialize API
   ceUSBUniAPI::DeInit();

   return 0;
}            

Für weitere Informationen zum UDK oder wenn Sie Fragen haben, besuchen Sie unser FPGA-Forum, schicken Sie uns eine E-Mail oder rufen Sie uns an: 09132 733 400.
In unserem online-shop können sie unsere FPGA-Karten direkt bestellen.
Um ein verbindliches Angebot zu erhalten können Sie direkt mit uns Kontakt aufnehmen oder unser Anfrageformular ausfüllen.