Programmierbare Logik & Embedded Computing SBC auf Xilinx-FPGA - Es geht auch ohne Motherboard

Redakteur: Holger Heller

Ein kompletter Single-Board-Computer mit SATA lässt sich mittlerweile in einem einzigen FPGA-Baustein implementieren. Die hohe Gatterdichte moderner PLDs macht's möglich.

Anbieter zum Thema

Viele ISM-Applikationen brauchen schnelle Massenspeicher zur Datenerfassung. SSD-Laufwerke (Solid State Drive) sind De-facto-Standard; sie sind hoch zuverlässig und schnell und werden meist per Serial ATA (SATA) Interface angebunden. Dieser Beitrag behandelt die Entwicklungsschritte für ein Single-Board-Computersystem auf einem Xilinx-Chip mit Highspeed-SATA-Anbindung für SSD-RAID-Funktion. Dazu kombinieren wir im Xilinx-Alliance-Programm die Expertise von ASICs World Service bei IP und von Missing Link Electronics (MLE) bei programmierbaren Systemen.

Bevor wir in die Details gehen, ein Blick auf SATA. Bild 1 zeigt die zahlreichen Layer der vollen SATA-Host-Controller-Funktion. Komplette SATA-Lösungen für ein FPGA-basiertes programmierbares System brauchen also viel mehr als einen IP-Kern. Das würde wichtige Aspekte übersehen.

Erstens: Man sollte nur den PHY-, Link- und einige Teile des Transport-Layers in FPGA-Hardware implementieren. Deshalb liefern die IP-Anbieter diese Layer zusammen mit ihrer IP. Der SATA-Host-IP-Kern von ASICS World Service verwendet Multi-Gigabit-Transceiver (MGT) für den PHY-Layer (mit Out-of-Band-Signalling-Block ähnlich wie in der Xilinx-Applikationsschrift 870 beschrieben) zur kompletten Implementierung im FPGA.

Scatter-Gather DMA Engines

Die höheren Transport-Layer-Ebenen, wie Application-, Device- und User-Program-Layer, lassen sich besser als Software implementieren. Das verschiebt allerdings den Entwicklungsaufwand auf das Systemdesign – und bringt eventuell zusätzliche, vorher nicht absehbare Kosten.

Der Grund für die Ausklammerung dieser Layer aus der IP liegt in der Unterschiedlichkeit der Architekturen und deren unterschiedlicher Einsatzweise. Also muss man für eine komplette Lösung einzelne Komponenten aus IP-Kern und Benutzerprogrammen implementieren, testen und integrieren, etwa Scatter-Gather DMA (SGDMA) Engines aus Hardware und Software.

Mehr noch: Die Kommunikation auf dem Transport-Layer geht über Frame-Informationsstrukturen (FIS). Der SATA-Standard definiert die FIS-Typen. Die genauere Betrachtung des FIS-Flusses zwischen Host und Baustein für Read- und Write-Operationen ist dabei aufschlussreich. Ein Host informiert den Baustein über eine neue Operation über ein Register FIS mit Standard ATA-Befehl.

Native Command Queuing

Bei einer Read DMA-Operation sendet der Baustein eine oder mehrere Data FIS, sobald er bereit ist. Der Baustein komplettiert die Transaktion durch Register-FIS vom Baustein zum Host. Dies informiert über eine erfolgreiche oder nicht erfolgreiche Operation.

Bei einer Write DMA Operation informiert der Host den Baustein über die Operation per Register FIS. Ist der Baustein bereit zum Datenempfang, sendet er ein DMA Activate FIS, und der Host startet mit einem Data FIS. Wenn der Baustein weitere Daten erwartet, sendet er ein weiteres DMA Activate FIS. Eine neue, von SATA bereitstellte Funktion außerhalb Parallel ATA ist die First-Party DMA. Sie gibt die Steuerung der DMA-Engine teilweise an den Baustein. Dieser kann also eine Liste von Befehlen zwischenspeichern und zur Leistungsoptimierung wieder aufrufen (Native Command Queuing).

Artikelfiles und Artikellinks

(ID:28607560)