Hallo, ich bin auf der Suche nach einem kleinen (!) FPGA (o.Ä.) der folgende Aufgaben erfüllen kann: - er soll seine Grundkonfig. aus einem Flash/EPROM laden - er soll die Konfiguration von drei weiteren Geräten übernehmen - die Konfig. der Teilnehmer erfolgt über ein 3-wire serial interface, in dem SDATA und SCLOCK parallel geschaltet sind und mit drei verschiedenen SLOAD Signalen der jeweilige Teilnehmer ausgewählt wird (also insgesamt 5 Signalwege) - der FPGA und der dazugheörige EPROM sollen sehr sehr klein sein (aus Platzgründen auf dem PCB, vielleicht gibt es eine überlegenswerte Alternative mit integriertem EPROM?) - der EPROM soll sich über JTAG beschreiben lassen und bei jeder Änderung holt sich der FPGA die neue Konfig von dort - Es soll möglich sein, die "Konfigurationstakte" von einem weiteren Spartan 3A DSP durchzuschleifen. Entweder parametriert der Spartan die drei Devices oder eben der kleine, gesuchte FPGA Mit welcher Chipgröße muss ich rechnen? (FPGA + EPROM) Ich wäre für Hilfe sehr dankbar, denn so richtig blicke ich da noch nicht durch... bin noch am Einarbeiten und lernen. VIELEN DANK ! MfG Andreas
Würde ein kleiner Xilinx XC2C32A CoolRunner-II CPLD (XC2C32A-4QFG32C) im FG32 package (5x5mm) die Aufgabe erfüllen können? DANKE
Hallo Andreas, was meinst Du mit: " er soll die Konfiguration von drei weiteren Geräten übernehmen" im Detail? Soll er die anderen konfigurieren, oder durch diese konfiguriert werden oder einfach nur durchleiten? Der Code in diesem FPGA wäre fix? Viele Grüße Arndt
Hallo Arndt, der FPGA/CPLD soll die drei anderen Geräte konfigurieren, das bedeutet, dass er die Konfigurationsregister dieser drei Geräte beim Start beschreibt. Diese erste Initialisierung ist fix... also Standardwerte, mit denen das System lauffähig ist und funktioniert. Danach soll er umschalten auf Durchgang, dass dann ein weiterer, größerer FPGA (Spartan 3A DSP) die Konfiguration übernehmen kann. Es sollen dann im Detail die hinterlegten Standardwerte in den Endgeräten (nicht im kleinen FPGA) überschrieben werden und so feinere Anpassungen vorgenommen werden. Ich kann aktuell nur sehr schwer abschätzen, wieviel Logikzellen für eine solche Aufgabe benötigt werden. Da ich mich aktuell noch in VHDL einarbeite, bin ich gerade noch nicht in der Lage, den Code schnell fertig zu stellen und zu synthetisieren, damit ich genaue Angaben bekomme, welchen Chip ich brauche. Parallel soll der Hardwarentwurf weitergehen und dazu brauche ich den passenden FPGA/CPLD zwecks Anschlussbelegung und Package. Vielen Dank! MfG Andreas
Hallo Andreas, >ich bin auf der Suche nach einem kleinen (!) FPGA (o.Ä.) der folgende >Aufgaben erfüllen kann: Von der Größe wäre wohl mittlerweile jeder FPGA in der Lage deine Aufgabe zu erfüllen... Gegebenfalls ist hier ein CPLD einsetzbar/sinnvoll. Ebenfalls wäre über einen kleinen Microcontroller nachzudenken ( Microchip/Atmel o.ä. ) >- er soll seine Grundkonfig. aus einem Flash/EPROM laden Nur bei FPGAs notwendig >- er soll die Konfiguration von drei weiteren Geräten übernehmen Ggfls. sind weitere Fragen zu beantworten ( Booten nacheinander, wie weiss der Baustein wann das Konfigurieren beendet wurde ( zus. Init-Done???) >- die Konfig. der Teilnehmer erfolgt über ein 3-wire serial interface, >in dem SDATA und SCLOCK parallel geschaltet sind und mit drei >verschiedenen SLOAD Signalen der jeweilige Teilnehmer ausgewählt wird >(also insgesamt 5 Signalwege) weitere Leitungen ??? >- der FPGA und der dazugheörige EPROM sollen sehr sehr klein sein (aus >Platzgründen auf dem PCB, vielleicht gibt es eine überlegenswerte >Alternative mit integriertem EPROM?) Alternativen mit Eprom sind mir nicht mehr bekannt, gabs mal früher ( EPROM + RAM + CPLD ) ist ausgestorben... Beste Alternative: Microcontroller(MCU) + Serial Flash >- der EPROM soll sich über JTAG beschreiben lassen und bei jeder >Änderung holt sich der FPGA die neue Konfig von dort EPROM mit JTAG => EXOT JTAG via MCU : In der Industrie üblich, verlangt aber zus. Software ( > einige hundert $) JTAG via CPLD, z.B. von Altera verfügbar, bedingt aber einen Altera CPLD gewisser Grösse und ein ParallelFlash mit CFI. Das Bootinterface wiederum ist dann auf Altera FPGAs abgestimmt ( Serial oder parallel Slave ). Mit ein wenig Anpassung könnte das für Dich allerdings anpassbar sein. die von Altera gelieferte IP unterstützt das Neuladen mit Konfigurationen aus definierbaren Speicherbereichen, was Du wiederum nutzten kannst um unterschiedliche Bausteine zu beschicken... >- Es soll möglich sein, die "Konfigurationstakte" von einem weiteren >Spartan 3A DSP durchzuschleifen. Entweder parametriert der Spartan die >drei Devices oder eben der kleine, gesuchte FPGA MCU fällt hier aus. Beim FPGA muss das Timing genauer untersucht und beachtet werden. CPLD fürde ich hier für problemlos erachten... >Mit welcher Chipgröße muss ich rechnen? (FPGA + EPROM) Dein Vorschlag XC2C32A dürfte zu klein sein. Als Vergleich gibt es einen kleinen Opensource Core welcher eine SD-Karte ( im SPI-Interface Mode ) nutzt um einen FPGA via SerialSlave zu booten. Die effektive Coregröße in einem CPLD liegt meiner Erinnerung nach bei ca. 34-40 Register. Da mehrere Bausteine konfiguriert werden sollen, brauchts ein Paar register mehr, so dass Du über die 32Register deines Vorschlages hinausgeschossen bist... Mein Vorschlag an dieser Stelle wäre allerdings tatsächlich eine MCU mit JTAG Schnittstelle zu verwenden. Zusätzlich einen Hard oder SoftwareUART plus SPI-Flash. Während der Entwicklung lässt sich via JTAG debuggen und via UART ( ohne zus. JTAG-Tols und $Software) Eprominhalte transferieren. In der Produktion wird der Eprominhalt dann via JTAG transferiert... Gruß Andreas
Andreas B. wrote: > Hallo Arndt, > > der FPGA/CPLD soll die drei anderen Geräte konfigurieren, das bedeutet, > dass er die Konfigurationsregister dieser drei Geräte beim Start > beschreibt. Diese erste Initialisierung ist fix... also Standardwerte, > mit denen das System lauffähig ist und funktioniert. Hm, also ich glaub mit konfigurieren meinst du etwas anderes als das übliche Konfigurieren eines FPGA. Kann das sein? Du willst interne Register, die Teil des FPGA-Design sind, auf Standard-Werte setzen? Normal bedeutet Konfigurieren eines FPGA, dass der Bitstream, der erst mal die interne Logik überhaupt erst "zusammen baut", irgendwie in den FPGA gelangt. Im einfachsten Fall macht das das FPGA beim Einschalten von alleine aus einem Platform Flash über Serial Master Mode. Wird auch manchmal als Booten bezeichnet. Das was du meinst, ist ja schon eine Kommunikation mit dem fertig gebooteten bzw. konfigurierten FPGA. Meiner Meinung nach ist das aber unnötig, weil man jedes einzelne FlipFlop und jede Block-Ram Speicherstelle über den Bitstream vorbelegen kann. Das kann gleich ins Design einfließen, und wird automatisch nach dem Laden des Bitstream ausgeführt.
Schau dich mal nach Actel FPGAs um. Die brauchen kein externes EPROM für die eigene Konfiguration, da das FPGA selbst in einem Flash Prozess an Stelle der sonst üblichen SRAM Prozesse gefertigt wird. Zusätzlich sind da 1024bit internes Flash-EEPROM für die Konfiguration der anderen Bausteine vorhanden (reicht das?). Gruss Oli
> Hm, also ich glaub mit konfigurieren meinst du etwas anderes als das > übliche Konfigurieren eines FPGA. Kann das sein? Ich meine nicht die Konfiguration des FPGA selber, sondern die der anderen drei Devices. Meiner Meinung sollte es ablaufen: - der FPGA/CPLD bootet nach zuschalten der Vcc. Entweder hat er seine eigene Konfiguration behalten, oder holt sie sich erneut aus einem externen, nicht flüchtigen Speicher. - dann beginnt er die drei externen Devices der Reihe nach zu konfigurieren. Dazu verwendet er 5 Siganle (SCLOCK, SDATA, SLOAD_1, SLOAD_2, SLOAD_3). - SLOAD_1 wird auf LOW gelegt und danach wird begonnen, zuerst die Adressdaten des entsprechenden Registers auf den SDATA Kanal zu legen und dann die entsprechenden Datenbits. - Danach wird SLOAD_1 wieder High gesetzt und SLOAD_2 wird aktiviert )low aktiv) und das Spiel mit Adress- und Datenbits beginnt von Neuen. - So geschieht es dann auch beim dritten Schaltkreis. - So bekommen nach und nach (serial) alle drei Teilnehmer ihre Konfigurationsdaten zugesendet und können dann anhand der Inhalte in ihren Registern anfangen zu arbeiten. - danach werden die 5 Konfigurationskanäle mit 5 Eingängen verknüpft und das serielle Interface wird von einem weiteren FPGA gesteuert bzw. mit Adress- und Datenbits versorgt. @Oli: 1024bit könnten fast reichen. Zwei geräte haben 3 bit Adressen und 11 bit Daten und das eine Gerät hat 4 bit Adressen und mit unterschiedlich egroßen Registern, isgesamt glaube ich 518bit oder sowas. Also könnte hinkommen. Du meinst also, dass sich dieser FPGA selbst konfiguriert und booten kann und dann der 1024bit ROM genutzt werden kann, um die drei Devices nacheinander zu konfigurieren. Ich schau mir das mal an, ob ich dann auch jederzeit sämtliche Parameter, sowohl für die Konfiguration des FPGA, als auch die Daten des 1024bit ROMs ändern kann.. meinetwegen über JTAG. @Andreas: Einen Init-Done gibt es meiner Meinung nach nicht. Wenn das letzte Datenbit eines Registers (definierte Größe und Anzahl von Bits) geschrieben wird, ist die Konfiguration dieses einen Registers austomatisch beendet. Vielen Dank!
Achso, die 3 "Geräte" sind keine FPGAs sondern normale SPI Slaves. Da hab ich viel zu kompliziert gedacht. Naja, du musst im Prinzip nur einen SPI-Master bauen und mit einem Zähler die Adressen und Chip-Selects durchschalten. Die Werte kannst du ja im VHDL gleich als Konstanten angeben. Die brauchen dann höchstens Logik-Zellen, aber keine FlipFlops. Das sollte dann mit einem kleinen Cool-Runner schon funktionieren. Die Konstanten, die per SPI raus geschrieben werden sind dann Teil des Designs....
Die Logikzellen... sind das in den Datenblättern angegebenen Macrocells? Ich habe ja meine Adressbits und meine Datenbits, die ich ausgeben möchte. Diese sind Konstanten... ändern sich also nur in der Entwicklung und ändern sich dann nicht mehr. Ich habe mir nur einen weiteren FPGA als Vorschlag herausgesucht: http://www.actel.com/products/igloonano/default.aspx (weiter unten auf der Seite die Tablle: Product Table) Entweder der AGLN010 im UC36 (3x3mm) package... oder, sollte ich wirklich pro Konfigurationsbit eine Macrocell benötigen, dann der AGLN060 im CS81 (5x5mm) package. Oder ich gehe den Weg und lege die Konfigurationsdaten in dem 1024bit FlashROM ab, sofern es möglich ist. Dann wäre auch die kleinste Variante ausreichend, oder? Der Takt wird mit 80MHz von einem Quarz bereitgestellt und dann auf 40MHz in einem Timinggenerator herabgesetzt. Dieser Takt wird dann den Spartan 3A DSP versorgen und dort erzeuge ich dann den erforderlichen Takt zur Konfiguration der SI Slaves. Er beträgt auf meinem Evaluation Board 5MHz. Diese 5MHz bilden dann gleichzeitig den SCLOCK, mit dem die Daten übertragen werden. Sind 5MHz eine realistische Größe, oder sollte ich es lieber etwas gemächlicher angehen? BESTEN DANK!
Nee, Logikzellen sind keine Makrozellen, jedenfalls nicht 1:1. Bei einem CPLD ist eine Makrozelle ein FlipFlop mit jeder Menge Kombinatorik davor. Beim FPGA gibts dann eher Slices und Slice FlipFlips, die LUTs davor haben. Die Konstanten belegen meines Wissens keine FlipFlops, wenn überhaupt dann Kombinatorik. Du kannst also theoretisch alle FlipFlops/Makrozellen für den SPI-Master verwenden. Am besten wird es sein, du machst dir das VHDL Design und simulierst es, bis es funktioniert und lässt dann beim ISE (bei Xilinx) die Synthese und das Fitting auf den kleinen Coolrunner machen. Dann zeigt der dir an, wieviel Ressourcen belegt sind. Das ist die sichere Variante. So ein Design ist ja schnell zusammen gestellt, das sollte nur 2 Tage incl. Simulation dauern. Dann kannst du immer noch entscheiden, welchen Chip du nimmst. 5MHz sind völlig OK, wenn du ein synchrones Design hast, kannst du den CoolRunner gut und gerne mit 200MHz betreiben.
Christian R. wrote: > So ein > Design ist ja schnell zusammen gestellt, das sollte nur 2 Tage incl. > Simulation dauern. Dann kannst du immer noch entscheiden, welchen Chip > du nimmst. Das habe ich mir schon so gedacht, dass ich erst das Design fertig machen muss. 2 Tage sind sicher machbar für einen erfahrenen VHDL-"Programmierer". Ich aber arbeite mich erst in die Thematik ein.... da wird es sicher eine ganze Weile länger dauern. Aber ich gebe mein Bestes und versuche mal, das hinzubekommen. Habe schon angefangen das Buch VHDL-Synthese zu lesen und nachzuempfinden, nur leider weiß ich seit dem nicht so richtig, wo ich ansetzen soll. Die Designs dort sind verständlich und recht einfach, aber die ganze Sache auf das reale Problem zu projezieren, ist nicht gerade einfach :) Ich danke dir für deine Hilfe! Den anderen natürlich auch! MfG andreas
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.