verilog میں `Define اور پیرامیٹر کے درمیان کیا فرق ہے؟


جواب 1:
Y ترکیب کی ترکیب کے لئے غیر مرتب شدہ // (method طریقہ 1 کی وضاحت کریں) // SIM تخلیق کی وضاحت // تخروپن کے لئے غیر منحصر some کچھ_ ہیڈر. وی // ہیڈر فائل ماڈیول کچھ_ نام # (// ماڈیول نام اعلان اور وریلوگ 2k میں پیرامیٹرز کی فہرست کا آغاز) نحو `ifdef SYNTHESIS // میکرو کے لئے حالت کی جانچ my myDef (a، b) (b> a) کی وضاحت کریں؟ a: b // method طریقہ 2 پیرامیٹر کی وضاحت کریں [3: 0] INWIDTH = some_number_1، // پیرامیٹر ڈیفینیشن پیرامیٹر [3 : 0] آؤٹ وِتھ = کچھ_نمبر_2 ، `دوسری` مائی ڈیف (ایک ، بی) (ا> بی) ine // method طریقہ 3 کی وضاحت کریں؟ a: b پیرامیٹر INWIDTH = some_number_3 ، پیرامیٹر OUTWIDTH = some_number_4 ، `endif پیرامیٹر HALFWIDTH = INWIDTH> > 1 ، کوارٹ وِتھتھ = INWIDTH >> اظہار کے ساتھ 2 // پیرامیٹر کی تعریف) (ان پٹ [INWIDTH-1: 0] myInput، // پیرامیٹریائزڈ چوڑائی آؤٹ پٹ کے ساتھ ان پٹ پورٹ [آؤٹ وِتھ - 1: 0] میرا آؤٹ پٹ // پیرامیٹرائزڈ چوڑائی والا آؤٹ پٹ پورٹ / * ، کچھ_ مزید_پورٹ // (اگر ضرورت ہو) * /)؛ تار [HALFWIDTH-1: 0] inLSB = میری ان پٹ [(HALFWIDTH-1) -: HALFWIDTH]؛ تار [HALFWIDTH-1: 0] inMSB = میری ان پٹ [(INWIDTH-1) -: HALFWIDTH]؛ تار y = `myDef (inLSB، inMSB)؛ / * فعالیت * / اختتامی ماڈیول

یہ ایک مثال کا کوڈ ہے جس میں ine وضاحت اور پیرامیٹر کا استعمال ہوتا ہے۔ تعمیرات کے استعمال کی وضاحت کرنے کے لئے یہ صرف ایک مثال ہے اور کام کرنے کا بہترین طریقہ نہیں بننا چاہئے۔

`ہدایت کی وضاحت:

A `Define ایک Verilog مرتب ہدایت نامہ ہے جو صرف اس سے وابستہ متن کے ساتھ میکرو کی جگہ لیتا ہے۔ یہ سی میں # تعدد مرتب ہدایت نام کی طرح ہے۔ یہ عام طور پر اس وقت استعمال کیا جاتا ہے جب ہم کسی مستقل کی قیمت کی وضاحت کرنا چاہتے ہیں یا وریلوگ آر ٹی ایل کی منتخب تالیف کی اجازت دیتے ہیں۔ ine وضاحت متعدد طریقوں سے استعمال ہوسکتی ہے جیسا کہ کوڈ میں دکھایا گیا ہے۔

مثال کے طور پر ، ہم پہلی لائن پر دیکھ سکتے ہیں کہ S سنائیتسس میکرو کی وضاحت کریں جو بعد میں کمپائلر کو ہدایت دینے کے لئے استعمال کیا جاتا ہے کہ کوڈ کے کون سے حص syntوں کو ترکیب کے ل considered غور کیا جاسکتا ہے اور کون سا نقلی شکل کے لئے۔ لہذا ہم یہ سمجھ سکتے ہیں کہ select وضاحت کو منتخب کرنے کے لئے استعمال کیا جاسکتا ہے کہ کوڈ کے کون سے حصے کو ڈیزائن کے بہاؤ کی کس سطح پر مرتب کرنے کی ضرورت ہے۔

