Forum: FPGA, VHDL & Co. 8-bit Binärcode auf 7-Segmentanzeige anzeigen


von PSD (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich muss in einem Projekt eine 8-bit Binärzahl auf 4 7-Segmentanzeigen 
als Ziffern anzeigen lassen. Ich habe einen Code geschrieben, der das 
(meiner Meinung nach...)eigendlich tun sollte, ich bekomme aber vom ISE 
WEB-PACK 12.2 folgende Fehlermeldung:

INTERNAL_ERROR:Xst:cmain.c:3483:1.56.16.1 -  Process will terminate. For 
technical support on this issue, please open a WebCase with this project 
attached at http://www.xilinx.com/support.

Zur Funktion:ich frage acht Schalter ab und speichere deren Wert in 
DATA. Danach wird DATA in ein Integer umgewandelt und entsprechend 
bearbeitet, so dass sich daraus die vier Ziffern ergeben.
Meine Ideen gehen mir langsam aus, aber vielleicht könnt Ihr mal über 
den Quelltext schauen, vielleicht habe ich ja irgendwas übersehen bzw. 
der Fehlerteufel hat sich bei mir eingeschlichen...
Vielen Dank schon mal im vorraus.
Philip

Achso, programmiert werden soll ein Spartan 3E-100 FPGA

von Alexander S. (esko) Benutzerseite


Lesenswert?

PSD schrieb:
> eine 8-bit Binärzahl auf 4 7-Segmentanzeigen als Ziffern anzeigen lassen.
Mir würden da 3 7-Segmentanzeigen reichen...

von PSD (Gast)


Lesenswert?

Es müssen leider vier sein(sind drei Ziffern plus ein Minuszeichen). Das 
ist für einen Temperatursensor, der von ca. -100 bis +120°C die 
Temperatur anzeigen soll. Ich denke aber nicht, dass die Anzahl der 
verwendeten Ziffern der Grund für die Fehlermeldung ist...

von PittyJ (Gast)


Lesenswert?

TEMP_10 <= TEMP / 10;

Du hast einen FPGA, der teilen kann?

Ich muss die Division mühsam nachstellen, z.B. mit dem Algorithmus von 
Lothar Miller:
http://www.lothar-miller.de/s9y/archives/29-Division-in-VHDL.html

von abc (Gast)


Lesenswert?

Keine Ahnung was xst damit macht, quartus synthetisiert Divisionen 
problemlos, auch mit nicht konstanten Werten (integer x / y)

Gibt eventuell schlechte Timings (falls ich mich richtig erinnere warens 
~16MHz für einen 16 Bit durch 8 Bit Dividierer auf einem Cyclone 2), 
geht aber für den Anfang.

Klar macht was sequentielles hier mehr Sinn, aber ein Prozessabsturz 
deswegen....

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

abc schrieb:
> Gibt eventuell schlechte Timings
Und zudem braucht eine kombinatorische Division eine Unmenge 
Ressourcen...

Alexander Schmidt schrieb:
> Mir würden da 3 7-Segmentanzeigen reichen...
Und ich würde das mit einer Tabelle ganz ohne Division machen:
http://www.lothar-miller.de/s9y/archives/33-Byte-nach-BCD.html

von PSD (Gast)


Lesenswert?

Problem gelöst. Ich hab es mit der Tabelle gemacht und es funktioniert.
Vielen Dank nochmal für die Tip.
Gruß
Philip

von abc (Gast)


Lesenswert?

>> Und zudem braucht eine kombinatorische Division eine Unmenge
>> Ressourcen...

Unmenge... bei 8 Bit durch eine Konstante dürfte die Zahl der benötigten 
LUTs sehr begrenzt sein. Vielleicht 200-300 ... fürs experimentieren 
jedenfalls in Ordnung und einen Absturz rechtfertigt das in meinen Augen 
keinesfalls.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

abc schrieb:
> und einen Absturz rechtfertigt das in meinen Augen keinesfalls.
Ob der Absturz von irgendeiner Division kommt, ist m.E. nicht geklärt...

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
Noch kein Account? Hier anmelden.