mikrocontroller.net

Forum: FPGA, VHDL & Co. mixed VHDL und Verilog


Autor: Joerg (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich vermute, dass mein Simulationswerkzeug (Xilinx ISE 8.2.) einen Bug
hat, und inout Ports nicht richtigt handhabt.

Der Beispielcode:

In Verilog geschriebenes modul "Test" hat inout-port "sig1" uns
setzt diesen auf 'Z'. Testbench (VHDL) drumherum setzt eben dieses
Signal auf '1', aber in "Test" kommt das nicht an.


Mache ich etwas falsch, oder ist es mein Werkzeug?

Autor: Axel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich bin wie gesagt schon einige Zeit nicht mehr am Programmieren,
aber sig1 => sig1 sieht mir sehr falsch aus. Portpin kann doch nicht
gleich Signal sein oder?

Autor: Jürgen Schuhmacher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne, das ist ja nur die Portzuweisung, wenngleich ich ebenfalls der
Ansicht bin, daß eine Zuweisung dieser Art nur verwirrt: In-zuweisungen
sollten sich von Out-zuweisungen in der Pfeilrichtung unterschieden. Das
tut VHDL aber nicht - ein Umstand den ich schon vor über 10 Jahren
angemeckert habe. Aber wer hört schon auf mich ...

Diese Zeile ist also ok. Aber das Submodule macht so keinen Sinn:
Sicher sollte erst da interne Signal gesetzt, dann dem nach aussen
gehenden zugewiesen werden. Wenn es Dir aber um das wire geht, hast Du
im Modelsim gfs das faslche Signal genommen: Man sollte immer zusehen,
daß signale und port pins  NICHT denselben Namen haben. Das ist sonst
nicht nur nutzlose Info, sondern noch verwechslungsgefährdend.

Daher nochmal anhand von 3 Beispielen für Top-SubModuel und Signal:

Port-Pins immer so deklarieren, daß klar wird, was dieser pin in diesem
Modul macht (IO), z:B.  "sram_data_io" , "i2C_adr_in" oder
"strt_module_in" (IO)

Die korespondieren Signale in den Top- oder Submodulen dann kohärent
oder komplmentät- je nach Sinn, hier also
"sram_data_out", "i2c_adr_make" oder "start_module".

Die verbindenen Signal immer so, daß erkennbar ist, von wo das Signal
wohin läuft, also
"s_ram_bus" (bidirketional) "adr_i2ctoRom" (vom I2C-Controller zum
ROM) und "CTRL2MOD" also Startsignal vom Controller zum Modul.

Autor: Jürgen Schuhmacher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
über die obigen Rechtschreipfehlä bitte hinwegsähen ...

Autor: Joerg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das die Signalbenennung so nicht richtig Sinn macht gebe ich gerne zu.

Ich wollte nur moeglichst kurzen Code haben, bei dem mein Problem,
auftaucht. Konkret also, dass das Top-Modul sig1 auch '1' setzt, das
aber im Sub-Modul nie ankommt.

Ich habe keine Erfahrung mit Verilog, moechte aber ein DDR-RAM Model
benutzen... und das ist dummerweise in Verilog.

Ich habe mir das Modell jetzt so umgepatched, dass es nur reine "in"
und "out" ports benutzt, und niemals "inout", da "inout"
(scheinbar) nicht funktioniert.


Und das problem tritt schon bei dem kleinen Beispielcode oben auf....


  j.

Autor: Jürgen Schuhmacher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sende mal den ModelSim output. Dann mal "assign   sig1 = 1'bZ;" raus.
Und nenne Port und Signal abweichend, damit man beide unterscheiden
kann.

Autor: Joerg (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Habe nur den Simulator von Xilinx ISE.

Screenshot anbei. Man sieht, dass das interne Signal weiter auf 'Z'
bleibt, obwohl ich erwarten wuerde dass es auf '1' geht.

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.