Das UDK ist ein platform übergreifendes Konzept um unterschiedliche FPGA Karten einheitlich anzusprechen.
|
![]() |
|---|
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. 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. |