ببینید منظور من برنامه نویسی هستش .
این فابل های pdf همه جا هستند . من همشو داشتم. منظور من یه چیز جدیده . مثلا برنامه نویسی vhdl یکی بیاد
با مثال توضیح بده . من قبلا کار میکردم ولی از بس مرجع کم و ناقص داره دورش خط کشیدم
ببینید منظور من برنامه نویسی هستش .
این فابل های pdf همه جا هستند . من همشو داشتم. منظور من یه چیز جدیده . مثلا برنامه نویسی vhdl یکی بیاد
با مثال توضیح بده . من قبلا کار میکردم ولی از بس مرجع کم و ناقص داره دورش خط کشیدم
خوب بیاین چند موضوع ساده معرفی کنیم و شروع کنیم به برنامه نویسی اونا.
میخواین مثل میکرو اولین مثال همون چشمک زن خودمون باشه.
برای این کار باید از یک تایمر استفاده کنیم. چیزی که با هر پالس یکی اضافه بشه و بعد از رسیدن به مقدار مورد نظر پایه ی مورد نظر رو تغییر بده. همین
مثل میکرو نیست که با رجیسترها سر و کار داشته. فقط باید زبان برنامه نویسی بلد باشین و استفاده از ماژولها
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
از یک برد آموزشی شروع میکنیم که من تا فردا شب یک برد cpld کامل توی سایت میزارم با پروگرامر
adc
i2c
kpd
dipsw
microsw
lcd
7segment
estep motor
dc motor
پروگرامر ........ کامل
فیبر 1 لایه که همه ازش استفاده کنند
بفرما اینم برد آموزشی
http://wdl.persiangig.com/pages/down...nx%20board.rar
تا فردا شب برد پروگرامر اونم میزارم .
با سلام
دوست عزیز این فایل پسورد داره ..
؟؟
شرمنده این فایلو توی سایتم که گزاشته بودم پسورد براش گزاشتم
توی ال سی دی اون عکسه پسوردش هست
سلام
بعضی از عزیزان گفته بودن که برنامه نویسی رو با یه مثال آموزش بدیم
اولا تو همون pdf آموزشیش مثال زیاد داره و درضمن اگه صبر کنید که آموزش نرم افزار hdl works و active hdl رو شروع کنیم متوجه میشید که برنامه نویسی اونقدا هم مهمو حیاتی نیست
این به اون معنا نیست که دیگه برنامه نویسی یادنگیریم ولی خب خیلی نمیخاد روش زوم داشته باشید
بازم اگه لازم میدونید میتونم با مثال براتون توضیح بدم
سلام به دوستان
میخواین با کدوم زبون شروع کنین؟؟
اگر کسی توی vhdl, verilog,systemC اشکال داشته باشه در حد توانم میتونم بهش کمک کنم.
کسی آموزش systemc نداره . یه چند تائی مثال ساده .تعریف پروسس توی اون به چه شکله . تعریف کردن متغیر ها ....
سلام مهندس
من آموزش فارسی ندیدم یعنی دنبالش نبود، شاید باشه. بهترین سایت هایی که من میشناسم در این زمینه:
1- WELCOME TO WORLD OF ASIC
2- Free SystemC Training Course from Forte Design Systems
3- Home - Accellera Systems Initiative
که در سایت سومی یک PDF آموزشی داره که میتونی دانلود کنی که به نظر من نسیت به دوتای اولی سخت تر مفاهیم رو گفته.
سایت های اول دوم واقعا عالی هستند. مخصوصا اولی که VHDL و Verilog رو هم خیلی عالی درس داده.
من خودم تا حالا هیچ وقت کد SystemC رو سنتز نکردم و فقط در حد تؤری باهاش کار کردم. در کل این زبان بسیار انعطاف پذیر هست. این زبان حاصل یک پروژه Open Source هست و شرکت های بزرگی مثل Cadence از اون حمایت میکنن. برای یادگیریش باید کاملا با C++ آشنایی داشته باشی. همچنین بهتره با Threads and Interprocess Communication آشنایی داشته باشی. اوایل کار با SystemC یکم سخت به نظر میرسه حتی اگر با VHDL و Verilog آشنایی نسبتا خوبی داشته باشین. در اینجا دیدتون یکم نرم افزاری هم میشه! در اصل این زبان از تعداد خیلی زیادی کتابخانه C++ تشکیل شده.
SystemC قابلیت پشتیبانی از متغییر های C++ رو( مثل int,char,...) داره. علاوه بر اون همانند زبان های توصیف سخت افزاری دیگه مثل VHDL و Verilog رو هم داره. مثال:
[PHP]int i;...............................int داده از نوع
sc_in_clk clock;.................clock سیگنال ورودی از نوع
sc_in<bool> reset ;................(فقط صفر و یک)booleanداده ورودی از توع
sc_lv<16> addr_bus ;................رو یه خودش بگیره z و xکه میتونه مقادیر صفر و یک و logic vector یک متغییر از نوع
[/PHP]
این تمام data type ها نیست. علاوه بران شما میتونی داده ها رو از هر نوعی که خودتون بخواین هم میتونین تعریف کنین( دقیقا مثل C++) مثلا کلاس زیر رو در نظر بگیرید:
[PHP]
class os_task{
friend class os;
public:
os_task();// Constructor
~os_task();// De constructor
private:
string task_name;
enum state task_state;
unsigned int task_id;
unsigned int task_priority;
}; // end class os_task
[/PHP]
حالا میتونیم در یک قسمت از پروژه بنویسیم:
[PHP]os_task *task1;[/PHP]
برای آشنایی اولیه میتونین مثال Producer و Consumer سایت اولی رو که بهتون معرفی کردم رو بخونین. اگه پیدا نکردین بگین من پروژه رو براتون پیوست کنم.
ویرایش توسط hossein1387 : 19-07-2013 در ساعت 07:51
نحوه ی عملکرد برنامه چطور هست. ترتیبی یا همزمان مثل وریلوگ
با این تفاسیر میشه یک برنامه مثل کامپیوتر بنویسی و بدون داشتن پردازنده اون برنامه رو اجرا کنی دیگه؟؟؟؟؟
در کل اگه اطلاع دارید در مورد نحوه ی عملکرد برنامه توضیح بدین. لطفا
پروژه های مهم من در ایران میکرو:
" انتقال اطلاعات با SIM900 " ، " آموزش پورت USB " ، " راه اندازی MFRC522 " ، " راه اندازی SLE4442 " ، ""
توی vhdl میشد هم ترتیبی بنویسیم و هم همزمان . اگه توی پروسس مینوشتیم ترتیبی میشد و بیرون از پروسس همزمان.حتما توی systemc هم میشه
شما میتونین هم برنامه تون رو ترتیبی بنویسین و هم همزمان.
دقیقا! شما میتونی دقیقا یک کد C++ رو با اضافه کردن هدر های مربوطه در این زبون کامپایل کنی. ولی همیکنه بخوای یکم کار رو به سمت سخت افزار نزدیک کنی، دیگه باید از کتابخونه SystemC استفاده کنی. در ضمن شما میتونین با استفاده از VisualStudio و یا هر کامپایلر کد systemC تون رو ران کنید.
در SystemC ابزار های بسیار گوناگونی برای نوشتن کد به صورت همزمان دارین. مثلا در Verilog هر طرح شامل چند ماژول میشه و هر ماژول میتونه شامل چندین بلوک Always بشه که هر کدوم لیست حساسیت خودشون رو دارن. در VHDL هم هر طرح میتونه شامل چندین architecture بشه که هر کدوم شامل چندین بلوک Process با لیست حساسیت های متفاوت هسنتد.
در این زبون ها خیلی از دستورات خاصیت همزمانی رو دارن مثل دستور Assign در Verilog و....
ولی در این زبون ها دیگه صحبتی از Thread ها نیست. یعنی اصلا معادل سخت افزاری براشون نداریم. یا مثلا semaphore ها و یا mutex ها به همین ترتیب. این قابلیت ها در systemC به این دلیل اضافه شدن که بتونه در سطح modelling خوب عمل کنه. علاوه بر اون قابلیت ها زبون های توصیف سخت افزاری رو هم داشته باشه.
مثال:
فرض کنید میخوایم یک ماژول داشته باشیم به اسم cpu که شامل چند تا thread باشه. 3 تا فایل باید ایجاد کنیم:
1- main.cpp
2- CPU.cpp
3-CPU.h
حالا به صورت زیر کد ها رو مینویسم اول از همه main.cpp:
[PHP]#include "CPU.h"
int sc_main(int argc, char *argv[])
{
// create instances
CPU cpu("CPU_instance");
sc_core::sc_start(100, sc_core::SC_MS); --> زمان شبیه سازی
}
[/PHP]
حالا فایل CPU.h:
[PHP]#include "systemc.h"
#define FIFO_SIZE 16
SC_MODULE(CPU)
{
public:
SC_CTOR(CPU): FIFO1(FIFO_SIZE)
{
SC_THREAD(THREAD1);
SC_THREAD(THREAD2);
}
void THREAD1();
void THREAD2();
private:
//Instantiate the FIFO channels
sc_fifo<int data> FIFO1;
};
[/PHP]
کد بالا در ماژول CPU دو Thread به نام های thread1 و thread2 ایجاد میکنه. و بین این دو thread یک fifo ایجاد میکنه. این fifo فقط میتونه دیتا هایی به طول 32 بیت رو جا به جا کنه( چون نوشتیم int data) . کلا هرچی با sc_ شروع میشه مربوط به syntax خود systemC هست.
حالا فایل CPU.cpp:
[PHP] #include "systemc.h"
#include "CPU.h"
void CPU::THREAD1()
{
int i;
for (i=0; i<64; i++)
{
wait(10);
FIFO1.write(i);
}
}
void CPU::THREAD2()
{
int i;
for (i=0; i<64; i++)
{
FIFO1.read(i);
wait(10);
}
}
[/PHP]
در این مثال THREAD1 از طریق FIFO1 به THREAD2 دیتا میفرسته. در ابتدا هر 2 thread با هم اجرا میشوند، اجرا به این معنی که زمان شبیه سازی برای فراخوانی هر کدوم از 0 در نظر گرفته میشود. در thread اولی به یک تاخیر میرسیم ( در اینجا syntax مربوط به تاخیر رو عمدا اشتباه نوشتم!) و در thread دومی به دستور خواندن از fifo میرسیم. چون thread اول هنوز هیچی داخل fifo نگذاشته thread دومی در اینجا منتظر میمونه.(به این میگن blocking read) بعد از گذشت 10 واحد زمانی، thread اول یک دیتا داخل fifo میریزه و به همین ترتیب ادامه پیدا میکنه. Thread ها فقط یکبار اجرا میشوند.
همونطور که گفتم اگر مثال producer و consumer رو بخونین یکم دستتون میاد که چی به چی هست!!
ویرایش توسط hossein1387 : 20-07-2013 در ساعت 11:45
آقای عسگری متشکرم
من Verilog کار میکنم .دیدم نسبت به SystemC عوض شد. امیدوارم آموزش ادامه داشته باشه.
بازم ازشما ممنونم
سلام مهندس خواهش میکنم.
والا من قصدم این نیست که هدف اصلی این تاپیک که آقای طبسی زحمتش رو کشیده منحرف کنم. یکی از دوستان پرسیدن که در systemC چه جوری میشه کد نوشت من یک مثال براشون آماده کردم. به نظر من اگه این تاپیک بخواد موفق بشه با همون VHDL که بچه ها شروع کردن ادامه بدیم بهتره. مشکلی که systemC داره اینه که synthesizer کدش ( به صورت کرک شده) گیر نمیاد. من خیلی پیگیر این ماجرا نبودم و خوشحال میشم کسی ثابت کنه اشتباه میکنم. ولی اگر خواستین یک تاپیک جدا گونه باز کنیم و اشکال های این زبون ها رو(vhdl,verilog,systemC) از هم بپرسیم.
با عرض سلام و خسته نباشید
به همه ی دوستان
خیلی ببخشید که این حرف رو میزنم قصد بی احترامی و نادیده گرفتن زحمات دیگران رو ندارم
ولی این طرز اموزش به هیچ دردی نمیخوره
نمیشه همین طوری شروع به اموزش کرد و رفت جلو و بگیم خدا بزرگه
اول باید ببینیم کجا هستیم و می خواهیم به کجا برسیم
شما به سایتهایی مثل سایت اشیانه یه سر بزنید از ویروس نویسی و هک فیس بوک گرفته تا سوکت نویسی و کار با پورتها مطلب هست
ولی اصولی کار شده این طوری نمیشه که یکی بگه اموزش fpga و بسم الله
شما حتی نگفتید که میخواهید چه زبانی اموزش بدید قرار هست شئی گرا باشه
قرار هست سی اموزش بدید وری لوگ هست یا هر چیز دیگه ای
اگر قرار باشه همین طوری ادامه بدید این تاپیک به هیچ جایی نمیرسه
در مورد اون دوستانی که دنبال زبان vhdl هستند بهترین کتاب نوشته ی اقای نوابی هست که انگلیسی نوشته شده و ترجمه اش هم جدیدا به چاپ رسیده
اگر اشتباه نکنم ایشون کتاب وریلوگ هم به انگلیسی نوشته پس الکی وقت تلف نکنید
من هم موافق هستم.
البته نمیدونم منظورتون من بودم یا نه ولی همونطور که گفتم من اصلا نمیخواستم systemC آموزش بدم. به نظر من اصلا کار جالبی نیست که با systemC شروع کنیم. اون 2 تا کدی که من بالا نوشتم هیچ کدومشون قابل سنتز نیستند!
در مورد آموزش VHDL و Verilog هم به نظر من هم کتاب دکتر نوابی هم برای VHDL و هم برای Verilog از هر نظر کامل هست. من خودم با همین دو تا کتاب شروع کردم. کتاب Verilog ایشون توی نت پیدا میشه ولی کتاب VHDL دکتر نوابی توی نت نیست.
سلام
اول که معذرت واسه این تاخیر پیش اومده
راستش داشتم یکم رو تابلو روان کار میکردم و تو سایت یکی از دوستان هم داشتم درمورد میکرو مطلب میزاشتم واسه همین خیلی سرم شلوغ بود
بعدم که اومدم دیدیم دوستان خیلی فعالیت کردن گفتم سکوت اختیار کنم بهتره
من خودم راستش زبان وریلوگ کار کردم و دوس داشتم برا اموزشم همونو پیش بریم ولی دوستان پیشنهاداشون زیاده
بازم هرجور دوستان صلاح میدونن
درضمن قرار بود اموزش یسرینرم افزارای هوشمندو قرار بدم که خودشون برنامرو بهتون اماده میدن
ولی گفتم بهتره اول زبانو کامل اموزش بدیم بعد بریم سراغ اون نرم افزارا
قبلا یه حی دی اف آموزش وریلوگ و وی اچ دی ال رو واسه دانلود گذاشته بودم
از پست بعدی اموزش رو کامل شروع میکنم
التماس دعا تو این ماه عزیز