[vhdl] assert, report en severity

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Tommienator
  • Registratie: Maart 2011
  • Laatst online: 10-05-2024
Ik heb een vraagje ivm een stukje code voor een testbench dat ik aan het schrijven ben.

Hier is het stukje code waar ik het over heb:

code:
1
2
3
4
5
6
7
8
9
    for i in 1 to 4 loop        -- de 4 states tijd, datum, alarm en timer doorlopen
    b_left <= '1';
    wait for 1 ms;
    b_left <= '0';
    assert leds'event;
    report "leds is niet van toestand veranderd"
    severity error;
    wait for 10 ms;
    end loop;


Nu, telkens als b_left ingedrukt wordt (de reden waarom hij zo lang ingedrukt wordt is vanwege debouncers en onepulse modules) zou het FSM dat ik geschreven heb van toestand moeten veranderen en veranderen de leds (vector (7 downto 0)) ook mee om aan te geven in welke toestand het FSM zit.

Nu, switchen doet hij perfect.. Maar ik krijg iedere keer (bij elke toestandswitch) error mee dat leds niet van toestand is veranderd... Terwijl ik daadwerkelijk op mijn testbench zie dat hij wel van toestand mee veranderd is.

normaal gezien zou leds'event toch het correcte moeten zijn om een switch van leds mee te geven? Of ben ik hier de mist ingegaan?

"Small minds discuss persons. Average minds discuss events. Great minds discuss ideas. Really great minds discuss mathematics."


Acties:
  • 0 Henk 'm!

  • WK100
  • Registratie: Februari 2011
  • Laatst online: 07:33
Nee. Fout.

[ Voor 107% gewijzigd door WK100 op 06-12-2015 18:47 ]


Acties:
  • 0 Henk 'm!

  • svenvv2
  • Registratie: April 2010
  • Laatst online: 04-10 18:32
WK100 schreef op zondag 06 december 2015 @ 18:25:
..
Maar wat ik OOK zie is dat er bij de tweede 'if' statement (b_left <= '0';) b_left groter of gelijk aan 0 moet zijn om de error te triggeren. Dus als ie 1 is triggert de code zowel de ledswitch als de foutmelding!

Dit is wat ik me bedenk. Ik kan het fout hebben hoor, maar dit lijkt mij logisch.
Die "b_left <= '0';" betekent in vhdl zoiets als 'maak uitgang/signaal' b_left laag. (foo = 0;)
een 'if' statement in vhdl heeft meer iets weg van "if foo = '1' then [code] end if;"

Echt helpen met dit probleem kan ik met mijn half jaartje schools vhdl echter niet :(

Acties:
  • 0 Henk 'm!

  • WK100
  • Registratie: Februari 2011
  • Laatst online: 07:33
svenvv2 schreef op zondag 06 december 2015 @ 18:37:
[...]

Die "b_left <= '0';" betekent in vhdl zoiets als 'maak uitgang/signaal' b_left laag. (foo = 0;)
een 'if' statement in vhdl heeft meer iets weg van "if foo = '1' then [code] end if;"

Echt helpen met dit probleem kan ik met mijn half jaartje schools vhdl echter niet :(
Ah kijk dan snap ik het weer. Vond de code al wat raar.. Het is dus zoeken in de 'assert' statement.
Kun je deze eens veranderen in
code:
1
 assert leds'event = true;
om eens even wat uit te proberen? Ik lees dat er een boolean aan de 'assert' vast zit. Als dit het niet is weet ik het ook niet meer.

[ Voor 17% gewijzigd door WK100 op 06-12-2015 18:54 ]


Acties:
  • 0 Henk 'm!

  • Sphere-
  • Registratie: November 2003
  • Laatst online: 28-08 19:53
Het event is maar op een bepaald moment true. Een delta delay later al niet meer. Hier gaat het dus waarschijnlijk mis. Is het niet handiger om gewoon op een waarde te checken, eventueel in combinatie met het onthouden van de vorige waarde in een variable?

Verder evalueer je de assertie direct nadat je de waarde 0 in b_left gooit. De eerstvolgende mogelijkheid dat de waarde van leds verandert is na 1 delta delay.

[ Voor 24% gewijzigd door Sphere- op 07-12-2015 15:16 ]


Acties:
  • 0 Henk 'm!

  • Tommienator
  • Registratie: Maart 2011
  • Laatst online: 10-05-2024
inderdaad, vandaag naar een prof hiermee geweest.. Het was inderdaad een timinissue.
Kan beter veranderlijke maken (7 downto 0) en dan die op een bepaald tijdstip inladen om te zien of het op die moment klopt! Event is inderdaad echt tijdsspecifiek (had er geen rekening mee gehouden) :).

"Small minds discuss persons. Average minds discuss events. Great minds discuss ideas. Really great minds discuss mathematics."

Pagina: 1