PiBla: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
K (→‎Sourcedepot: diffuse)
(→‎Sourcedepot: Kat-Fix)
Zeile 23: Zeile 23:
Auch auf diesem Server:  [svn://mikrocontroller.net/pibla]
Auch auf diesem Server:  [svn://mikrocontroller.net/pibla]


[[Kategorie:VHDL]]
[[Kategorie:FPGA-Projekte]]

Version vom 12. Februar 2013, 20:09 Uhr

PiBla ist eine in VHDL geschriebene 8-Bit CPU. Die Grundarchitektur und der Befehlsatz entspricht dem des PicoBlaze Controllers für Xilinx-PLDs.

Überblick

Eine Beschreibung des Vorbildes - der Picoblaze - findet sich in der Wikipedia: [1], die Orginalbeschreibung von Xilinx dort: [2]. Der PiBla entstand auf dem Wunsch einen eigenen Controller zur Lernen und Forschen zu Schreiben, ohne selbst einen Assembler schreiben zu müssen oder völlig von Null (Architekturentwurf) anzufangen. Der Orginale Xilinx-Core kommt zwar auch als VHDL daher, allerdings beschreibt dies einen Netzliste aus Primitiven und eignet sich nicht wirklich um eigene Modifikation auszuforschen.

Der Pibla besteht aus dem eigentlichen Controller-Core und einem Block-Ram in der Befehlscode hinterlegt ist. Das eigentliche Programm wird in Assembler geschrieben, übersetzt und in ein Initialisierungsfile für den BlockRam umgewandelt.

Zielhardware

Der core wurde für den Spartan3 entwickelt und läuft auf dem Spartan3 Evalboard von Xilinx. Er ist ca 20% größer als der orginale picoblaze, da aber noch nicht völlig entwanzt, ist er auch noch nicht optimiert. Maximale Taktfrequenz lag so um 60 MHz. Probeweise wurde der core auch für Altera cyclone ii übersetzt. Der Ramblock für den Programmspeicher muss extra generiert (MegaFunction) werden und es werden FF statt RamBlöcke für das RegisterFile, Subroutine-Stack und ScratchPad-Ram FLiopFlops implementiert. Der Core ist also ohne weitere Handarbeiten deutlicher größer im Vergleich zum Spartan 3 (mit distributed Ram).

Unterschiede

Zum PicoBlaze gibt es folgende Unterschiede:

*jeder Befehl wird in einem Takt abgearbeitet
*der VHDL-Code ist eine Verhaltensbeschreibung (keine Netzliste wie der Picoblaze)

Status

2010-Dez-10: Alle Befehle sind implementiert, allerdings sind einige (Logic-Befehle, SUB) noch nicht komplett überprüft.

Sourcedepot

Auch auf diesem Server: [3]