# برنامه نویسی میکروکنترلر (MicroController) ها و MicroProcessor ها > برنامه نویسی سیستم های Embeded > حرفه ای: IP Core Designing(HDL Programming)

## M_Ali_Safdari

سلام
این مبحث به Embedded ها ارتباطی نداره ولی نزدیک ترین قسمت به این موضوع فکر می کنم اینجا باشه.
کسی تمایل داره در این مورد بحث کنیم؟

----------


## farzadsw

اتفاقا به embedded مربوط میشه . منم به این زمینه علاقه دارم ، 
  قراره یه طور کلی صحبت بشه یا به طور خاص؟
-----------------------------
   اگه به طور خاصه با چه نوع FPGA و زبانی؟
 من یه بورد برای fpga ی altera  دارم(cyclone II ) دارم برای همین میتونم به صورت عملی هم تست کنم. (من کار با fpga رو تازه شروع کردم ) . فکر کنم از vhdl به جای verilog استفاده بشه بهتره.

----------


## M_Ali_Safdari

سلام
فکر می کنم سلایق من با شما باید نزدیک باشه ، امیدوارم همکاری خوبی داشته باشیم.

من بیشتر طراحی ریسک کار می کنم،کارای دیگه هم زیاد نوشتم که بیشترش خورده ریز بوده ،مهمترین ها :USB host v1.1,Mini RISC,VGA Core,Frame grabber,...

در مورد چیپ  مهم نیست، همین که تو شبیه سازی کار کنه کفایت می کنه چون هدف کار کردن با FPGA نیست هدف طراحیCore 
ولی به هر حال من ALtera خیلی کم استفاده کردم بیشتر با محصولات XillinX کار انجام دادم

زبان VHDL رو زیاد کارنمی کنم چون بیشتر اطلاعات و Sample هایی که پیدا می کنم Verilog نمی دونم چرا .به هر حال با Verilog خیلی بیشتر کار کردم و به نظرم تفاوتی بین این دو نیست.اگر کسی از دوستان می دونه که آیا واقعآ تفاوتی دارند یا نه لطف کنه بنویسه.

الان در دوکار زیر همکاری می کنم،که امیدوارم مقاله های خوبی شوند
Analysis comparison on 0.18um Full adder block for arithmetic circuits (VLSI)
VOIP Implementation(SOC)

البته اولی رو 6 ماهی است کار کردیم ولی دومی تازه گی داره شروع می شه.
امیدوارم بتونم از وجود شما و سایر دوستان استفاده کنم.
-------------------------------------------------------------------------------------------------------
در ضمن یادم رفت بگم:هر نوع طراحی دیجیتال که به سیستم های Embedded مربوط نیست!

----------


## farzadsw

verilog  رو بیشتر استفاده میکنن ، چون هم زبان روانتری هست(!) و هم یادگیری اون راحت تره . البته پیچیدگی vhdl این مزیت رو هم داره که انعطاف پذیری بیشتری داره و برای کار های خیلی پیچیده مناسبتره. سایتهای زیادی مقایسه کردن از جمله تو اینجا:
http://www.edaboard.com/ftopic250810.html
   منم چون تازه شروع کردم و هنوز به هیچ کدومشون عادت نکردم ، سعی میکنم از این به بعد با verilog ادامه بدم.

----------


## masi.a

با سلام
 embedded processor ها  به صورت های Hard-Core IP و Soft-Core IP وجود دارند. برای نمونه:

