اطلاعیه

Collapse
No announcement yet.

شبیه سازی یک ethernet interface ساده

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    شبیه سازی یک ethernet interface ساده

    با عرض سلام خدمت دوستان
    من قصد دارم ی اترنت اینترفیس (با verilog) شبیه سازی کنم و براش تست بنچ بنویسم. سپاسگزار میشم اگر دوستان با نظرات و بیان تجربیاتشون راهنماییم کنن.
    از ارائه نظرات، فایل ها (thesis, tutorial, ...) و ... پیشاپیش تشکر می کنم.
    در رابطه با آشنایی خودم نسبت به موضوع باید عرض کنم که ی آشنایی ابتدایی با مفهوم اترنت دارم و hdl رو هم در حد ی درس 3واحدی بلدم ولی از اونجایی که تا حالا پروژه درست و حسابی در این زمینه انجام ندادم نمیدونم دقیقا باید از کجا شروع کنم. بخصوص در رابطه با کد نویسی. آخه برنامه هایی که برای کلاس و امتحان نوشتم خیلی ساده تر از این مورد بوده.

    #2
    پاسخ : شبیه سازی یک ethernet interface ساده

    سلام
    من خودم دارم رو پیاده سازی یه اترنت کنترلر با fpga کار میکنم. البته هنوز خیلی پیش نرفتم. پروژه من صرفاً به لایه فیزیکی و دیتا لینک محدود میشه. بنابراین فقط باید دریافت و ارسال packet و تقسیم بندی اون در همون حد لایه دیتا لینک رو درست پیاده سازی کنم.

    تا اونجایی که میدونم واسط های اترنت تا لایه شبکه و پروتکل های این لایه رو هم ساپورت میکنن. شما هم چنین سیستمی میخوای طراحی کنی؟ البته بین این دو حالت خیلی فرق بزرگی نیست و اگه بتونی همون packet رو درست بگیری و بفرستی دیگه باز کردن و تقسیم بندی اش زیاد کار سختی نیست ولی ریزه کاری های زیادی رو باید در نظر بگیری.

    برای شروع به نظر من اول باید یه نقشه کامل از سیستم کلی ات داشته باشی. و پورت های اصلی سیستم رو تعیین کنی. بعد باید ساختار داخلی ات رو تقسیم بندی کنی. یه ساختار عمومی توی این لینک هست: http://students.ou.edu/S/Ashwin.Seshadri-1/ ساختار خوبی داره یا حداقل بهت دید میده که چطور سیستم رو تقسیم بندی کنی.

    بعد از تعریف ماژول های داخلی که باید داشته باشی و پورت های ارتباطی اونا دیگه صرفاً کار کد زدن می مونه. هرچقدر تعداد ماژول ها بیشتر باشه و وظایف اونا محدودتر و با جزئیات بیشتر باشه، کار کد زدن آسون تر میشه. به طور مثال فرض کن داری یه ضرب کننده میسازی. برای پیاده سازی ضرب دوتا عدد ما به دو عملگر جمع و شیفت نیاز داریم. یا راه ساخت اینه که توی یه کد کل ضرب کننده رو پیاده کنیم. راه دوم اینه که یه ماژول جمع کننده داشته باشیم و یه ماژول شیفت دهنده. بعد در یه کد دیگه برای تولید ضرب کننده از این دوتا ماژول استفاده کنیم. بدیهیه در روش دوم در طراحی ماژول ها کار واضح تر و ساده تر شده، وظایف هر ماژول خیلی واضح معلومه. این مثال خیلی ساده بود ولی توی پیاده سازی یه کنترلر اترنت قطعا تقسیم سیستم به 10-15 تا ساب سیستم خیلی کار رو آسون تر میکنه نسبت به حالتی که کلا شاید 5-6 تا ساب سیستم داشته باشی.

    در نهایت هم که دیگه تک تک ماژول ها جدا تست میشن و بعد تو یه فایل جدا ازشون نمونه میگیری و مدار رو سر هم میکنی. فقط چند تا نکته این وسط میمونه که باید بهشون دقت کنی. یکی اینکه ارسال و دریافت فریم خیلی داستان داره. مثلاً برای CRC کد تو نت زیاد هست ولی اینکه بفهمی کدی که گرفتی دقیقه چطوری باید به سیستم ات اضافه بشه یکمی گیر داره که به مرور زمان متوجه میشی. یا یه مورد دیگه مسئله انتخاب یه آدرس کارت شبکه برای آی سی ای که داری میسازی و بعد چگونگی فهموندن این آدرس به کامپیوتر مقابل خودش به نظر من یکمی گیر داره ولی من هنوز در اون سطح پیش نرفتم.

    من خودم VHDL کد میزنم و Verilog هم تا حالا کار نکردم. ولی فکر میکنم با اونچه که از کلاس بلدی میتونی ماژول های توی لینک بالا رو پیاده سازی کنی، مخصوصاً اگه باز این ماژول ها رو ساده تر کنی. عنوان لینک گفته کد VHDL ولی در عمل ساختار سیستم رو داده و کد زدنش کار خودته که میتونه با هر زبان توصیف سخت افزاری باشه. حتماً یه نگاه به آخر لینک بنداز توی قسمت "مشکلاتی که دریاره سازی سیستم" داشتن. گفته این سیستم ناقصه! و یک سری مشکلات پیدا کردن. هرچند به نظر خودم طراحی سخت افزار با fpga با cpld اگه اصولی باشه مشکلاتی که گفته روبرو نمیشه مخصوصا اگه کار شبیه سازی سیستم و ساب سیستم هاش با برنامه های قوی ای مثل ISE یا ModelSim باشه ولی خب این سیستم جواب کامل نداده و صرفا یه استارته برای اینکه بدونی چکار میخوای کنی.

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

    دیدگاه


      #3
      پاسخ : شبیه سازی یک ethernet interface ساده

      ممنون از راهنماییتون
      لینکی هم که گذاشتین خیلی خوب بود. بخصوص در رابطه با تقسیم بندی. در واقع تا حالا اینجوری به قضیه نگان نکرده بودم که کل فرآیند رو به تعدادی ساب سیستم تقسیم کنم.
      فعلا هم دارم اطلاعات جمع میکنم و قدم به قدم پیش میرم :read:
      ببینم چی میشه.

      دیدگاه

      لطفا صبر کنید...
      X