Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

About sequentiality(?) of processes

Status
Not open for further replies.

jedihe

Newbie level 4
Joined
Sep 29, 2005
Messages
5
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,365
Hi, I was talking with a friend about VHDL, and he told me that inside a process, the operation is SEQUENTIAL, he showed me code like this:

Code:
process (...) 
begin
   signal <= "000";
   if clk'event then
      signal <= signal + 1;
   end if;
   if some_flag then
      signal <= 0;
   end if;
end process

The point is: he said the first line inside the process causes some kind of initialization, and then the others get executed... but for me that's not true: we are talking about HARDWARE, and once it gets synthesized, everything works as YOU define it. However, I have some doubt... is my position correct?

Thanks in advance!

jedihe
 

i think wad ur fren mean is the IF statement...

whenever u use the IF statement, then there will b having the priority encoder used.... the first IF statement always hav the highest priority....

hope i am talking about hardware now.... :)

my regards,
sp
 

jedihe,

If we are talking about synthesis, you are correct.

Because <= is used, the first line in the process defines a DEFAULT, not an initialization. And the following lines with <= represent overriding definitions of the signal.

If := were used, logic would need to be created that generates a result equivalent to a sequential execution with delayed results.

As far as I know, asynchronous digital computers are still pretty much research objects. One must remember that conventional computer architecture is CLOCKED LOGIC. Software programming assumes this, even though the granularity of the clocking may be unknown or ignored.

If the process were truly executing sequentially, what is clocking it? And if the process were truly executing sequentially, you would get a signal glitch when the example signal is set to 0 at the beginning of the process.

Finally, as a counterexample to "it's sequential", the following code represents a shift register, not a bit propagator:

Code:
process (clk)
begin
  if rising_edge(clk) then
    s3 <= s4;
    s2 <= s3;
    s1 <= s2;
    s0 <= s1;
  end if;
end process;
 

Thanks a lot, I will talk to him and tell you what happen...

jedihe
 

it is based on which signals ur declaring in the process ( ) statement also... if ur logic is CLOCKed then u need to include only clock signal in the process list and the hardware will eb different...
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top