1Altera EXCALIBUR with ARM9TDMI processor core
2.Xilinx MicroBlaze 32-bit soft RISC architecture processor with Harvard-model
3.Altera NIOS, a configurable, 16- or 32-bit general-purpose RISC soft core processor
4.LEON, a fully synthesisable 32-bit processor(VHDL model)
5.OpenRISC 1200, 32- and 64-bit RISC/DSP Core(Verilog RTL)
6.Xilinx Virtex-II Pro architecture uses the PowerPC 405D5 32-bit scalar RISC architecture processor core
7.Xilinx PicoBlaze 8-bit Embedded Microcontroller
etc,
که تعداد زیادی OS و embedded OS روی این ها پورت کردن یا در حال پورت کردن هستند:
Micriμm: μC/OS-II, eCos, uCLinux, emmbeded Linux,
WindowsCE, ,Linux, NetBSD, etc
که هر کدام داری اسمبلر، کامپایلر C، دیباگر و شبیه ساز مخصوص به خود و بعضا استودیوی طراحی و پیکر بندی پردازنده می باشند.
4 و 5 تحت GPL یا LGPL هستند لذا گزینه های جذابی برای یادگیری، تغیر و پیاده سازی می باشند.
بحث جذاب و گسترده ای است...
اگر کسی علاقمند باشه، بنده مشتاق همکاری و کار گروهی بر اساس یک Road map مشخص هستم.(ضمنا این تاپیک رو در eca هم مطرح کردم)
منابع مفید:
1www.opencores.org
2.http://emsys.denayer.wenk.be
3.http://www.gaisler.com
کتاب های مفید:
1.Circiut Design with VHDL,V.A.Pedroni
2.طراحی دیجیتال پیشرفته با Verilog HDL، چیلتی-ترجمه شکاری زاده-انتشارات نص
که 1 فوق العاده است و 2 واقعا عالی است.

----------


## M_Ali_Safdari

سلام
برای موضوع دومی که دارم کار می کنم به IP Core هایی نیاز دارم که البته باید خودم طراحی کنم.
و فعلآ به علت مشغله ای که دارم ، فقط می تونم در مواردی که مربوط به موضوع مقاله  ذکر شده باشه فعالیت کنم.

منظور اصلی من از ایجاد این تاپیک، بحث در مورد طراحی IP CORE بود و نه استفاده از اونها و نه فقط Processor ها.اما بحث در مورد بکار گیری هم اگر دوستان مایل باشند بسیار جالبه و جای کار داره.

----------


## masi.a

- اگر هدف طراحی یک IP core processor هم باشه روش خوب، شروع از معماری ها و پردازنده های موجود و تغییر و توسعه اونهاست.طراحی یک IP Core علاوه بر مباحث عمومی مرتبط با معماری و ISA، برای این که عملیاتی و سنتز بشه،حاوی نکات و جزئیات مهندسی و عملیاتی زیادی هم هست که بهترین منبع برای یاد گیری این موارد بررسی معماری و سورس کد HDL پردازنده های واقعی است
- leaon و openRisc1k هر دو open source پر قدرت و مناسب و با ویژگی های embedded هستند. خوب مستند شدند، پشتیبانی خوبی دارند، روی FPGA های مختلف سنتز شدند، چند تا OS و embedded OS روشون پورت کردند و دارن پورت می کنند.openRISC1k هم 32بیتی است و هم 64 بیت؛فکر کنم که leon به صورت ASIC هم ساخته شده،نسخه دو هسته ای اون هم release شده!)،میکروکنترلرهشت بیتی Xilinx picoBalze هم گزینه ساده اما جالبی است.core های مختلف دیگه ای هم رو سایت opencores هست.پیاده سازی های زیادی هم از پروسسور MIPS  و به خصوص MIPS R3k  به صورت های مختلف رو وب هست(همونی که تو کتاب معماری پترسون مطرح شده)
 single cycle,multi cycle,piplined,multi threaded و حتی Asynchronous (خیلی جالبه!)
