رفتن به مطلب

پست های پیشنهاد شده

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

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

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

به اشتراک گذاری این ارسال


لینک به ارسال

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

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

 

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) می گویند.

به اشتراک گذاری این ارسال


لینک به ارسال

تعریف پورت در 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

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

به اشتراک گذاری این ارسال


لینک به ارسال

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

 

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 نوع هستند: پورت ورودی، پورت خروجی و پورت ورودی خروجی (عملا در سخت افزار هم وجود دارند.)

به اشتراک گذاری این ارسال


لینک به ارسال

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

موفق باشید.

 

محتوای مخفی

    برای مشاهده محتوای مخفی می بایست در انجمن ثبت نام کنید.

به اشتراک گذاری این ارسال


لینک به ارسال

فرض کنید یک مالتی پلکسر 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 را در خود نگه می دارد تا زمانیکه مقدار جدیدی بدهیم.

به اشتراک گذاری این ارسال


لینک به ارسال

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

 

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

 

محتوای مخفی

    برای مشاهده محتوای مخفی می بایست در انجمن ثبت نام کنید.

به اشتراک گذاری این ارسال


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

 

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

 

محتوای مخفی

    برای مشاهده محتوای مخفی می بایست در انجمن ثبت نام کنید.

 

 

nashod ke :w000:

به اشتراک گذاری این ارسال


لینک به ارسال

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

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

به اشتراک گذاری این ارسال


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

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

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

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

به اشتراک گذاری این ارسال


لینک به ارسال

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از ۷۵ اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • جدید...