Skriv ut
Moderna FPGA-baserade konstruktioner använder allt fler färdiga byggblock (IP-block), både avseende funktioner och antal instanser. I Xilinx utvecklingsverktyg Vivado finns IP Integrator (IPI) som tillsammans med företagets kommunikations-IP gör det enklare att snabbt koppla ihop dessa IP-block.
embexLadda ner artikeln på 500 kbyte här (länk, pdf).
Fler tekniska rapporter finns på etn.se/expert
För att illustrera kraftfullheten hos IPI-metoden tar vi ett exempel med en utbruten radioenhet (remote radio head, RHH). Radioenheten sitter nära antennen och utgör en del av ett mobilkommunikationsnätverk. De är vanligtvis anslutna med fiberoptik uppströms till en basstation och eventuellt dessutom anslutna nedströms till ytterligare radioenheter och implementerar på så vis en multihopp-topologi (figur 1).

CIPRI-protokollet används ofta vid sammanlänkning av dessa radioenheter. Vi kan skapa en exempelkonstruktion med en CPRI-port för överordnad länk och tre CPRI-portar för underordnad länk och ansluta dem. Vi kan utföra merparten av detta jobb med IPI. Resultatet kommer att utgöra en huvudsaklig del av den övergripande konstruktionen. Vi kommer att använda en Kintex-7-krets. Med de GTX-transceivers som finns i Kintex och Zynq-7000 blir det möjligt att använda CPRI-hastigheten på 9,8-Gb/s.

Figur 2 visar vad vi kan skapa inom IPI. Vi kan skapa den blockkonstruktion och instansiera de IP-block som krävs från IP-katalogen. CPRI-blocket har optimerats för samutnyttjande av resurser där det är möjligt och för enkel användning i IPI. Switcharna är anpassade IP-block.

En av utmaningarna med flera instanser av IP är hur man kan utnyttja resurser effektivt. Ett antal IP-block för kommunikation stöder ”delad logik”-funktionen. Vad gäller CPRI-blocket kan vi konfigurera IP att inkludera delbara resurser inuti blocket eller så kan vi utelämna dessa delade resurser. Om de inkluderas i IP-blocket tillhandahåller de nödvändiga utgångar som vi behöver för att ansluta dem till blocken som har utelämnat motsvarande logik.

Användare med särskilda krav kan vilja utelämna denna logik i alla block och implementera sina egna. I vår design har vi konfigurerat CPRI-blocken så att de körs på 9,8 Gb/s. Vid den linjehastigheten är det nödvändigt att använda en LC-kretsbaserad oscillator för transceiverklockan. Transceivers i Kintex-7-enheten sitter i kvadrupler och varje transceiverkvadrupel består av fyra kanaler och en LC-kretsbaserad faslåst krets (QPLL). Alla block behöver dela QPLL och klockan som genereras av uppströmsklockningen. Figur 3 visar QPLL och klockutgångsportarna på uppströmsblocket som har anpassats med delad logik som är ansluten till lämpliga ingångsportar på en nedströms-CPRI-kärna som har anpassats med logiken utelämnad.

Vi har även instansierat IQ-switchen och Ethernetswitchen så att data kan överföras där emellan.

Styrnings- och hanteringsdata i CPRI-nätverket överförs via en Ethernetunderkanal. Ethernetswitchen i systemet gör det möjligt att utföra fjärrstyrda uppdateringar eller kommandon på inbyggd programvara och överföra dem till alla noder. IP-blocket har utformats för att använda så få logik­resurser som möjligt, eftersom en Ethernetswitch med alla funktioner inte behövs i det här fallet.

IQ-switchen tillhandahåller möjligheten att leda alla IQ-samplingar mellan CPRI-blocken med deterministisk latens. En viktig funktion för radiosystem med multihopp är förmågan att korrekt mäta länkfördröjningen och CPRI-standarden definierar en metod som förenklar denna mätning.

IPI-bussgränssnitt mappar en definierad uppsättning logiska portar till specifika fysiska portar på IP-block. Om man använder bussgränssnitt där det är möjligt rör man sig från att ansluta många, många signaler till att enkelt ansluta några få bussgränssnitt. Vanliga bussgränssnitt på IP är de som följer Arms AXI-specifikation, såsom AXI4-Lite och AXI4-Stream. Höjningen av abstraktionsnivån gör designinmatningen snabbare och enklare och gör även att du kan dra nytta av designregelkontroller för gränssnitten. Med Vivado IP Packager kan du använda din egna IP inom IP Integrator och utnyttja bussgränssnitt i din egen design.

IPI gör det enkelt att ansluta bussgränssnitt till varandra. Du behöver bara klicka på gränssnittet så visar IPI vad det kan ansluta till. Dra anslutningslinjen till den önskade slutpunkten så skapas anslutningen. Den här tekniken gör att du kan koppla samman många signaler med bara ett par klick.

Figur 4 visar Ethernetswitchen som tillhandahåller ett antal AXI4-Stream-gränssnitt, två GMII-gränssnitt och ett AXI4-Lite-gränssnitt. Strömningsgränssnittet möjliggör direktanslutning till CPRI-block och eliminerar på så sätt behovet av en intern buffert på CPRI-blocket. GMII-gränssnitten möjliggör anslutning till en Ethernet-PHY som kan vara användbar för fälttekniker som felsöker nätverksproblem. AXI4-Lite-hanteringsgränssnittet ger åtkomst till adresstabellmappningen och andra konfigurationsalternativ, såsom adresstabellens åldersintervall.

Vi fortsätter på samma sätt och kan bygga upp vårt system genom att ansluta gränssnitten inom IPI. Du får flexibiliteten att använda den inmatningsmetod som fungerar bäst för dig. Förutom att använda det grafiska användargränssnittet för att länka gränssnitt kan du även välja att utfärda kommandon direkt genom Tcl-konsolen eller hämta dem från ett skript. Varje gång du gör något i det grafiska användargränssnittet upprepas det resulterande kommandot.

Du kan även exportera hela designen när den är färdigskapad med kommandot ”write_bd_tcl.” Detta kommando skapar en Tcl-fil som kan hämtas för att skapa hela blockdesignen från början och som enkelt kan användas som en del av ett skriptat byggnadsflöde. Alla IP-block i designen har ett AXI4-Lite-hanteringsgränssnitt som gör att kärnorna kan anslutas till en värdprocessor. Den inbyggda informationen i IPI möjliggör anslutningsautomatisering. Med den här mekanismen känner IPI av att AXI4-Lite-gränssnittet på ditt IP-block ansluter till AXI-bussanslutningen och konfigurerar automatiskt de lämpliga adressområdena och ansluter bussen åt oss. Du kan sedan ansluta den här bussen till huvudprocessorn med hjälp av IPI. I vårt fall är huvudprocessorn en Microblaze, men om du använder en krets i Zynq-serien kan den enkelt ändras till att utnyttja en Arm-kärna.

Vivado IP Integrator-funktionerna växer snabbt och det leder till att det blir fler fördelar. Med rätt IP kan vi snabbt sätta samman hela delsystem och dra nytta av fördelarna.