www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Quartus VHDL error 10821


Autor: Thomas R. (tinman) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Da mein lieblingspinball langsam den geist aufgibt wollte teile davon in 
einem FPGA implementieren. Da der soundboard sehr einfach aufgebaut ist 
(6800/6821/ROM/RAM/DAC) fing ich erst damit.

Mit dem 6800/RAM/ROM ging schnell, war fehlt ist 6821 i/o. Beim 
opencores habe die IC6821.vhd gefunden - die den MC6821 abbildet. 
Allerdings bekomme ich es nicht zum laufen, ob Quartus oder ISE jeden 
menge fehler werden gemeldet. Da ich mich auf Altera festgelegt habe 
hier die Quartus error msg :

"HDL error at IC6821.vhd(305): can't infer register for "CB2" because 
its behavior does not match any supported register model"

Der author schrieb "finished the coding and some basing simulation using 
the QUARTUS" also sollte es läufähig sein. Kann bitte jemand blick drauf 
werfen ?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast wahrscheinlich das Problem, dass du das Ding mit den anderen 
Komponenten zusammen in 1 FPGA packen willst?
Dann geht der inout-Port nicht:
CB2: inout std_logic;
Denn innerhalb eines FPGAs gibt es kein Tristate:
    CB2<='Z';
Wenn das nur diesen Port betrifft, sollte das Umschreiben nicht 
allzuviel Aufwand sein. Mich wundert in dem Fall aber, dass das nicht 
auch schiefgeht:
    DB<=(OTHERS=>'Z');

Autor: Thomas R. (tinman) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Du hast wahrscheinlich das Problem, dass du das Ding mit den anderen
> Komponenten zusammen in 1 FPGA packen willst?

ja im endergebniss schon, wollte erst mal sehen ob ich es überhaupt 
benutzen kann.

Anscheinend hat Quartus 9 probleme mit z.b. "bufPB(i)<=PB(i); 
DB_PB(i)<=PB(i)", mit Quartus 5 funktioniert ohne probleme.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, jetzt sehe ich das erst...
Das ist eine böse Beschreibung:
  if reset='0' then bufPA<=(others=>'0');
  elsif ...
  :
       if e'event and  e='0' then  bufPA(i)<=DB(i); end if;  
  :
       if e'event and  e='1' then  bufPA(i)<=PA(i); DB_PA(i)<=PA(i); end if;
  :
  end if;
END PROCESS;
Mit diesen 2 Zeilen werden FF beschrieben, die sowohl mit der steigenden 
wie auch der fallenden Flanke Daten übernehmen können. Sowas gibt es 
bestenfalls in den IO-Zellen eines FPGAs (DDR-Interface). Und das ist 
ziemlich durchgängig so beschreiben...  :-o

Probier das doch mal, indem du alle 'event rausnimmst, und alles über 
Latches abhandelst.
Z.B. vorher:
  if (reset='0') or (mpu_readA='1') then irqaf1_1<='0'; irqaf1_2<='0';
  elsif CRA(5)='0' and CRA(4)='0' then   -- the latch for the CA2 is from high to low
     if CA2'event and CA2='0' then irqaf2_1<='1'; end if;
  elsif CRA(5)='0' and CRA(4)='1' then   -- the latch for the CA2 is from low to high
     if CA2'event and CA2='1' then irqaf2_2<='1'; end if;
  end if;
Nachher:
  if (reset='0') or (mpu_readA='1') then irqaf1_1<='0'; irqaf1_2<='0';
  elsif CRA(5)='0' and CRA(4)='0' then   -- the latch for the CA2 is from high to low
     if CA2='0' then irqaf2_1<='1'; end if;
  elsif CRA(5)='0' and CRA(4)='1' then   -- the latch for the CA2 is from low to high
     if CA2='1' then irqaf2_2<='1'; end if;
  end if;
Dann passt auch wieder der Kommentar:
-- the latch for the CA2

Aber "schön" geht anders...

Autor: Thomas R. (tinman) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja, auf die art geht.

Es werden jetzt 236 statt 262 LE benötigt, man sieht auch im RTL 
fehlende FFs. Da Quartus 5 (die web edition) kein Modelsim hat muss ich 
das anders prüfen/vergleichen. Ich denke datasheet vom MC6821 wird mir 
da schon weiterhelfen.

Danke für deine hilfe.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.