Various approaches have been developed for integrating FPGA and GPP application components in a Software Communications Architecture (SCA) radio. Most of these have been less than successful, primarily due to overhead, latency and/or maintainability issues. Spectra IP Core is a second-generation solution to FPGA-GPP component integration that provides a low-latency, standards-based CORBA protocol with excellent performance metrics and the robustness of a proven, deployed solution. Building on PrismTech’s ICO v1, Spectra IP Core is a second-generation COTS product. This webcast will introduce the Spectra IP Core architecture, its main functions and its performance benchmarks. Although FPGA ‘middleware’ is a new concept for many FPGA developers, the capabilities provided by Spectra IP Core not only provide valuable integration ‘hooks’, but also help support a highly-efficient, proven radio component that simplifies the integration of high-level software development with digital design and accelerates the development of SCA-compliant FPGA components for SCA radios. These slides will be of great interest and value to project managers, systems engineers and architects as well as software and digital engineers involved in designing, building and testing SCA-compliant SDRs.
Scaling API-first – The story of a global engineering organization
Spectra IP Core ORB - high-performance, low-latency solution for FPGA-GPP component integration
1. Copyright PrismTech 2009 Proprietary information subject to non-disclosure Copyright PrismTech 2008 Proprietary information subject to non-disclosure Copyright PrismTech 2008 Proprietary information subject to non-disclosure Spectra IP Core ORB Live Webcast A High-Performance, Low-latency, Common Data Protocol solution for FPGA-GPP or FPGA-DSP Component Integration February 17, 2011 – Andrew Foster, Spectra Product Manager Copyright PrismTech 2011
2.
3.
4.
5. Current SCA Device Model MHAL approach provides a degree of portability, however, the format and content of messages sent to the MHAL components is not standardised and must be written by each waveform developer RTOS FPGA GPP & DSP Processors POSIX MHAL MHAL Waveform Core Framework CORBA MHAL Transport Transport DSP GPP
6.
7.
8.
9.
10. Proposed Problem Solution Standardized CORBA interfaces across signal processing chain RTOS FPGA GPP & DSP Processors POSIX Waveform Core Framework CORBA HAL DSP GPP GIOP Message Bus
11. 2 nd Generation SCA/FPGA Connectivity – CORBA Everywhere By leveraging CORBA a standards-based, high-performance, low-footprint, fully-interoperable COTS middleware solution that can be deployed across multiple processor types, including GPP, DSP, & FPGA environments Spectra e*ORB C & C++ Spectra e*ORB C Spectra ICO VHDL GIOP Everywhere Extensible Transport Framework Waveform Component GPP DSP FPGA Spectra SCA CF Waveform Component Waveform Component
14. ICO Architecture Transport FIFO Rx Bridge Arbitration Servant Servant Client Arbitration Tx Bridge FPGA ICO GPIO GIOP Message GIOP Message External Interface Meta Data ROM Meta Data ROM
15.
16.
17. Design Flow CREATE IDL FILE COMPILE IDL FILL IN “USER” LOGIC ADD TRANSPORT TEST DEPLOY
19. Example servant –DAC Interface case AddressOffset(adr_i(AddressBusLow'range)) is when ADC_read_data_request => v.request_id := unsigned(dat_i); when ADC_read_data_replyaddr => v.reply_addr := dat_i(AddressBusHigh'range); when ADC_read_data_request_end => case r.reply is when normal => v.state := ADC_read_data_reply_state; when others => v.state := request_state; end case; when DAC_send_data_request => v.request_id := unsigned(dat_i); when DAC_send_data_replyaddr => v.reply_addr := dat_i(AddressBusHigh'range); when DAC_send_data_val => -- Modify the following line as needed. null; when DAC_send_data_request_end => case r.reply is when normal => v.state := DAC_send_data_reply_state; when others => v.state := request_state; end case; when others => null; end case;
20. Example servant – ADC Interface when ADC_read_data_return_state => v.address := mkaddr(r.reply_addr, ADC_read_data_return); if bus_grant = '1' then v.state := ADC_read_data_reply_end_state; -- Modify the following line as needed. v.data := (others => '0'); v.we := '1'; else null; end if; end process ;
21.
22.
23.
24.
25.
26. Spectra SDR/SCA Tools and Middleware Spectra e*ORB Spectra Core Framework SCA Infrastructure SCA Infrastructure Radio Application (waveform) Radio Application (waveform) Host Development Tools Target Radio Platform RTOS GPP/DSP BSP ASP Spectra ICO FPGA End-to-End: Model, Generate, Validate, Deploy Generate Spectra CX: Model-Based Development Tool Eclipse Workbench UML 2 Windows / Linux / Unix
27. ICO v2 Performance Request Type Octet Sequence Size ICO v1 Stratix II Time (µS) ICO v2 Stratix II Time (µS) ICO v1 Stratix III Time (µS) ICO v2 Stratix III Time (µS) ICO v1 Stratix IV Time (µS) ICO v2 Stratix IV Time (µS) ICO v1 Cyclone III Time (µS) ICO v2 Cyclone III Time (µS) IN 512 4.1154 1.2993 2.6714 0.7503 3.4656 0.915 7.1478 1.8666 IN 1024 6.7488 2.2081 4.3808 1.2751 5.6832 1.555 11.7216 3.1722 IN 2048 12.8706 4.0257 8.3546 2.3247 10.8384 2.835 22.3542 5.7834 IN 4096 24.5442 7.6609 15.9322 4.4239 20.6688 5.395 42.6294 11.0058 IN 8192 47.8914 14.9313 31.0874 8.6223 40.3296 10.515 83.1798 21.4506 IN 16384 94.5858 29.4721 61.3978 17.0191 79.6512 20.755 164.2806 42.3402 IN 32768 187.9746 58.5537 122.0186 33.8127 158.2944 41.235 326.4822 84.1194
28. ICO v2 Footprint interface Performance { typedef sequence<octet> OctetSeq; void setLength (in long seqLength); void testOctetSeqIn (in OctetSeq inSeq); void testOctetSeqOut (out OctetSeq outSeq); void testOctetSeqInout (inout OctetSeq inoutSeq); OctetSeq testOctetSeqRet (); void shutdown (); }; ICO v1 Stratix II ICO v2 Stratix II ICO v1 Stratix III ICO v2 Stratix III ICO v1 Stratix IV ICO v2 Stratix IV Logic Utilization Combinational ALUTs 2422 1812 2609 1812 2393 1812 Dedicated logic registers 2176 1531 2289 1531 2201 1531 Total Registers 2176 1531 2289 1531 2201 1531 Total pins 22 137 22 137 22 137 Total virtual pins 0 0 0 0 0 0 DSP block 9-bit elements 0 0 0 0 0 0 Total PLLs 0 0 0 0 0 0 Total DLLs 0 0 0 0 0 0 ICO v1 Cyclone III ICO v2 Cyclone III Total Logic Elements 4925 3429 Total Combinational Functions 3576 2639 Dedicated logic registers 2457 1532 Total Registers 2457 1532 Total pins 22 137 Total virtual pins 0 0 DSP block 9-bit elements 0 0 Embedded Multiplier 9-bit elements 0 0
3-6 Gbits/sec depending on the FPGA family For requests that simply deliver the payload as an IN parameter ICO v2 can process CORBA messages approximately 4x faster than ICO v1. For the other types of request considered (INOUT, OUT and RETURN) the improvements are even greater. In these cases ICO v2 is approximately 10x faster for the smaller payloads measured, increasing to in excess of 20x faster for the largest payloads considered.