برنامه RAM در VHDL

شروع موضوع توسط hamid133 ‏8 فوریه 2007 در انجمن برق و الکترونیک

  1. hamid133

    hamid133 کاربر تازه وارد

    تاریخ عضویت:
    ‏2 آپریل 2006
    نوشته ها:
    63
    تشکر شده:
    0
    سلام خدمت همه دوستان.
    من چند روزه سعي كردم برنامه يك RAM خيلي ساده رو با VHDL بنويسم اما نتونستم.
    از دوستاني كه در اين رمينه كار كردند تقاضاي كمك دارم.
    خيلي ممنون.
     
  2. خدمات پی پالبازدیدیار - افزایش بازدید سایت و سیگنال های برند
  3. arashkhan

    arashkhan کاربر فعال برق و الکترونیک کاربر فعال

    تاریخ عضویت:
    ‏21 آپریل 2006
    نوشته ها:
    483
    تشکر شده:
    4
    محل سکونت:
    51.50 , 35.75
    بیشتر توضیح بده. چند بیتی. چطوری کار کنه؟ ورودی؟ خروچی؟ کلاک؟ ریست؟
     
  4. aliopamp

    aliopamp کاربر تازه وارد

    تاریخ عضویت:
    ‏6 می 2006
    نوشته ها:
    35
    تشکر شده:
    1
    محل سکونت:
    hija
    فکر کنم بشماتیک بتونی
     
  5. aliopamp

    aliopamp کاربر تازه وارد

    تاریخ عضویت:
    ‏6 می 2006
    نوشته ها:
    35
    تشکر شده:
    1
    محل سکونت:
    hija
    اگر نتونستی برات می پرسم و بهت می گم
     
  6. rezamansouri

    rezamansouri کاربر تازه وارد

    تاریخ عضویت:
    ‏30 مارس 2005
    نوشته ها:
    146
    تشکر شده:
    3
    محل سکونت:
    Tehran
    سلام
    اینم یک رم ساده
     

    فایل های ضمیمه:

    • RAM.zip
      اندازه فایل:
      645 بایت
      نمایش ها:
      63
  7. hamid133

    hamid133 کاربر تازه وارد

    تاریخ عضویت:
    ‏2 آپریل 2006
    نوشته ها:
    63
    تشکر شده:
    0
    با سلام خدمت دوستان.
    عرض كنم كه يكي از بچه ها ميخواست يه فركانس متر بسازه(خيلي سريع)
    من قرار شد مقدار فركانس رو در يك رم 4*4 بنويسم كه 4 بيت اول مقدار ضريب رو مشخص كنه(كيلو يا مگا) وبقيه 3 رقم فركانس رو.(البته من در آينده نزديك ميخوام يه رم 128*8 براي خودم راه بندازم)
    هر يك ثانيه avr بياد و ديتا رو بخونه و رو lcd نشون بده.من يه پايه enable يه پايه reset دو خط آدرس و 4 خط ديتا در نظر گرفتم.كه avr اول آدرسو قرار بده بعد enable بده تا ديتا خارج بشه.و هر يه ثاني يه بار رم بوسيله avr پاك بشه.
    من طوري برنامه رو نوشتم كه رم بوسيله دستورات خود برنامه اطلاعات ورودي را دريافت كنه.يعني از خارج cpld ديتايي روي رم ذخيره نميشه.
     
  8. hamid133

    hamid133 کاربر تازه وارد

    تاریخ عضویت:
    ‏2 آپریل 2006
    نوشته ها:
    63
    تشکر شده:
    0
    سلام رضا جان.
    برنامتو ديدم.
    برنامه اي كه من نوشتم مثل برنامه اول شما بود.فقط شما چند خط اضافه نوشتي كه من سر در نياوردم.
    signal ram:ram_type :=(
    "0010000000010010",
    "0110000100010000",
    "0010000000010011",
    "0110001000100000",
    "0000000000010010",
    others=>(others=>'0'));
    من فقط signal ram:ram_type رو نوشتم.اين اعداد چه كار ميكنند؟
    برنامه دوم رو هم كه درست نفهميدم.اما در يك كتاب خوندم كه دستورات تاخير(wait for,after) قابل سنتز شدن نيستند و نرمافزار آنها را ناديده ميگيرند.
    راستي شما برنامه ها رو عملا تست كردي؟
     
  9. arashkhan

    arashkhan کاربر فعال برق و الکترونیک کاربر فعال

    تاریخ عضویت:
    ‏21 آپریل 2006
    نوشته ها:
    483
    تشکر شده:
    4
    محل سکونت:
    51.50 , 35.75
    الان بهت جواب میدم
     
  10. arashkhan

    arashkhan کاربر فعال برق و الکترونیک کاربر فعال

    تاریخ عضویت:
    ‏21 آپریل 2006
    نوشته ها:
    483
    تشکر شده:
    4
    محل سکونت:
    51.50 , 35.75
    سعی کردم برات به زبون ساده بنویسم.

    منظور از data1 وdata2 وdata3 وkiloomega همون اطلاعاتی هست که در رم قرار میدی(خودت میدونی از کجا میاد.) فقط یادت بشه برای کارهای دیگه(تشخیص فرکانس) یه حلقه process دیگه بسازو به این حلقه کار نداشته باش.

    با دادن 00 و 01 و 10 و 11 در قسمت آدرس میتونی هر کدوم از مقادیر بالا رو از رم برداشت کنی.

    وقتی ریست میکنی(res=1) در حقیقت خروجی رم رو پاک میکنی. من برات حالت پیش فرض امپدانس بالا 'ZZZZ' در نظر گرفتم. اگه دوست داشتی با '0000' عوضش کن.

    پس اول res=0 می کنی . بعد آدرس میدی. حالا en=1 می کنی. خروجی رو می خونی.(برای هر آدرس یک بار انجام میدی) بعد res=1 قرار میدی تا رم پاک بشه. یک ثانیه بعد همه این کارها رو از اول انجام میدی.
     

    فایل های ضمیمه:

    • RAMvhd.doc
      اندازه فایل:
      27.5 KB
      نمایش ها:
      33
  11. rezamansouri

    rezamansouri کاربر تازه وارد

    تاریخ عضویت:
    ‏30 مارس 2005
    نوشته ها:
    146
    تشکر شده:
    3
    محل سکونت:
    Tehran
    سلام
    اولی خود برنامه رم است و دومی TestBench آن است .
    اون عدد ها هم برای وقتیه که بخوای برای تست مقدار اولیه تعیین کنی.
     
  12. hamid133

    hamid133 کاربر تازه وارد

    تاریخ عضویت:
    ‏2 آپریل 2006
    نوشته ها:
    63
    تشکر شده:
    0
    خيلي مچكرم.الان ميريزمش رو آي سي ببينم جواب ميده يانه.
    بازم تشكر.
     
  13. hamid133

    hamid133 کاربر تازه وارد

    تاریخ عضویت:
    ‏2 آپریل 2006
    نوشته ها:
    63
    تشکر شده:
    0
    سلام.
    همونطور كه گفتم من اين برنامه رو عملا تست كردم اما جواب نداد.
    راستي همين الان دستور after رو هم تست كردو اونم جواب نداد.
    از لطف شما ممنون.
     
  14. hamid133

    hamid133 کاربر تازه وارد

    تاریخ عضویت:
    ‏2 آپریل 2006
    نوشته ها:
    63
    تشکر شده:
    0
    سلام
    من يه برنامه شبيه شما نوشته بودم وريختم رو آي سي اما جواب نداد.
    ببين ميتوني مشكلشو پيدي كني؟
    خيلي ممنون.
     

    فایل های ضمیمه:

  15. hamid133

    hamid133 کاربر تازه وارد

    تاریخ عضویت:
    ‏2 آپریل 2006
    نوشته ها:
    63
    تشکر شده:
    0
    با سلام دوباره...
    ببخشيد من مدام مزاحم ميشم.
    براي اين پروژه (فركانس متر) من اول يك كانتر نوشتم كه توپ جواب داد.
    و بعد اين برنامه رو با برنامه رم ميكس كردم كه هيچ رقم جواب!!! نداد.(انگار آي سي خاموش بود)
    اما يك ساعت پيش همون برنامه رم رو جدا نوشتم اين بار تقريبا جواب داد.اما خروجي ها رو اشتباه ميده و هيچ ربطي هم با مقدار صحيح نداره(مثلا ناتش نيست يا...).
    من كه حسابي گيج شدم!!!
    اينم برنامه اي كه نوشتم.
     

    فایل های ضمیمه:

    • hamid_ram.doc
      اندازه فایل:
      20.5 KB
      نمایش ها:
      15
  16. arashkhan

    arashkhan کاربر فعال برق و الکترونیک کاربر فعال

    تاریخ عضویت:
    ‏21 آپریل 2006
    نوشته ها:
    483
    تشکر شده:
    4
    محل سکونت:
    51.50 , 35.75
    نمی دونم چرا اینجوری آرایه ساختی؟ البته غلط نیست.

    برنامه ات رو با project navigator تحلیل کردم همش درست بود. برنامه ای که من به شما دادم درست نبود و اصلاحش کردم درست شد.اما اینکه چرا برای شما کار نمی کنه رو نمی دونم. بهترین راهش اینه که با model sim تحلیل بشه. نرم افزارشو دارم اما جای کافی روی هارد ندارم که نصبش کنم.
    شاید پای پایه ها رو درست تعریف نکردی؟ در صمن سعی کن برای هر کدوم از ورودی خروجی هات یه سیگنال تعریف کنی.
    حالا به تست هم با اینی که من نوشتم بزن ببین جواب میده یا نه؟
     

    فایل های ضمیمه:

    • my_ram.doc
      اندازه فایل:
      26 KB
      نمایش ها:
      33
  17. rezamansouri

    rezamansouri کاربر تازه وارد

    تاریخ عضویت:
    ‏30 مارس 2005
    نوشته ها:
    146
    تشکر شده:
    3
    محل سکونت:
    Tehran
    سلام
    ظاهرا همه چیز درسته . همه این رم ها روی modelsim جواب میدن پس مشکل در سنتز رم است.
    راستی شما از چه FPGA ای استفاده می کنید ؟
    اگر رم جداگانه جواب میده و کانتر هم جداگانه جواب میده ممکنه ایراد از FPGA باشه . در بعضی از انواع رایج FPGA مثل سری MAX آلترا Dual Port RAM ساپورت نمیشه . حالا بستگی داره سنتز تول شما برنامه را چطوری سنتز کنه .
    اگر من جای شما بودم در محیط شماتیک از یک کانتر و آرایه ای از فلیپ فلاپ استفاده می کردم .
     
  18. hamid133

    hamid133 کاربر تازه وارد

    تاریخ عضویت:
    ‏2 آپریل 2006
    نوشته ها:
    63
    تشکر شده:
    0
    سلام به اساتيد محترم...
    من با نرم افزار ise.v.7.1) كار كردم.اما شبيه سازيشو هنوز ياد نگرفتم.modelsimo دارم.كار كردن باهاش آسونه؟؟؟
    راستي برنامه رم درست كار نميكونه ها.من با xc9572 دارم كار ميكنم.
    اگه راهنماييم كنيد ممنون ميشم.
     
  19. AmirKhanTala

    AmirKhanTala Registered User

    تاریخ عضویت:
    ‏4 آگوست 2006
    نوشته ها:
    164
    تشکر شده:
    3
    به نظر من ISE هم آسونتره و هم کاراییش کمتره. به هر حال برنامه ها درستن. ببین کجا مشکل داری. اگه از این بردهای آماده بازار گرفتی که یک کلید دو حالته 1 و 2 داره بهش دقت کن. شماره رو برد رو بخون نه کلید رو. به هر حال یه بار عوضش کن و دوباره پروگرام کن.
     
  20. hamid133

    hamid133 کاربر تازه وارد

    تاریخ عضویت:
    ‏2 آپریل 2006
    نوشته ها:
    63
    تشکر شده:
    0
    از لطفت ممنونم.
    بزار يه سوال ازت بپرسم:
    وقتي برنامه رم وكانتر رو تركيب ميكنم يه سري وارنينگ ميده كه كانتر ورم مقدار ثابت صفر دارند.
    مشكل كجاست؟
    حسابي ذهنمو مشغول كرده.
     
  21. arashkhan

    arashkhan کاربر فعال برق و الکترونیک کاربر فعال

    تاریخ عضویت:
    ‏21 آپریل 2006
    نوشته ها:
    483
    تشکر شده:
    4
    محل سکونت:
    51.50 , 35.75
    خوب برنامه ات رو بذار همه ببینن و نظر بدن.
     
عسل طبیعی و گرده گل ایرانی