www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Verhalten Sim vs Post Fit Sim


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

Bewertung
0 lesenswert
nicht lesenswert
Ich bins schon wieder g,

kann mir jemand sagen warum dieser code:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
 
entity QuadDecoder is
    Port ( CLK      : in std_logic;
           A      : in std_logic;
           B      : in std_logic;
        RST      : in std_logic;
           UP_DOWN  : out std_logic;
           C_ENABLE  : out std_logic;
           ERR      : out std_logic);
end QuadDecoder;
 
architecture VERH of QuadDecoder is
 
signal RST_SIG,A_OLD, B_OLD: std_logic;
 
begin

  QDecoder:  process(CLK, RST, A, B)
  variable DecPattern: std_logic_vector(3 downto 0);
  begin
    if RST = '1' then
      C_ENABLE  <= '0';
      UP_DOWN   <= '0';
      ERR    <= '0';
      A_OLD    <= '0';
      B_OLD    <= '0';
      RST_SIG  <= '1';
    
    elsif CLK = '1' and CLK'event then
      if RST_SIG = '1' and A = '0' and B = '0' then
        RST_SIG <= '0';  
      end if;
        
      if RST_SIG = '0' then
        DecPattern := A & B & A_OLD & B_OLD;
        A_OLD <= A;
        B_OLD <= B;
    
        case DecPattern is
          when "0000" => UP_DOWN <= '0'; C_ENABLE <= '0'; ERR <= '0';
          when "0001" => UP_DOWN <= '1'; C_ENABLE <= '1'; ERR <= '0';
          when "0010" => UP_DOWN <= '0'; C_ENABLE <= '1'; ERR <= '0';
          when "0011" => UP_DOWN <= '0'; C_ENABLE <= '0'; ERR <= '1';
          when "0100" => UP_DOWN <= '0'; C_ENABLE <= '1'; ERR <= '0';
          when "0101" => UP_DOWN <= '0'; C_ENABLE <= '0'; ERR <= '0';
          when "0110" => UP_DOWN <= '1'; C_ENABLE <= '0'; ERR <= '1';
          when "0111" => UP_DOWN <= '1'; C_ENABLE <= '1'; ERR <= '0';
          when "1000" => UP_DOWN <= '1'; C_ENABLE <= '1'; ERR <= '0';
          when "1001" => UP_DOWN <= '0'; C_ENABLE <= '0'; ERR <= '1';
          when "1010" => UP_DOWN <= '0'; C_ENABLE <= '0'; ERR <= '0';
          when "1011" => UP_DOWN <= '0'; C_ENABLE <= '1'; ERR <= '0';
          when "1100" => UP_DOWN <= '0'; C_ENABLE <= '0'; ERR <= '1';
          when "1101" => UP_DOWN <= '0'; C_ENABLE <= '1'; ERR <= '0';
          when "1110" => UP_DOWN <= '1'; C_ENABLE <= '1'; ERR <= '0';
          when "1111" => UP_DOWN <= '0'; C_ENABLE <= '0'; ERR <= '0';
          when others => null;
        end case;
      end if;
    end if;
  end process QDecoder;
 
end VERH;

nicht korrekt synthetisiert wird ? Verhaltenssimulation und Post Fit 
Simulation weichen voneinander ab -> Siehe Bildanhang

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ AlexW (Gast)

>Dateianhang: sim.JPG (70,4 KB, 21 Downloads)

Bildformate

>kann mir jemand sagen warum dieser code:

Warum nimmst du nicht einfach den Code so wie er ist aus dem Wiki?

Drehgeber

Was soll die Verschlimmbesserung?

MFG
Falk

Autor: AlexW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich möchte bei einem reset definiert auf nullpegel an A und B Eingang 
warten bevor der c_enable wieder freigegeben wird. also eine Erweiterung 
:-) warum weichen denn verhaltens und post fit sim voneinander ab ?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ AlexW (Gast)

>ich möchte bei einem reset definiert auf nullpegel an A und B Eingang
>warten bevor der c_enable wieder freigegeben wird. also eine Erweiterung
>:-)

Deren Sinn sich mir nicht erschliesst und die so wie du es geschrieben 
hast nicht erreicht wird.

MFG
Falk

Autor: AlexW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das es wohl so irgendwie falsch ist weiss ich schon. aber was ich wissen 
möchte: warum weicht die post fit sim von der verhaltens sim ab ?!

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ AlexW (Gast)

>das es wohl so irgendwie falsch ist weiss ich schon. aber was ich wissen
>möchte: warum weicht die post fit sim von der verhaltens sim ab ?!

Keine Ahnung. Kan sein dass interne Signale undefineirt sind, weshalb 
das rote Ausgangssignale auftauchen. Modelsim müsste Warungen ausgeben, 
die muss man analysieren.

MFG
Falk

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.