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


von AlexW (Gast)


Angehängte Dateien:

Lesenswert?

Ich bins schon wieder g,

kann mir jemand sagen warum dieser code:
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
 
4
entity QuadDecoder is
5
    Port ( CLK      : in std_logic;
6
           A      : in std_logic;
7
           B      : in std_logic;
8
        RST      : in std_logic;
9
           UP_DOWN  : out std_logic;
10
           C_ENABLE  : out std_logic;
11
           ERR      : out std_logic);
12
end QuadDecoder;
13
 
14
architecture VERH of QuadDecoder is
15
 
16
signal RST_SIG,A_OLD, B_OLD: std_logic;
17
 
18
begin
19
20
  QDecoder:  process(CLK, RST, A, B)
21
  variable DecPattern: std_logic_vector(3 downto 0);
22
  begin
23
    if RST = '1' then
24
      C_ENABLE  <= '0';
25
      UP_DOWN   <= '0';
26
      ERR    <= '0';
27
      A_OLD    <= '0';
28
      B_OLD    <= '0';
29
      RST_SIG  <= '1';
30
    
31
    elsif CLK = '1' and CLK'event then
32
      if RST_SIG = '1' and A = '0' and B = '0' then
33
        RST_SIG <= '0';  
34
      end if;
35
        
36
      if RST_SIG = '0' then
37
        DecPattern := A & B & A_OLD & B_OLD;
38
        A_OLD <= A;
39
        B_OLD <= B;
40
    
41
        case DecPattern is
42
          when "0000" => UP_DOWN <= '0'; C_ENABLE <= '0'; ERR <= '0';
43
          when "0001" => UP_DOWN <= '1'; C_ENABLE <= '1'; ERR <= '0';
44
          when "0010" => UP_DOWN <= '0'; C_ENABLE <= '1'; ERR <= '0';
45
          when "0011" => UP_DOWN <= '0'; C_ENABLE <= '0'; ERR <= '1';
46
          when "0100" => UP_DOWN <= '0'; C_ENABLE <= '1'; ERR <= '0';
47
          when "0101" => UP_DOWN <= '0'; C_ENABLE <= '0'; ERR <= '0';
48
          when "0110" => UP_DOWN <= '1'; C_ENABLE <= '0'; ERR <= '1';
49
          when "0111" => UP_DOWN <= '1'; C_ENABLE <= '1'; ERR <= '0';
50
          when "1000" => UP_DOWN <= '1'; C_ENABLE <= '1'; ERR <= '0';
51
          when "1001" => UP_DOWN <= '0'; C_ENABLE <= '0'; ERR <= '1';
52
          when "1010" => UP_DOWN <= '0'; C_ENABLE <= '0'; ERR <= '0';
53
          when "1011" => UP_DOWN <= '0'; C_ENABLE <= '1'; ERR <= '0';
54
          when "1100" => UP_DOWN <= '0'; C_ENABLE <= '0'; ERR <= '1';
55
          when "1101" => UP_DOWN <= '0'; C_ENABLE <= '1'; ERR <= '0';
56
          when "1110" => UP_DOWN <= '1'; C_ENABLE <= '1'; ERR <= '0';
57
          when "1111" => UP_DOWN <= '0'; C_ENABLE <= '0'; ERR <= '0';
58
          when others => null;
59
        end case;
60
      end if;
61
    end if;
62
  end process QDecoder;
63
 
64
end VERH;

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

von Falk B. (falk)


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

von AlexW (Gast)


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 ?

von Falk B. (falk)


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

von AlexW (Gast)


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 ?!

von Falk B. (falk)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.