برگزیده های پرشین تولز

برنامه RAM در VHDL

hamid133

کاربر تازه وارد
تاریخ عضویت
2 آپریل 2006
نوشته‌ها
69
لایک‌ها
0
سلام خدمت همه دوستان.
من چند روزه سعي كردم برنامه يك RAM خيلي ساده رو با VHDL بنويسم اما نتونستم.
از دوستاني كه در اين رمينه كار كردند تقاضاي كمك دارم.
خيلي ممنون.
 

arashkhan

کاربر فعال برق و الکترونیک
کاربر فعال
تاریخ عضویت
21 آپریل 2006
نوشته‌ها
485
لایک‌ها
7
محل سکونت
51.50 , 35.75
سلام خدمت همه دوستان.
من چند روزه سعي كردم برنامه يك RAM خيلي ساده رو با VHDL بنويسم اما نتونستم.
از دوستاني كه در اين رمينه كار كردند تقاضاي كمك دارم.
خيلي ممنون.

بیشتر توضیح بده. چند بیتی. چطوری کار کنه؟ ورودی؟ خروچی؟ کلاک؟ ریست؟
 

aliopamp

کاربر تازه وارد
تاریخ عضویت
6 می 2006
نوشته‌ها
35
لایک‌ها
1
محل سکونت
hija
فکر کنم بشماتیک بتونی
 

aliopamp

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

rezamansouri

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

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

  • RAM.zip
    645 بایت · نمایش ها: 69

hamid133

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

hamid133

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

arashkhan

کاربر فعال برق و الکترونیک
کاربر فعال
تاریخ عضویت
21 آپریل 2006
نوشته‌ها
485
لایک‌ها
7
محل سکونت
51.50 , 35.75
الان بهت جواب میدم
 

arashkhan

کاربر فعال برق و الکترونیک
کاربر فعال
تاریخ عضویت
21 آپریل 2006
نوشته‌ها
485
لایک‌ها
7
محل سکونت
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 · نمایش ها: 34

rezamansouri

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

hamid133

کاربر تازه وارد
تاریخ عضویت
2 آپریل 2006
نوشته‌ها
69
لایک‌ها
0
سعی کردم برات به زبون ساده بنویسم.

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

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

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

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

hamid133

کاربر تازه وارد
تاریخ عضویت
2 آپریل 2006
نوشته‌ها
69
لایک‌ها
0
سلام
اولی خود برنامه رم است و دومی TestBench آن است .
اون عدد ها هم برای وقتیه که بخوای برای تست مقدار اولیه تعیین کنی.
سلام.
همونطور كه گفتم من اين برنامه رو عملا تست كردم اما جواب نداد.
راستي همين الان دستور after رو هم تست كردو اونم جواب نداد.
از لطف شما ممنون.
 

hamid133

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

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

  • hamid_ram.doc
    20 KB · نمایش ها: 22

hamid133

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

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

  • hamid_ram.doc
    20.5 KB · نمایش ها: 15

arashkhan

کاربر فعال برق و الکترونیک
کاربر فعال
تاریخ عضویت
21 آپریل 2006
نوشته‌ها
485
لایک‌ها
7
محل سکونت
51.50 , 35.75
با سلام دوباره...
ببخشيد من مدام مزاحم ميشم.
براي اين پروژه (فركانس متر) من اول يك كانتر نوشتم كه توپ جواب داد.
و بعد اين برنامه رو با برنامه رم ميكس كردم كه هيچ رقم جواب!!! نداد.(انگار آي سي خاموش بود)
اما يك ساعت پيش همون برنامه رم رو جدا نوشتم اين بار تقريبا جواب داد.اما خروجي ها رو اشتباه ميده و هيچ ربطي هم با مقدار صحيح نداره(مثلا ناتش نيست يا...).
من كه حسابي گيج شدم!!!
اينم برنامه اي كه نوشتم.

نمی دونم چرا اینجوری آرایه ساختی؟ البته غلط نیست.

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

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

  • my_ram.doc
    26 KB · نمایش ها: 33

rezamansouri

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

hamid133

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

AmirKhanTala

Registered User
تاریخ عضویت
4 آگوست 2006
نوشته‌ها
168
لایک‌ها
4
سلام به اساتيد محترم...
من با نرم افزار ise.v.7.1) كار كردم.اما شبيه سازيشو هنوز ياد نگرفتم.modelsimo دارم.كار كردن باهاش آسونه؟؟؟
راستي برنامه رم درست كار نميكونه ها.من با xc9572 دارم كار ميكنم.
اگه راهنماييم كنيد ممنون ميشم.

به نظر من ISE هم آسونتره و هم کاراییش کمتره. به هر حال برنامه ها درستن. ببین کجا مشکل داری. اگه از این بردهای آماده بازار گرفتی که یک کلید دو حالته 1 و 2 داره بهش دقت کن. شماره رو برد رو بخون نه کلید رو. به هر حال یه بار عوضش کن و دوباره پروگرام کن.
 

hamid133

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

arashkhan

کاربر فعال برق و الکترونیک
کاربر فعال
تاریخ عضویت
21 آپریل 2006
نوشته‌ها
485
لایک‌ها
7
محل سکونت
51.50 , 35.75
خوب برنامه ات رو بذار همه ببینن و نظر بدن.
 
بالا