mona_serendipity 4,365 ارسال شده در 16 شهریور 1388 یکی از زبان های برنامه نویسی سخت افزاری است که در آن گیت ها و مدارات منطقی سخت افزاری را توسط برنامه نویسی تعریف می کنیم و بعد از شبیه سازی و تست ماژول، می توانیم آنرا پیاده سازی کنیم. برای این زبان برنامه های نرم افزاری مختلفی وجود دارد مانند، Model Sim, MAX + ||, SynaptiCad و Foundation... در مراحل بعدی آموزش گام به گام این زبان راتوضیح خواهیم داد. 3 نقل قول به اشتراک گذاری این ارسال لینک به ارسال
mona_serendipity 4,365 ارسال شده در 16 شهریور 1388 کارمان را با مثالی آغاز می کنیم و توضیحات لازم را در ین طراحی این مثال می دهیم. فرض کنید طراحی نیم جمع کننده داریم : half-adder حال این طراحی را به صورت Verilog پیاده سازی می کنیم. 1) تعریف ماژول: module یک keyword است که در محیط برنامه با یک رنگ دیگر نوشته می شود. هر ماژول یک اسم دارد، اسم همان سخت افزاری که می خواهیم پیاده سازی کنیم را می نویسیم. اسم یک متغیر حتما باید با کاراکتر و حروف انگلیسی آغاز شود. module half-adder نکته: اگر بین دو کلمه در اسم ماژول خط تیره نگذاریم، آن اسم را دو متغیر حساب می کند. 2) در این مرحله باید Interface را مشخص کرد. و با دنیای بیرون ارتباط برقرا کرد که در این طراحی با سیم های A, B, C, S با بیرون ارتباط برقرار می شود. که A و B در زبان Verilog پورت ورودی (Input port) و به C , S پورت های خروجی (output port) می گویند. 1 نقل قول به اشتراک گذاری این ارسال لینک به ارسال
mona_serendipity 4,365 ارسال شده در 16 شهریور 1388 تعریف پورت در 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 همانطور که مشاهده می شود در خط آخر که پایان ماژول است از سمی کالن استفاده نکرده ایم. 1 نقل قول به اشتراک گذاری این ارسال لینک به ارسال
mona_serendipity 4,365 ارسال شده در 16 شهریور 1388 لیست عناصر ماژول 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 نوع هستند: پورت ورودی، پورت خروجی و پورت ورودی خروجی (عملا در سخت افزار هم وجود دارند.) 1 نقل قول به اشتراک گذاری این ارسال لینک به ارسال
mona_serendipity 4,365 ارسال شده در 26 شهریور 1388 برای دوستانی که عجله دارن و نمی تونن منتظر آموزش گام به گام بشن، یک کتاب آموزی می ذارم. امیدوارم به دردتون بخوره. موفق باشید. محتوای مخفی برای مشاهده محتوای مخفی می بایست در انجمن ثبت نام کنید. 6 نقل قول به اشتراک گذاری این ارسال لینک به ارسال
mona_serendipity 4,365 ارسال شده در 5 آبان 1388 فرض کنید یک مالتی پلکسر 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 را در خود نگه می دارد تا زمانیکه مقدار جدیدی بدهیم. 2 نقل قول به اشتراک گذاری این ارسال لینک به ارسال
mona_serendipity 4,365 ارسال شده در 2 دی 1388 براتون 1 نمونه برنامه ی ساده به این زبان رو می ذارم، که آموزشمون رو با برنامه نویسی ادامه بدیم. اگر جایی رو متوجه نشدید حتما بپرسید. این فایل شامل برنامه ی جمع کننده ی 4 بیتی است. محتوای مخفی برای مشاهده محتوای مخفی می بایست در انجمن ثبت نام کنید. 4 نقل قول به اشتراک گذاری این ارسال لینک به ارسال
mohammad_iust 11 ارسال شده در 27 مرداد 1389 سلام.از لینک مفیدتون تشکر میکنم.خیلی به درد خورد. 1 نقل قول به اشتراک گذاری این ارسال لینک به ارسال
royaaaaa 10 ارسال شده در 16 آبان 1391 چرا لینکش خرابه من می خوامش نمی شه برام میل کنید:4564: نقل قول به اشتراک گذاری این ارسال لینک به ارسال
clubbazi.com 10 ارسال شده در 5 دی 1392 براتون 1 نمونه برنامه ی ساده به این زبان رو می ذارم، که آموزشمون رو با برنامه نویسی ادامه بدیم. اگر جایی رو متوجه نشدید حتما بپرسید. این فایل شامل برنامه ی جمع کننده ی 4 بیتی است. محتوای مخفی برای مشاهده محتوای مخفی می بایست در انجمن ثبت نام کنید. nashod ke نقل قول به اشتراک گذاری این ارسال لینک به ارسال
haniye moein 10 ارسال شده در 13 فروردین 1393 سلام برامن هم نشد!!!!!!!!!! نقل قول به اشتراک گذاری این ارسال لینک به ارسال
hasting_m 385 ارسال شده در 15 بهمن 1393 الان vhdl زبان برنامه نویسی اش هست؟؟پس محیط برنامه یا نرم افزارش چی هست؟؟ ان مثلپروتئوس شماتیک مدار رو م داره یافقط برنامه؟ 1 نقل قول به اشتراک گذاری این ارسال لینک به ارسال
afshin18 11,175 ارسال شده در 15 بهمن 1393 الان vhdl زبان برنامه نویسی اش هست؟؟پس محیط برنامه یا نرم افزارش چی هست؟؟ان مثلپروتئوس شماتیک مدار رو م داره یافقط برنامه؟ زبان برنامه نویسی نیست زبان طراحی سخت افزار هست xilinx هم نرم افزار مربوطه هست کد که میزنی شماتیک مدار کد زده رو برات می آره 2 نقل قول به اشتراک گذاری این ارسال لینک به ارسال