آموزش وریلاگ | پروژه وریلاگ
 گروه تلگرام 
VerilogCode.ir
آموزش وریلاگ | پروژه وریلاگ


آموزش وریلاگ - جلسه 2 :

آموزش وریلاگ آموزش Verilog

دانلود فیلم بالا (جلسه دوم)

بیاین اولین مثال مون رو بنویسیم . فرض کنید میخوایم یه مدار وارونگر بسازیم بطوری که هرچی ورودی بگیره ، معکوس شو توی خروجی نمایش بده . مثلا اگه یک بیت 0 بهش ورودی بدیم ، خروجی یک بیت 1 بشه و بالعکس. خب پس داریم :

ISE Project - VerilogCode.ir : \ Box2-1.v
 1-
 2-
 3-
 4-
 5-
 6-
 7- 
 8-
module Varoon(
    input  X,
    output Y
    );  


	
endmodule

تا الان فقط ورودی و خروجی رو تعریف کردیم ، و مدار مون خالی هستش ، مطابق با شکل زیر :

آموزش وریلاگ

حالا با استفاده از کلیدواژه ( ) not می تونیم یک گیت نات رو به مدار اضافه کنیم ، بطوری که ورودی این گیت ، سیگنال X و خروجی اون سیگنال Y هستش که این مدار دقیقا کاری که خواستیم رو انجام میده و ورودی رو وارون میکنه.

ISE Project - VerilogCode.ir : \ Box2-2.v
 1-
 2-
 3-
 4-
 5-
 6-
 7- 
 8-
module Varoon(
    input  X,
    output Y
    );  

    not(Y,X);
	
endmodule

حالا کُد مون کامل شده و معادل تصویری اون میشه شکل زیر :

آموزش وریلاگ

خب چند تا سوال، کلید واژه چیه ؟ گیت نات از کجا اومد ؟ چطور گیت ها تعریف میشن و ورودی و خروجی گیت ها چطور مشخص میشن ؟
کلید واژه ها دستوراتی هستند که با نوشتن اونها ، یه کاری برای ما انجام میشه ، مثلا کلید واژه module برای ما یک ماژول تعریف میکنه ، یا کلید واژه input یک ورودی برای ما تعریف میکنه ، بنابراین ما کلید واژه های بسیاری داریم که هر کدام عملکردی دارند و ما قصد داریم به مرور با اونها آشنا بشیم. معادل هر گیت منطقی ، یک کلید واژه داریم که کار اون گیت رو برای ما انجام میده ، مثل همین مدار بالا که گیت نات با کلید واژه not تعریف شد . با برخی دیگر از این کلید واژه های گیت آشنا بشیم :
and (x,y,z)           // x = y & z
or (x,y,z)           // x = y | z
xor (x,y,z)           // x = y ^ z
nand (x,y,z)           // x = ~ ( y & z )
nor (x,y,z)           // x = ~ ( y | z )
xnor (x,y,z)           // x = ~( y ^ z )
buf (x,y)           // x = y
احتمالا تا الان متوجه شدید که جایگاه ورودی و خروجی های گیت کجاست ، همیشه حرف سمت چپ خروجی و بقیه حروف ورودی ما هستند که در اینجا x خروجی و y , z ورودی های گیت هستند . البته شما میتونید هر حروفی که دوست داشتید برای نام گذاری ورودی و خروجی گیت ها استفاده کنید ، حتی میتونید یه کلمه انتخاب کنید ، مثلا بجای x بذارید Hello .
گیت بافر ، معمولا یک ورودی داره که همون رو دقیقا توی خروجی قرار میده . راستی تا یادم نرفته بگم که ورودی و خروجی ماژول رو با ورودی و خروجی گیت ها قاطی نکنید !! به تصویر زیر نگاه کنید ، سیگنال های آبی ورودی ماژول ما هستند و سینگال های قرمز ورودی گیت های ما هستند، صورتی ها خروجی ماژول ما و نارنجی ها خروجی گیت های ما هستند. همونطور که میبینید گاهی این سیگنال ها باهم اشتراک هم دارند ، مثلا خروجی یک گیت ، ورودی گیت دیگری است و یا خروجی یک گیت همان خروجی ماژول می شود.

آموزش وریلاگ

نظرتون چیه کد وریلاگ مربوط به شکل بالا رو بنویسیم ؟ من اسم این ماژول رو تست میذارم و شروع می کنم به کُد نویسی و از 5 کلید واژه گیت استفاده می کنم برای توصیف مدار بالا :

ISE Project - VerilogCode.ir : \ Box2-3.v
 1-
 2-
 3-
 4-
 5-
 6-
 7- 
 8-
 9-
10-
11-
12-
13-
14-
15-
module Test(
    input  A,
    input  B,
    input  C,
    output F,
    output G
    );  

    xor(L,A,B);     // L = A ^ B 
    xor(F,L,C);     // F = L ^ C 
    and(P,L,C);     // P = L & C 
    and(Q,A,B);     // Q = A & B 
    or(G,P,Q);      // G = P | Q 
	
endmodule

