Data flow Modeling(डेटा फ्लो मॉडलिंग)
जब हमारे पास Behavioral है तो Dataflow क्यों?
डेटाफ्लो मॉडलिंग तब सबसे ज़्यादा काम आती है जब आपका लॉजिक एक सिंपल इक्वेशन में लिखा जा सकता है। इससे कोड छोटा, पढ़ने में आसान और अपने आप कॉन्करंट हो जाता है। Behavioral मॉडलिंग ज्यादा फ्लेक्सिबल है और कॉम्प्लेक्स या सीक्वेंशियल लॉजिक के लिए उपयोग होती है, लेकिन प्योर कॉम्बिनेशनल इक्वेशंस के लिए डेटा फ्लो सबसे फास्ट और क्लीन तरीका है।
अगर Boolean एक्सप्रेशन पता है तो डेटा फ्लो क्यों करें?
क्योंकि डेटा फ्लो मॉडलिंग इसी काम के लिए बनी है — ये आपको सीधे Boolean इक्वेशन को concurrent assignment के रूप में लिखने देती है। इससे कोड छोटा, साफ और आपके बनाए लॉजिक के करीब रहता है। आपको कोई process या if/case लिखने की जरूरत नहीं पड़ती और sensitivity list में सिग्नल छूटने का डर नहीं रहता। सिम्युलेटर और सिंथेसाइज़र इसे अपने आप combinational logic की तरह मानते हैं।
डेटा फ्लो Sequential Logic क्यों नहीं लिख सकता?
भले ही sequential circuits गेट्स से बनते हैं, उन्हें मेमोरी की जरूरत होती है। मेमोरी का बिहेवियर (जैसे वैल्यू को clock edge पर स्टोर करना) केवल Boolean इक्वेशन से नहीं लिखा जा सकता। डेटा फ्लो मॉडलिंग सिर्फ continuous combinational relationship दिखा सकती है। Sequential सर्किट्स के लिए हमें behavioral मॉडलिंग (process के साथ) या structurally flip-flop instantiate करना पड़ता है।
Example: 4-bit Adder (Dataflow)
Verilog
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity adder_4bit is
port (
A : in STD_LOGIC_VECTOR(3 downto 0);
B : in STD_LOGIC_VECTOR(3 downto 0);
Cin : in STD_LOGIC;
SUM : out STD_LOGIC_VECTOR(3 downto 0);
Cout : out STD_LOGIC
);
end entity;
architecture dataflow of adder_4bit is
signal temp_sum : UNSIGNED(4 downto 0); -- 5 bits
signal Cin_ext : UNSIGNED(4 downto 0); -- extended Cin
begin
-- Extend Cin manually
Cin_ext <= (4 downto 1 => '0', 0 => Cin);
-- Dataflow assignment
temp_sum <= ("0" & unsigned(A)) + ("0" & unsigned(B)) + Cin_ext;
-- Output assignments
SUM <= STD_LOGIC_VECTOR(temp_sum(3 downto 0));
Cout <= temp_sum(4);
end architecture;
Elaborated Diagram:

Synthesis:

इंडस्ट्री में मॉडलिंग का इस्तेमाल कैसे होता है?
इंडस्ट्री में ICs बहुत बड़ी और कॉम्प्लेक्स होती हैं, इसलिए उन्हें छोटे-छोटे मॉड्यूल्स में तोड़ा जाता है। हर मॉड्यूल को अलग से लिखा जाता है — combinational और sequential पार्ट्स को behavioral modeling में लिखा जाता है और pure combinational logic को ज़्यादातर dataflow style में लिखा जाता है क्योंकि वो छोटा और पढ़ने में आसान होता है। फिर सारे मॉड्यूल्स को एक टॉप लेवल मॉड्यूल में structural modeling से आपस में जोड़ा जाता है। अलग-अलग modeling styles का यह combination mixed modeling कहलाता है और यही बड़े डिजिटल सिस्टम डिज़ाइन करने का standard तरीका है।
जैसा कि हमने ऊपर ALU Example में विस्तार से देखा।
तो दोस्तों, कैसा लगा ये लेसन? 🙂 अगर अच्छा लगा हो तो शेयर करना ना भूलें और सीखते रहें!
