www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Lattice ispLever/Aldec active-HDL Timing Simulation ?


Autor: Heiko B. (2deep)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe probleme mit dem richtigem Timing in meinem Design und leider 
wenig bis keine Erfahrung mit Timing Simulationen. Zwar bekomme ich mein 
Design timing-simuliert aber kann mit dem Report leider nicht viel 
Anfangen.

Zum einen wollte ich fragen ob mir jemand ein gutes Buch oder Tutorial 
oder ähnliches zu diesem Thema empfehlen kann?

Zum anderen wollte ich mein Problem darstellen, vielleicht kann mir 
jemand direkt weiterhelfen.

Also:
In der Grafik kann man das Verhalten meines Designs innerhalb der 
Timing-Simulation erkennen. Wie man sieht ändern sich die 
Zählerstände/Ausgaben, allerdings sollten diese konsistent auf einem 
ermittelten Wert bleiben.
Diese Fehler tritt auch nur in der Timing-Simulation auf, in der 
funktionalen/logik Simulation tut das Design genau was es soll.

Hier noch ein Auszug aus meinem Code, folgender Prozess ermittelt z.B. 
den Wert für "totalPix" :
process (analysisClk, analysisReset, analysisHSync)
    variable var_analysisHSync  : std_logic;
    variable pixCounter      : std_logic_vector (11 downto 0);
    variable var_enableCtr    : std_logic; 
    variable var_oldEnableCtr   : std_logic; 
    variable ctrStarted      : std_logic;
  
  begin
    
    -- Rücksetzen der Variablen und Signale wenn Reset = '1'
    if analysisReset = '1' then
      tempTotalPix    <= (others=> '0');
      pixCounter      := b"000000000000";
      var_analysisHSync  := '0';
      internTotalPix    <= (others => '0');
      var_enableCtr     := '0';
      var_oldEnableCtr  := '0';  
      ctrStarted      := '0';
    -- erhöht pixCounter um "1" solange kein VSync
    elsif analysisClk = '1' and analysisClk'event then
      if analysisHSync = '1' and var_analysisHSync= '0' and ctrStarted = '0' then  
        var_enableCtr  := '1';
        ctrStarted    := '1';
      elsif analysisHsync = '1' and var_analysisHSync = '0' and ctrStarted= '1' then
        var_enableCtr  := '0';
        ctrStarted    := '0';
      end if;
      
      if var_enableCtr = '1' then
        pixCounter      := pixCounter +1;
        internTotalPix    <= pixCounter;
        -- wenn H-Sync von 1 auf 0 wechselt(Zeilenende) wird Zählerstand in tempTotalPix übernommen
        -- und der Pixel-Zähler wird zurückgesetzt
      --elsif analysisHSync = '0' and var_analysisHSync = '1' then 
      elsif var_enableCtr = '0' and var_oldEnableCtr = '1' then
        tempTotalPix    <= internTotalPix;
        pixCounter      := b"000000000000";
      end if;

Ein weiterer Prozess sorgt dafür das der Wert des Signals "tempTotalPix" 
erst nach einer definierten Anzahl von "V-Sync's"(Ende des Frames) an 
den Out-Port weiter gereicht wird.

Für jede Hilfe wäre ich sehr dankbar ebenso wie für entsprechende 
Buch-Empfehlungen :)

viele Grüße

Heiko

Autor: Lupinus Digitalus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Heiko,

versuch doch in der Timing Simulation auch die Enable Signale aus deinem 
Prozess mit einzubinden. Auch wenn diese in der Timing Simulation ab und 
zu etwas kryptische Namen haben, findet man diese in den meisten Fällen 
wieder. Um die Signale hinzuzufügen gehst Du in die Structure Ansicht 
des Aldec Designbrowsers und wählst die enstprechende Hierarchie Stufe 
aus.

Dann kannst Du die Signale wie gewohnt in das Simulationsfenster ziehen.

Vergiss nicht, anschliessend ein restart und run 10 us in das 
Konsolenfenster einzugeben.

Dadurch siehst Du etwas besser, was in deinem Design verkeht läuft.

Viele Grüsse

Lupi

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.