vhdl - Error (10818): Can't infer register for ... at ... because it does not hold its value outside the clock edge -


I am trying to verify the four buttons when one of them is pushed, let me check it It is necessary that compatible leaders are burnt or not. Therefore, I gave the code, where a process is checked which button is pressed and compares the values ​​with the values ​​of the lead (published or not). This problem occurs when I want to increase the variable that controls the player's hit (successes).

Remember that the "ectorus" is an sign type std_logic_vector 3 down from 0)

  process (pb0, pb1, pb2, pb3) Variable erro_int: STD_LOGIC; Then start (clk_game = '0') then erro_int: = '0'; If moving_ege (pb0) then if pb0 / = lead (0) then erro_int: = '1'; end if; Elsf RID_Age (PB1) then if PB1 / = Lead (1) then Arrow_Int: = '1'; end if; Elsf RID_Age (PB2) then if PB2 / = Lead (2) then Arrow_Int: = '1'; end if; Elsf RID_Age (PB3) then if PB3 / = Lead (3) then Arrow_Int: = '1'; end if; And Actors & lt; = Acertos + 1; end if; end if; end process;    

indicates the exact same error case. Generally you are encouraged to use the vendor as a resource for their error message.

In the case of error here, it has been expressed that the acertos assignment is not happening inside a conditional assignment statement that is used as a clock. is.

However this is probably not the end of potential problems, which will happen to you with the process shown by some design specification. / P>

< P> See bounce filtered, where the first scope detects that it is drawn normally, the momentary switch connecting to the ground switch input. The issue is a bounce tip. Web page talks about some solutions.

D-bounce will allow you to use your button input as clocks, but there are other problems with your process. For example some vendors accept multiple watches in a single process statement, your design specification can not be portable.

There is no recognized sequential phenomenon that is creating a storage entry that is the same storage element ( erro_int ). Since there is no way of timing of any simulation since the statements of no-dependencies, then if you can expect statements without any dependency, then possibly only can be expressed as the previous hardware.

You can add all the push buttons to a signal:

  button_press & lt; = No (not pb0 and not pb1 and not pb2 and no bp3);   

When a button is pressed, any edge can be caused when a button is pressed.

If you call it UL-bounce, it can be used as the only watch.

Let's assume this is de-bounced. Setting a default value for erro_out will give you a process that looks like this:

  process (button_press) variable erro_int: std_logic; Then start (clk_game = '0') then erro_int: = '0'; If moving_ege (button_press) then if pb0 / = lead (0) or pb1 / = (1) or pb1 / = (2) or pb3 / = pb3 then erro_int: = '1'; end if; Acres and LT; = AERERTOS + 1; end if; end process;   

(And I saw the translation of Acresos - not a valid hit, hit, I take it, this is a game.)

It still does not solve The issue is that erro_int is a local variable if it is used elsewhere then it wants to be declared as an indication if you change this process to: < Pre> ... signal erro_int: std_logic; Defined an architecture defined as declarative item ... process (button_press) if (clk_game = '0') then erro_int

You can use it externally because it works that there is only one driver in a process for a signal and the last assignment is present in the current simulation time which is effective (There is only one assignment in the current simulation time).

And of course if you use the clock for day bounce, then you can use it to enable button_press if it only gets to the previous clock gate Has been done.

Comments

Popular posts from this blog

ios - Adding an SKSpriteNode to SKScene from a child SKSpriteNode -

Matlab transpose a table vector -

c# - Textbox not clickable but editable -