رفتن به مطلب

آموزش Verilog HDL


ارسال های توصیه شده

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

برای این زبان برنامه های نرم افزاری مختلفی وجود دارد مانند، Model Sim, MAX + ||, SynaptiCad و Foundation...

در مراحل بعدی آموزش گام به گام این زبان راتوضیح خواهیم داد.

  • Like 3
لینک به دیدگاه

کارمان را با مثالی آغاز می کنیم و توضیحات لازم را در ین طراحی این مثال می دهیم.

فرض کنید طراحی نیم جمع کننده داریم :

 

half-adder

 

madaar.jpg

 

حال این طراحی را به صورت Verilog پیاده سازی می کنیم.

1) تعریف ماژول: module یک keyword است که در محیط برنامه با یک رنگ دیگر نوشته می شود.

هر ماژول یک اسم دارد، اسم همان سخت افزاری که می خواهیم پیاده سازی کنیم را می نویسیم. اسم یک متغیر حتما باید با کاراکتر و حروف انگلیسی آغاز شود.

module half-adder

نکته: اگر بین دو کلمه در اسم ماژول خط تیره نگذاریم، آن اسم را دو متغیر حساب می کند.

2) در این مرحله باید Interface را مشخص کرد. و با دنیای بیرون ارتباط برقرا کرد که در این طراحی با سیم های A, B, C, S با بیرون ارتباط برقرار می شود.

که A و B در زبان Verilog پورت ورودی (Input port) و به C , S پورت های خروجی (output port) می گویند.

  • Like 1
لینک به دیدگاه

تعریف پورت در 2 مرحله انجام می گیرد. در مرحله اول لیست پورتها را می نویسیم در مرحله ی بعد می گوئیم از این پورت ها کدام ورودی و کدام خروجی است.

بعد از ماژول یک پرانتز باز می کنیم، اسم پورت ها را می نویسیم و بین هر پورت یک ویرگول می گذاریم و در انتها پرانتز را می بندیم و بعد ; می گذاریم.

module half-adder(A,B,C,S); ** ; is nessesary in the end

قرار دادن سمی کالن در پایان هر عبارت الزامی است بجز مواردی که در مثال مشخص خواهیم کرد.

3- مرحله ی بعدی اعلان پورت هاست که کدام ورودی و کدام خروجی است. برای مشخص کردن ورودی و خروجی از keyword های input و output استفاده می کنیم.

4- مرحله ی بعد توصیف گیت هاست. نوع گیت را می نویسیم و بعد اسمی را که برای آن مشخص کردیم را می نویسیم. بعد از اسم داخل پرانتز اسم سیم ها را می نویسیم که همیشه خروجی در ابتدا می آید و بعد ورودی ها.

5- مرحله ی بعد باید بگوئیم که توصیف ماژول تمام شده است. برای اینکار از endmodule استفاده می کنیم.

Module half-adder(A,B,C,S);

Input A,B;

Output C,S;

And n1(C,A,B);

Xor n2(S,A,B);

endmodule

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

  • Like 1
لینک به دیدگاه

لیست عناصر ماژول

 

Module name

-Port list

-Port Decleration

-Parameter

-Decleration of wires

-Register and other variable

-Data flow statement

-Instantiation of lower level module

-Always and Initial Blocks

endmodule

یکی از قسمت های مهم ماژول، پورت های آن است. اگر یک ماژول پورت نداشته باشد، هیچگونه با دنیای بیرون ارتباط ندارد. به عبارتی وظیفه ی اصلی پورت ها، ارتباط ماژول با دنیای بیرون است.

 

پورت ها در Verilog HDL، 3 نوع هستند: پورت ورودی، پورت خروجی و پورت ورودی خروجی (عملا در سخت افزار هم وجود دارند.)

  • Like 1
لینک به دیدگاه
  • 2 هفته بعد...

برای دوستانی که عجله دارن و نمی تونن منتظر آموزش گام به گام بشن، یک کتاب آموزی می ذارم. امیدوارم به دردتون بخوره.

موفق باشید.

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

  • Like 6
لینک به دیدگاه
  • 1 ماه بعد...

فرض کنید یک مالتی پلکسر 4 به 1 را پیاده ساز کنیم که دو انتخاب کننده (selector) داردو یک خروجی بنام Q.

 

module mux-4-1(A,Q,S);

input [3:0]A;

input [1:0]S;

output Q;

.

.

.

.

endmodule

 

فرض می کنیم یک ماژول بنام Top داریم که یک سیمی ( متغیری ) بنام in تعریف م کند که به A مالتی پلکسر و متغیر بنام out را به Q و متغیر sel را به s وصل می کند.

 

module top(in,out,sel);

wire out;

wire [3:0]in;

wire [1:0]Sel;

mux-4-1 m0(in,out,sel);

endmodule

 

m0 نام محلی ماژول است و mux-4-1 نام ماژول اصلی است.

نکته: اندازه ی سیم ها و پورت ها باید کی باشد وقتی وصل می کنیم یعنی اگر in به A وصل است، باید اندازه ی سیم ها نیز 4 باشد.

** نکته: متغیرها به 2 گروه اصلی Net و Register تقسیم می شوند. اگر بخواهیم متغیراز نوع Net استفاده کنیم از کلمه ی کلیدی wire استفاده می کنیم و اگر بخواهیم از متغیر Register استفاده کنیم از کلمه ی کلیدی Reg استفاده می کنیم.

wire و reg با هم فرق دارند، wire مثل سیمی است که برای اتصال دو IC استفاده می کنیم.

reg حافظه دار است مثل FF. اگر مقدار یک یدهم بعد قطع کنیم مقدار 1 را در خود نگه می دارد تا زمانیکه مقدار جدیدی بدهیم.

  • Like 2
لینک به دیدگاه
  • 1 ماه بعد...

براتون 1 نمونه برنامه ی ساده به این زبان رو می ذارم، که آموزشمون رو با برنامه نویسی ادامه بدیم. اگر جایی رو متوجه نشدید حتما بپرسید.

 

این فایل شامل برنامه ی جمع کننده ی 4 بیتی است.

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

  • Like 4
لینک به دیدگاه
  • 7 ماه بعد...
  • 2 سال بعد...
  • 1 سال بعد...
براتون 1 نمونه برنامه ی ساده به این زبان رو می ذارم، که آموزشمون رو با برنامه نویسی ادامه بدیم. اگر جایی رو متوجه نشدید حتما بپرسید.

 

این فایل شامل برنامه ی جمع کننده ی 4 بیتی است.

 

برای مشاهده این محتوا لطفاً ثبت نام کنید یا وارد شوید.

 

 

nashod ke :w000:

لینک به دیدگاه
  • 3 ماه بعد...
  • 10 ماه بعد...

الان vhdl زبان برنامه نویسی اش هست؟؟پس محیط برنامه یا نرم افزارش چی هست؟؟

ان مثلپروتئوس شماتیک مدار رو م داره یافقط برنامه؟

  • Like 1
لینک به دیدگاه
الان vhdl زبان برنامه نویسی اش هست؟؟پس محیط برنامه یا نرم افزارش چی هست؟؟

ان مثلپروتئوس شماتیک مدار رو م داره یافقط برنامه؟

زبان برنامه نویسی نیست زبان طراحی سخت افزار هست

xilinx هم نرم افزار مربوطه هست کد که میزنی شماتیک مدار کد زده رو برات می آره

  • Like 2
لینک به دیدگاه
×
×
  • اضافه کردن...