Home > other >  Always a non-blocking assignment problem in block
Always a non-blocking assignment problem in block

Time:09-15

The following code in the system clock sys_CLK rising along the trigger always block, using non-blocking assignment pay the value of B to A:
 

Always @ (posedge sys_CLK)
A<=B;


If the system clock sys_CLK, between the adjacent two rising along the B value from 0 to 1, that is the last rose along the moment B or 0, and before the next rising edge, has become a 1 B,
Then, in "the next rising along the" time is A value of 0 or 1? Please explain why, don't reply simple 0 or 1, thank you.

CodePudding user response:

Non-blocking assignment will join D flip-flop, so the output the result of lag one clock cycle

CodePudding user response:

reference 1st floor zgl7903 response:
non-blocking assignment will join D flip-flop, so the output will be the result of the lag one clock cycle

Thank you for your reply!
Will be the "last" or "next" rising along the time corresponding to the value of B to join D flip-flop?

CodePudding user response:

https://www.cnblogs.com/chengqi521/p/7920326.html


CodePudding user response:

A rise in value will be sys_CLK along the moments before the value of B,

Non-blocking refers to the A<=B; Behind this statement and the statement is executed at the same time

For example,
Always @ (posedge sys_CLK)
A<=B
C<=A

Non-blocking: C values are not equal to the value of B, but A moment before the clock rising value (because nonblocking was conducted at the same time)
Block: C value is equal to B value

CodePudding user response:

reference 4 floor worldy response:
A value will be sys_CLK rise along the moments before the value of B,

Non-blocking refers to the A<=B; Behind this statement and the statement is executed at the same time

For example,
Always @ (posedge sys_CLK)
A<=B
C<=A

Non-blocking: C values are not equal to the value of B, but A moment before the clock rising value (because nonblocking was conducted at the same time)
Block: C value is equal to B value

Thank you for reply!
"Is the value of A moment before rising clock", so to speak, relative to the system clock signal B sys_CLK if is asynchronous, so my question in the topic, unless B early enough before the clock up along the time into A high level, otherwise, A value is uncertain, because the theoretical: this kind of circumstance has took the value of B, B to become A high level, and then the clock up along the arrived, I understand, right?

CodePudding user response:

The
reference 3 floor zgl7903 response:
https://www.cnblogs.com/chengqi521/p/7920326.html

Although this post is not directly answer the question, but it to explain clearly the concept of blocking the non-blocking, help me to deepen the understanding, thank you moderator!

CodePudding user response:

Say A bit of professional, if B satisfy the setup time and hold time requirements, then A value is the value of B, which is 1

CodePudding user response:

reference 5 floor JSHZP reply:
Quote: refer to 4th floor worldy response:
A value will be sys_CLK rise along the moments before the value of B,

Non-blocking refers to the A<=B; Behind this statement and the statement is executed at the same time

For example,
Always @ (posedge sys_CLK)
A<=B
C<=A

Non-blocking: C values are not equal to the value of B, but A moment before the clock rising value (because nonblocking was conducted at the same time)
Block: C value is equal to B value

Thank you for reply!
"Is the value of A moment before rising clock", so to speak, relative to the system clock signal B sys_CLK if is asynchronous, so my question in the topic, unless B early enough before the clock up along the time into A high level, otherwise, A value is uncertain, because the theoretical: this kind of circumstance has took the value of B, B to become A high level, and then the clock up along the arrived, I understand, right?


Yes, you can see all the time sequence of digital circuit, are required to clock ahead, cable data stability
  • Related