Guest
Trying to get my head around FPGAs after 40 years of 2GLs. I can't
seem to find a clear exposition of the following, would appreciate if
someone could confirm or clarify the following assumption:
I have the following Verilog code say:
always @ (posedge clk)
begin
do 1
do 2
do 3
end
assign outA = wireA & wireB
assign outB = wireC & wireD
always @ (posedgeclk)
begin
do 4
do 5
end
Is the following correct?
1, 2 and 3 are done (more or less) in a sequential manner, ie. the
result of 1 will be present when 2 is performed. Hence, statement
order is important here.
4 and 5 will be done using their own gate resources, clocked "more or
less" in parallel with 1,2,3. However, presumably assuming any sort of
time alignment between the results of the two always blocks would be
risky at best (explicit synchronisation required).
For the assign statements, does clocking pay a part, or do these
statements simply run at gate delay speed? Or is the answer
device-dependent?
seem to find a clear exposition of the following, would appreciate if
someone could confirm or clarify the following assumption:
I have the following Verilog code say:
always @ (posedge clk)
begin
do 1
do 2
do 3
end
assign outA = wireA & wireB
assign outB = wireC & wireD
always @ (posedgeclk)
begin
do 4
do 5
end
Is the following correct?
1, 2 and 3 are done (more or less) in a sequential manner, ie. the
result of 1 will be present when 2 is performed. Hence, statement
order is important here.
4 and 5 will be done using their own gate resources, clocked "more or
less" in parallel with 1,2,3. However, presumably assuming any sort of
time alignment between the results of the two always blocks would be
risky at best (explicit synchronisation required).
For the assign statements, does clocking pay a part, or do these
statements simply run at gate delay speed? Or is the answer
device-dependent?