Quartus VHDL error 10821

OP Persönliche Seite #1550515
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 ?
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite
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:
1
CB2: inout std_logic;
Denn innerhalb eines FPGAs gibt es kein Tristate:
1
    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:
1
    DB<=(OTHERS=>'Z');
OP Persönliche Seite
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.
Moderator (Firma: Titel) Persönliche Seite
Oh, jetzt sehe ich das erst...
Das ist eine böse Beschreibung:
1
  if reset='0' then bufPA<=(others=>'0');
2
  elsif ...
3
  :
4
       if e'event and  e='0' then  bufPA(i)<=DB(i); end if;  
5
  :
6
       if e'event and  e='1' then  bufPA(i)<=PA(i); DB_PA(i)<=PA(i); end if;
7
  :
8
  end if;
9
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:
1
  if (reset='0') or (mpu_readA='1') then irqaf1_1<='0'; irqaf1_2<='0';
2
  elsif CRA(5)='0' and CRA(4)='0' then   -- the latch for the CA2 is from high to low
3
     if CA2'event and CA2='0' then irqaf2_1<='1'; end if;
4
  elsif CRA(5)='0' and CRA(4)='1' then   -- the latch for the CA2 is from low to high
5
     if CA2'event and CA2='1' then irqaf2_2<='1'; end if;
6
  end if;
Nachher:
1
  if (reset='0') or (mpu_readA='1') then irqaf1_1<='0'; irqaf1_2<='0';
2
  elsif CRA(5)='0' and CRA(4)='0' then   -- the latch for the CA2 is from high to low
3
     if CA2='0' then irqaf2_1<='1'; end if;
4
  elsif CRA(5)='0' and CRA(4)='1' then   -- the latch for the CA2 is from low to high
5
     if CA2='1' then irqaf2_2<='1'; end if;
6
  end if;
Dann passt auch wieder der Kommentar:
-- the latch for the CA2

Aber "schön" geht anders...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.