کتاب پترسون یک نمونه ساده اش رو داره(با اسمبلر) و کتاب چیلتی هم یک پردازنده ساده RISC رو توضیح داده و مدل کرده همراه با اسمبلرش ... .
حتی پیاده سازی های نرم افزاری پردازنده ها و core ها (معمولا با اهداف simulation) که یک مثال بارز اون simple scaler (هم ARM و هم MIPS64) هست می تونه حاوی نکات مفیدی باشه.
- به هر حال طراحی یک core علاوه بر مباحث اصلی طراحی، شامل مباحث نرم افزاری هم هست: حداقل طراحی یک اسمبلر و بعدش کامپایلر که خودش یک پروژه کامله، چه پردازندمون GP باشه و یا این که SP باشه. مباحث جانبی دیگری مانند debugging (از دیدی سخت افزاری) یا TLM  و نیز simulaton هم می تونه مطرح باشه. طراحی peripheral ها مثلا UART هم می تونه طرح بشه. دامنه کار می تونه وسیع باشه از یک میکروکنترلر ساده SP تا یک پردازنده GP با MMU , ...
- پیشنهاد بنده اینه که یکی از این موارد یا موارد مشابه رو انتخاب کنیم و با کار روی معماری و کد HDL اونها سعی کنیم اونها رو تغییر و بهبود و توسعه بدیم، سنتز کنیم، پروپوزال مطرح کنیم. با این تجربه فکر کنم که بهتر بتونیم به یک design جدید فکر کنیم.

----------


## M_Ali_Safdari

ضمن عرض سلام و پوزش از اینکه به علت گرفتاری زیاد خیلی دیر می نویسم.

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




> به هر حال طراحی یک core علاوه بر مباحث اصلی طراحی، شامل مباحث نرم افزاری هم هست


دوست عزیز IP Core  ها که فقط به پروسسور ها خلاصه نمی شوند.همانطور که خودتان در ابتدای مطلب فرموده اید اگر هدف طراحی پروسسور باشد ....

من فکر می کنم ابتدا باید تصمیم بگیریم که چه چیزی طراحی کنیم.

----------


## SystemProgrammer

سلام، ميشه بگي رو چه متودولوژي كار ميكني؟ من خيلي وقته ديگه از اين كارا نكردم، ولي تا اونجا كه يادم هست. اين اواخر زبان systemC و SystemVerilog اومده بود كه بتونه بحث نرم افزار و سخت افزار رو تو SOC ها حل كنه! حالا نميدونم ابزار سنتز هاي درست حسابي براي اين زبونها ايجاد شده يا نه؟ حدود 5 6 سال پيش فقط sysnopsys بود كه systemC رو براي سنتز پشتيباني ميكرد. به گمونم شما براي كار با xillinx الان از ISE و EDK استفاده ميكنيد

----------


## M_Ali_Safdari

> سلام، ميشه بگي رو چه متودولوژي كار ميكني؟ من خيلي وقته ديگه از اين كارا نكردم، ولي تا اونجا كه يادم هست. اين اواخر زبان systemC و SystemVerilog اومده بود كه بتونه بحث نرم افزار و سخت افزار رو تو SOC ها حل كنه! حالا نميدونم ابزار سنتز هاي درست حسابي براي اين زبونها ايجاد شده يا نه؟ حدود 5 6 سال پيش فقط sysnopsys بود كه systemC رو براي سنتز پشتيباني ميكرد. به گمونم شما براي كار با xillinx الان از ISE و EDK استفاده ميكنيد


دوست عزیز مطمئن هستید که تفاوت متودولوژی طراحی و ابزار طراحی را بدرستی می دانید؟
ابزار هایی که فرمودید ابزار های طراحی هستند که در رشته های مختلف استفاده می شوند و مختص SOC نیستند!

همون 5 یا 6 سال پیش هم ISE رو علاوه بر نرم افزارهای دیگه استفاده می کردم(ISE سال 2000 عرضه شده پس چندان جدید هم نیست؟!)

در مورد "بحث نرم افزار و سخت افزار رو تو SOC ها حل كنه!" اگر امکان دارد توضیح دهید که چه بحثی؟
تا جایی که من اطلاع دارم System Verilog تلفیق زبان توصیف Vierilog HDL با زبان های اعتبار سنجی(HVL) است که در نهایت اعتبار سنجی  و اطمینان ازصحت مدار را همزمان با نوشتن کد اصلی و با همان گرامر شبیه به Verilog امکان پذیر می سازد و قطعآ این مشکل یا به قول شما بحث مختص به SOC نیست!

و در نهایت نکته دستور زبانی: SOC به نظر من قابل جمع بستن نیست که با "ها" جمع بسته اید.مثل این است که بگوییم رشته مخابرات ها، رشته برق ها.آیا به نظر شما صحیح است؟

----------

