Concurrent Statement: Parallel Statement
VHDL में, concurrent statement बिल्कुल continuous assignment की तरह है जैसे Verilog में, जहाँ signals सीधे drive होते हैं और pure combinational logic को represent करते हैं। सभी concurrent statements एक साथ चलते हैं, मतलब multiple outputs parallel में drive होते हैं, जैसे hardware में wires। इस तरह, hardware parallel में generate होता है और outputs तब update होते हैं जब inputs change होते हैं।
VHDL में concurrent statements process के बाहर लिखे जाते हैं। ये हमेशा active रहते हैं और inputs change होते ही outputs update कर देते हैं। Verilog में यह वही idea assign statement के रूप में होता है। दोनों combinational hardware को describe करते हैं।
VHDL Example (Concurrent Statement)
architecture rtl of example is
signal a, b, y : std_logic;
begin
y <= a and b; -- concurrent statement
end architecture;
Verilog Example (Continuous Assignment)
module example(input a, input b, output y);
assign y = a & b; // continuous assignment
Endmodule
Here in hardware only and gate will be generated
Delta Delay: Concurrent Statements में
Concurrent statements (architecture के बाहर)
Architecture में सीधे assignments लिखने पर, जैसे:
b <= a;
c <= b;

Concurrent statements दिखते हैं जैसे सब parallel run हो रहे हैं, लेकिन simulator को update order decide करना होता है।

-
b <= a; और c <= b; में delta delay यह सुनिश्चित करता है कि signals controlled order में update हों।
-
इस तरह outputs हमेशा correct और consistent रहते हैं।
Hardware view में ये सब एक साथ update होते दिखते हैं। Simulation में, simulator internally delta delay use करता है।
Example:
-
a change होता है → simulator पहले b update करता है (delta 1), फिर c update करता है (delta 2)
-
Waveform में दोनों 10 ns पर change हुए दिखेंगे, लेकिन internally 2 delta cycles लिए गए।
Extra Tips:
Execution:
जब हम VHDL में process लिखते हैं, तो वो sequential तरीके से execute होता है। यानी एक statement के execution के बाद ही अगली statement execute होती है। वहीं, architecture में concurrent statements एक साथ execute होती हैं, जैसे hardware में अलग-अलग wires और gates एक साथ काम कर रहे हों।
Delta Delay:
Process में हर statement step by step execute होती है, इसलिए delta delay की जरूरत नहीं दिखती। जबकि concurrent statements में simulator internally delta delay use करता है ताकि updates की ordering maintain हो सके। यह थोड़ा confusing हो सकता है, लेकिन essentially यह सिर्फ simulator के लिए है।
Sensitivity:
Process में sensitivity list जरूरी होती है। इसका मतलब है कि process तभी trigger होगी जब sensitivity list में कोई signal change होगा। वहीं, architecture में concurrent statements हमेशा active रहते हैं और automatic trigger हो जाते हैं जब उनके input signals change होते हैं।
Hardware Mapping:
Process वाली sequential code अक्सर flip-flops और sequential logic को represent करती है। जबकि concurrent statements combinational या parallel hardware को represent करती हैं, जैसे AND, OR, या multiplexers जो एक साथ काम कर रहे हों।
Interview Questions:
Q:अगर मैं a को b में और c को d में भेजूं, क्या दोनों same time पर update होंगे?
हाँ, दोनों same simulation time पर update होंगे।
For example:
b <= a;
d <= c;
-
अगर a और c 10 ns पर change होते हैं → b और d भी 10 ns पर update होंगे।
-
Simulator internally अलग delta cycles use कर सकता है, लेकिन waveform में same instant दिखेगा।
Q: अगर मैं a को b में और फिर b को c में भेजूं, क्या difference होगा?
हाँ, dependencies की वजह से delta delay important है।
For example:
b <= a;
c <= b;
-
a 10 ns पर '0' → '1' change होता है
-
10 ns, delta 0: simulator देखता है कि a change हुआ
-
10 ns, delta 1: b update होता है
-
10 ns, delta 2: c update होता है
Waveform में दोनों 10 ns पर दिखाई देंगे, लेकिन internally 2 delta cycles लिए गए।