6 اور 10 لائنوں پر ، ہم دیکھ سکتے ہیں کہ call ایک فائنل کال کے طور پر بیان کردہ میکرو کی وضاحت کی جائے جو دلائل کو a اور b لے۔ اس وضاحت کا استعمال لائن 28 پر دیکھا جاسکتا ہے۔ کچھ چیزیں جن پر ine Define استعمال کرتے وقت غور کرنے کی ضرورت ہے۔

  1. میکرو میں قوسین میں منسلک دلائل شامل ہونے چاہئیں۔ بائیں قوسین کو فنکشن جیسی میکرو کے نام کا اگلا حرف ہونا چاہئے۔ دلائل کو خالی جگہ سے الگ کیا جاسکتا ہے۔ متن کو تبدیل کرنے کے لئے مکمل طور پر اسی لائن پر موجود ہوسکتا ہے (لائن (لائن 6 کی طرح) یا متعدد لائنوں پر using لائنوں کے درمیان حد بندی کے طور پر استعمال کرتے ہوئے وضاحت کریں۔ لائن 6 اور لائن 10 پر استمعال A اور B کو باقاعدہ دلائل کہا جاتا ہے اور ان کا دائرہ میکرو متن کے اختتام تک رہتا ہے۔ فنکشن جیسی میکرو پر ایک تاثرات پاس کریں ، اظہار کا متعدد بار جائزہ لیا جاسکتا ہے۔

فنکشن کی طرح میکرو کا استعمال لائن 28 پر دیکھا جاتا ہے۔ یہ میکرو نام کے شروع میں function میکرو ہونے کی نشاندہی کرتے ہوئے سوائے ایک فنکشن کال کی طرح ہے۔ ہم میکرو پر بھی ایک تاثرات پاس کر سکتے ہیں ، جیسے y = `myDef (inLSB + inMSB، inLSB - inMSB)؛

میکرو نام اور قوسین کے مابین خالی جگہوں کو دیکھیں؟ ہاں فنکشن جیسے میکرو کے استعمال کی اجازت ہے۔ قوسین کے اندر بھی خالی جگہیں ہیں۔ لہذا ہم یہ نتیجہ اخذ کرسکتے ہیں کہ ine وضاحت شدہ میکروز کو ماڈیول میں بار بار چلنے والے متن کو متبادل بنانے کے لئے استعمال کیا جاسکتا ہے ، جس سے ماخذ میں حروف کی تعداد کم ہوسکتی ہے۔

ہم میکرو جیسے نام کے ساتھ ہی ایک رج یا تار کی وضاحت کرسکتے ہیں۔ لہذا اگر میں کسی Reg کی وضاحت Reg کی طرح کرتا ہوں [5: 0] myDef؛ یہ مکمل طور پر قانونی ہے کیونکہ مائی ڈیف اور `مائی ڈیف کو کمپلر کے ذریعہ دو بالکل مختلف چیزوں کی طرح سمجھا جاتا ہے۔ ایک اور اہم چیز جس پر توجہ دی جائے وہ ہے۔ لائن 6 اور لائن 10 دونوں سے غائب ہے۔ چونکہ میکرو آپریشن مکمل طور پر متنی متبادل ہے ، اگر ہم ایک رکھتے ہیں۔ تعریف پر اور میکرو استعمال کی جگہ پر اس کا استعمال کریں ، ہمیں یقینی طور پر نحو کی غلطی ہوگی۔ لہذا ہمیں مناسب نحو کو یقینی بنانے کے لئے میکرو کی وضاحت اور استعمال کرتے ہوئے بہت محتاط رہنے کی ضرورت ہے۔

پیرامیٹر تعمیر:

وریلوگ میں پیرامیٹرز ، سیدھے الفاظ میں ، مستقل ہیں۔ رن ٹائم کے دوران انہیں مستقل تفویض نہیں کیا جاسکتا۔ تالیف سے پہلے ان کی مکمل وضاحت کی ضرورت ہے۔ پیرامیٹرز ، c میکرو کی وضاحت کے برعکس ، ڈیٹا کی قسم ، رینج اور علامت شناخت کنندہ ہوسکتے ہیں۔ پیرامیٹرز کو اعلان کیا گیا ہے جیسا کہ 7 ، 8 ، 12 ، 13 اور 15 لائنوں پر دکھایا گیا ہے۔

ہم لائن 7 اور 8 پر مختلف پیرامیٹرز دیکھ سکتے ہیں ، یہاں حد کی حد بندی کی وجہ سے RHS پر قدر 4 بٹس تک محدود ہے۔ تاہم ، 12 اور 13 لائنوں کے پیرامیٹرز حدود میں محدود نہیں ہیں اور RHS کے اعداد و شمار کی قسم ، یعنی انٹیجر (32 بٹس) یا اصلی یا کسی متلو rangeنہ حد کے مطابق کچھ_نمبر_14 اور کچھ_نمبر_4 کے مطابق ہیں۔ اگر اعلامیہ میں سائن شناخت کار موجود نہیں ہیں تو پیرامیٹرز پر دستخط نہیں کیے گئے ہیں۔

پیرامیٹرز کے عام استعمال جب ہم عام ماڈیول بناتے ہیں جس کو ہم ماڈیول میں ان پٹ ، آؤٹ پٹ اور دیگر متغیرات کی چوڑائی کو تبدیل کرکے متعدد جگہوں یا پروجیکٹس میں استعمال کرسکتے ہیں جو پیرامیٹرز کا استعمال کرتے ہوئے سائز ہوتے ہیں۔ ہم تاخیر کی وضاحت کرنے کے لئے پیرامیٹرز کا استعمال بھی کرسکتے ہیں اور متغیرات کو جمع کرتے وقت۔

18 اور 19 لائنوں پر ، INWIDTH اور OUTWIDTH پیرامیٹرز ان پٹ اور آؤٹ پٹ بسوں کے سائز کے ل. استعمال ہوتے ہیں۔ یہ ہمارے ماڈیول کو اس معنی میں عام بنائے گا کہ اگر ماڈیول میں اعلی ماڈیول میں پیرامیٹر کی قدر کو تبدیل کرکے بس کا سائز مختلف ہو تو ہم ماڈیول کو دوبارہ استعمال کرسکتے ہیں۔ یقینا ، ہمیں اس پر غور کرنا چاہئے کہ ماڈیول کے تمام مشمولات کو صحیح طریقے سے بنایا گیا ہے تاکہ پیرامیٹرز میں تبدیلی کے ساتھ مناسب طریقے سے ترتیب دیا جاسکے۔ 26 اور 27 پر پیرامیٹر HALFWIDTH inLSB اور inMSB نیٹ کو سائز کرنے اور نیٹ مائن ان پٹ میں بٹس کا ایک حصہ منتخب کرنے کے لئے بھی استعمال کیا جاتا ہے۔

آخر میں پیرامیٹرز میں ماڈیول کی سطح کا دائرہ کار ہوتا ہے جبکہ ine طے شدہ میکرو کی کوئی گنجائش نہیں ہوتی ہے۔

جواب کی درخواست کرنے کے لئے شکریہ اور مجھے امید ہے کہ میں نے اس سوال کا مکمل جواب دیا ہے۔ اگر مذکورہ بالا بیانات میں کوئی غلطی ہو تو براہ کرم ترامیم کی تجویز کریں۔ اگر پوائنٹس کے کسی بھی پہلو سے متعلق کوئی شکوک و شبہات ہیں تو براہ کرم بلا جھجک پوچھیں۔ اگر میں نے کوئی نکات چھوڑے ہیں تو براہ کرم بذاتہ خود اپنے جواب کی تجویز یا تحریر لکھوں۔ خوشی


جواب 2:

A 'Define' ایک میکرو ہے ، جو عالمی گنجائش کا حامل ہے اگر آپ کسی ماڈیول کی وضاحت کرتے ہیں تو ، یہ ماڈیول کے بعد بھی اعلان شدہ رہتا ہے۔ اس کی وضاحت کے بعد ، میکرو نام کا استعمال پہلے والے `(بیک ٹک) کردار کے ساتھ کیا جاتا ہے۔ یہ ماڈیول اعلامیہ کے اندر یا باہر موجود ہوسکتا ہے اور دونوں کے ساتھ ایک ہی سلوک کیا جاتا ہے۔

دوسری طرف ، 'پیرامیٹر' ماڈیول کے لئے مقامی ہے۔ پیرامیٹر کے اعلامیے صرف ماڈیول حدود کے اندر ہی اعلان کیے جاسکتے ہیں۔ اس کے اعلان کے بعد ، اس کا استعمال پیرامیٹر کے نام سے کیا جاتا ہے۔ یہ ماڈیول کی کسی خاصیت کی وضاحت کرنے کے لئے استعمال ہوتا ہے۔ اس پراپرٹی کو ڈیفالٹ میں چھوڑ دیا جاسکتا ہے ، یا ماڈیول کے انسٹیٹیشن کے وقت اس میں ترمیم کی جاسکتی ہے۔


جواب 3:

A 'Define' ایک میکرو ہے ، جو عالمی گنجائش کا حامل ہے اگر آپ کسی ماڈیول کی وضاحت کرتے ہیں تو ، یہ ماڈیول کے بعد بھی اعلان شدہ رہتا ہے۔ اس کی وضاحت کے بعد ، میکرو نام کا استعمال پہلے والے `(بیک ٹک) کردار کے ساتھ کیا جاتا ہے۔ یہ ماڈیول اعلامیہ کے اندر یا باہر موجود ہوسکتا ہے اور دونوں کے ساتھ ایک ہی سلوک کیا جاتا ہے۔

دوسری طرف ، 'پیرامیٹر' ماڈیول کے لئے مقامی ہے۔ پیرامیٹر کے اعلامیے صرف ماڈیول حدود کے اندر ہی اعلان کیے جاسکتے ہیں۔ اس کے اعلان کے بعد ، اس کا استعمال پیرامیٹر کے نام سے کیا جاتا ہے۔ یہ ماڈیول کی کسی خاصیت کی وضاحت کرنے کے لئے استعمال ہوتا ہے۔ اس پراپرٹی کو ڈیفالٹ میں چھوڑ دیا جاسکتا ہے ، یا ماڈیول کے انسٹیٹیشن کے وقت اس میں ترمیم کی جاسکتی ہے۔