بریم سراغ سوالات احتمالی ، از خط اول شروع می کنیم :
+ اسم ماژول هرچیزی میتونه باشه ؟ بله هرچیزی ، فقط اسمش با عدد شروع نشه .

+ حتما باید اول ورودی تعریف بشه بعد خروجی ها ؟ خیر ترتیب اصلا مهم نیست ، قاطی پاتی هم میشه نوشت .
+ چرا آخر خط های 2 تا 5 ویرگول داره ولی خط 6 آخرش ویرگول نداره ؟ مدل و قانون وریلاگه ، میگه آخرین خط توی تعریفِ ورودی و خروجی ها ، نباید ویرگول داشته باشه.
آموزش وریلاگ
+ سیگنال های L و P و Q از کجا اومد ؟ شکل بالا رو ببینید به دلخواه خودم تعریف کردم ، مثلا توی گیت اول ، قراره A و B باهم ایکسور بشن ، خب حاصل توی چی ریخته بشه ؟ من به دلخواه گفتم توی L ریخته بشه و L رو خروجی گیت ایکسور در نظر گرفتم.
+ ترتیبِ نوشتنِ گیت ها مهمه ؟ خیر وریلاگ همه ی گیت هارو همزمان شبیه سازی و مدلسازی میکنه ، بنابراین نیازی نیست به ترتیب بنویسید میتونید اول or رو تعریف کنید بعد xor یا and و یا هر ترتیبی که دوست دارید رو قرار بدید.
+ سمت راست چندتا خط سبز رنگ هست ، اونا چیه ؟ کامنت هست ، توضیحاتی که برای خواننده میذاریم تا خواننده بتونه برنامه رو بهتر درک کنه ، حتی میتونید بجای توضیح ، فحش هم بنویسید ... مهم نیست و تاثیری روی کُد اصلی نداره ، وریلاگ همیشه کامنت هارو نادیده میگیره و اجرا نمیکنه .
+ چرا L توی خط 9 ، خروجی گیت هست اما توی خط 10 ، ورودی گیت شده ؟ ببینید تمام اسم ها و حروف هایی که ما تعریف شون میکنیم ، یه سیگنال هستند یا بهتره بگیم یه متغییر هستند که یه مقداری توشون ذخیره میشه ، اینجا سیگنال ها یا متغییر هامون تک بیتی هستند ، یعنی مقدارشون در نهایت یا 0 هست یا 1 ، پس مقدار L یا 0 هست یا 1 و به عنوان خروجی گیت ایکسور هست ... حالا چه اشکالی داره من مقدار L رو بگیرم بدم به یه گیت دیگه به عنوان ورودی ؟ اصلا عیبی نداره یه متغییر یا سیگنال ، ورودیِ هزاران گیتِ دیگه باشه . شما یه لطفی کنید اصلا به این چیزا فکر نکنید !! هرچی که توی شکل مدار میبینید ، دقیقا همون رو بنویسید ، چیکار با این کارا دارید.

+ چرا آخر همه ی خط های 9 تا 13 سمیکالن (نقطه ویرگول) گذاشتی ؟ قانون وریلاگه ، بعد از هر خط کُد یا هر خط برنامه باید اینُ بذاری.

ادامه سوالات رو توی کامنت ها بپرسید، یکاری هم کنیم ، ازین به بعد اگه شکل خواستیم بکشیم ، جعبه رو نذاریم ، داریم مدار وصل میکنیم ، میوه که نیست هعی میذاریمش توی جعبه ، دیگه قضیه ماژول هارو فهمیدید و نیازی نیست حتما توی شکل هم جعبه بذاریم . دانلود فیلم جلسه

رفتن به جلسه بعد ...

مشاهده نظرات کاربران




پیام شما با موفقیت ارسال شد و به زودی در این قسمت به نمایش در خواهد آمد .
لطفا تمام فیلد های الزامی را پُر کنید .


هانیه

گیت های سه حالته هم داریم که کنترل بشن ؟

سید محسن

بله توی ویدئو به اونها هم اشاره کردیم ، بافر های سه حالته .

عاطفه

من تازه شروع کردم دارم با سایت شما جلو میرم

سید محسن

سلام ، با قدرت ادامه بدید مطمئن باشید در آخر یه وریلاگ نویسه خوب میشید .

هادی

سیم های رابط رو نباید وایر تعریف کنیم ؟

سید محسن

سلام ، توی جلسه سوم به این مبحث پرداخته شده .

آوا مهجوری

خدا خیرتون بده خیلی ساده توضیح میدین

مهدیزاده

آقاسید خدا قوت

Sara

سلام. ممنون از وقتی که گذاشتین یه سوال داشتم، من مقایسه کننده هارو واقعا لازمه که یادبگیرم. شما تو فیلماتون مقایسه کننده درس دادین؟ تو سرفصلها ندیدم..

سید محسن

سلام ، دقیقا خود مقایسه کننده رو خیر مثالش توی درسنامه های ما نیست . ولی خب جلسات مختلف رو بخونید متوجه میشید چطور انجام بدید . اگه عجله دارید فردا پیام بدید به من یه فیلم براتون ضبط کنم توضیح مقایسه کننده .

سپهر سلمانی

خدا خیرتان بده

سید محسن

ممنونم .