Ist dieser Code sauber?

OP #4471272
Lesenswert?

Hallo

Ich habe in einem Design folgenden Code angetroffe:
1
   power_up: process(clk, reset) begin
2
      if reset = '1' then
3
         reset_sm_ub <= '1';
4
      elsif clk'EVENT and clk = '1' then
5
      if i_pf50_n = '1' and vcbank = '1' and vpos_f = '1' then
6
            reset_sm_ub <= '0';
7
         elsif vpos_f = '0' then
8
            reset_sm_ub <= '1';  
9
         end if;
10
      end if;
11
   end process power_up;

Ist mein Gefühl richtig, dass dieser Code unsauber ist, denn welchen 
Wert hat reset_sm_ub, wenn z.B. vcbank = '0'? Dieser Zustand wird in der 
If-else Abfrage nicht behandelt.

Was ist eure Meinung?

Gruss
Reto
Gast #4471323
Lesenswert?

Reto B. schrieb:
> if reset = '1' then

Wenn reset deassertion synchron zum Takt ist, ist es OK

>       elsif clk'EVENT and clk = '1' then
>       if i_pf50_n = '1' and vcbank = '1' and vpos_f = '1' then

Wenn i_pf50_n, vcbank und vpos_f taktsynchron sind und sich und eine 
definierte Verzoegerung zum Takt haben (constraints !) ist das auch OK.
Wenn sie jedoch asynchron sind (geht aus dem Code nicht hervor), wirst 
Du viel "Freude" beim debuggen haben (also dann besser ensynchrisieren) 
...

Viele Gruesse,
Tschaebe
Gast #4471404
Lesenswert?

Dem Code kann man es ohnehin oft nicht ansehen, ob er ok ist. Die 
Funktion erschließt sich ja nicht eindeutig und DIE ist massgeblich. Es 
kann daher durchaus sein, dass dort oben der ELSE-Zweig fehlt.

Kann aber auch sein, dass das so gewollt ist. Um das zu dokumentieren, 
schreibe ich den immer hin und kommentiere ihn weg.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren