PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشکل برنامه ise با کتابخانه textio



ahbadr
14-09-2014, 00:47
سلام

بچه ها حدود یک هفته هست که دارم یه پروژه با FPGA انجام میدم ولی به یه مشکلی برخوردم که نتونستم براش چاره ای پیدا کنم.
پروژم پردازش تصویر با FPGA هست . اگه بخوام به طور دقیق تر بگم قراره یه تصویر رو به FPGA ورودی بدم و با استفاده از FPGA ، از تصویر ورودی MEDIAN FILTER بگیرم و این تصویر فیلتر شده رو ذخیره کنم.
روش کارم این طوری بود که با استفاده از متلب یه تصویر معمولی رو به TEXT تبدیل کردم . بعد این فایل TEXT رو به برنامه نوشته شده در ISE دادم تا پردازشش کنم و در آخر هم باید یه فایل TEXT خروجی بگیرم و این فایل TEXT رو در متلب به تصویر تبدیل کنم.

البته الان که دارم این متلب رو می نویسم این پروژه رو تموم کردم و نتیجه هم گرفتم اما یه مساله ای وجود داره.
برنامه ای رو که با ISE نوشتم ، خطاهای غیر منطقی داره و نمیشه باهاشون کنار اومد.
وقتی برنامه ای رو که بهم ERROR داده رو با ISIM شبیه سازی کردم ، برنامم درست کار کرد . یعنی ISIM وقتی برنامه من رو سنتز کرد هیچ ERROR یا WARNING ی بهم نداد و داده های ورودی رو پردازش کرد و سپس بهم خروجی داد.
همین برنامه رو مجددا برای اطمینان با برنامه ACTIVE HDL بررسی کردم و این برنامه هم بدون هیچ ERROR و WARNING بهم خروجی صحیح رو داد. :wink:

ولی این برنامه رو نمیتونم با ISE سنتز کنم و سخت افزارش رو بررسی کنم . در کل نمیشه برنامم رو روی FPGA بررسی کنم چون برنامه بهم خطا میده و وقتی خطا داره هیچ چیز رو نمیشه بررسی کرد.

حالا برنامم رو در ادامه می نویسم . لطفا راهنماییم کنید تا مشکلم برطرف بشه
این یه برنامه ساده هست که قراره یه فایل TEXT رو بخونیم و همون رو توی یه فایل TEXT جدید بنویسیم.




library ieee;
LIBRARY STD;
USE STD.TEXTIO.ALL;
use ieee.std_logic_1164.ALL;

ENTITY filEx IS
port(clk : in std_logic);
END filEx;

ARCHITECTURE TEST OF filEx IS
FILE inFile : TEXT open read_mode IS "input.txt";
FILE outFile : TEXT open write_mode IS "output.txt";

BEGIN

PROCESS (clk)

VARIABLE outLine : LINE;
VARIABLE inLine : LINE;
VARIABLE PIXEL : INTEGER;

BEGIN

while not endfile(inFile) loop

READLINE(inFile, inLine);
READ(inLine , PIXEL);


WRITE(outLine, PIXEL);
WRITELINE(outFile, outLine);

end loop;

END PROCESS;

file_close(outFile);

END TEST;




اگه این برنامه رو اجرا کنم باید توی پوشه ای که این برنامه نوشته شده یه فایل TEXT ایجاد کنه به نام output.txt که داخلش یه سری عدد هست.
همچنین باید داخل همین پوشه نیز یه فایل TEXT خودمون قرار بدیم که اسمش باید input.txt باشه. و مقادیر داخلش هم باید یه سری عدد باشه مثلا میتونه این مقادیر باشه



123
150

این مقادیر ورودی ما هستن که باید داخل فایل input.txt نوشته بشن و این فایل نیز در پوشه برنامه قرار بگیره.
سپس برنامه یه فایل به نام output.txt می سازه که دقیقا همین مقادیر داخلش هست.
وقتی این برنامه رو با ISE سنتز میکنم بهم ERROR میده که حالا در ادامه عرض میکنم چه خطاهایی میده.

از دوستان خواهش میکنم اگه برنامه ISE رو روی سیستمشون نصب کردن لطف کنن و این برنامه رو سنتز کنن ببینن برنامه بهشون ERROR میده یا خیر

به من که خطا میده ولی با وجود خطا با ISIM شبیه سازی کردم و خروجی هم گرفتم به درستی.

من ورژن 14.7 برنامه ISE رو نصب کردم. 7.5 گیگ حجمش بود. ممکنه مشکل از برنامه من باشه. و اگه یه ورژن دیگه رو بریزم مشکل حل بشه .
البته این رو باید بگم که من با ISE برنامه های دیگه ای هم نوشتم و مشکل نداره ولی فقظ تو این برنامه که از کتابخونه TEXTIO استفاده کردم با این خطاهای منحصرا مربوط به همین کتابخونه روبرو شدم.
لطفا اگه فرصت دارین زحمت بکشین و این برنامه رو سنتز کنید.

وقتی این برنامه رو با ISE سنتز میکنم این خطا رو بهم میده.



ERROR:Xst:2098 - "E:/Users/Badr-PC/Desktop/textio/textio.vhd" line 27: read of integer is not supported.

منظورش اینه که نمی تونیم ورودی INTEGER دریافت کنیم. چون ورودی خونده شده از فایل TEXT در متغیر PIXEL قرار میگیره که از نوع INTEGER هست.
حالا برای اینکه این مشکل رو برطرف کنم ، ورودی رو از نوع REAL کردم که با این خطا روبرو شدم:



ERROR:Xst:2360 - "E:/Users/Badr-PC/Desktop/textio/textio.vhd" line 30: write of real is not supported.

میگه که نمیتونه متغیری از نوع REAL رو در خروجی بنویسه. در واقع تونسته ورودی REAL رو بخونه ولی نمیتونه REAL بنویسه.
البته این نکته رو هم بگم که کتابخونه TEXTIO به صورت کامل از متغیرهای REAL و INTEGER پشتیبانی میکنه ولی ISE من خطا میده بهم.

خلاصه برای اینکه خطای آخر رو برطرف کنم فایل REAL خونده شده رو اول به INTEGER تبدیل کردم بعد این INTEGER رو نوشتم.
که بعد این کار باز یه خطای دیگه بهم داد:


ERROR:Xst:1924 - "E:/Users/Badr-PC/Desktop/textio/textio.vhd" line 28: Line <inLine> has illegal bit value "9".

این خطا رو که میده منظورش اینه که بجز 0 و 1 عدد دیگه ای نمیتونه بخونه و فقط همین دو عدد رو پشتیبانی میکنه و همین که به عدد 9 رسید خطا اعلام کرد.
خلاصه سرتون رو درد نیارم . برای رفع این مشکل گرفتم عددم رو به صورت CHARACTER خوندم و اون رو به INTEGER تبدیل کردم و با یه مشکل جدید روبرو شدم و در ادامه هی خطا ها رو برطرف میکردم و یه خطای جدید بوجود می اومد. تا اینکه به یه نقطه رسیدم که دیدم ISE نتیجه های غیر معقولی میده . حالا بماند تا کجاها رفتم و چه خطاهایی که ندیم.(این مراحل 4 روز به طول انجامید) :angry:

خلاصه از روی ناچاری گفتم من که این همه کار کردم بزار یه بار شبیه سازی کنم . وقتی با ISIM شبیه سازی کردم دیدم در کمال ناباوری همه چیز داره به خوبی کار میکنه. با کمی بررسی به این نتیجه رسیدم که برنامه ISE من مشکل داره. :cry:

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


دوستان لطفا راهنماییم بفرمایید تا بتونم این برنامه رو توی ISE خروجی بگیرم
:kiss:

allahyarzadeh
14-09-2014, 10:22
موقع استفاده از write کاملا نشخص کنید:

WRITE (L, string’(“text”));

WRITE_STRING (L, “text”);
برای تعرف فایل هم معمولا اینجوری استفاده میشه:

FILE myinput : TEXT IS IN “pathname.dat”;
و نکته دیگه اینکه این دستورات کلا به صورت شبیه سازی اجرا میشوند، شما اگر میخواهید کد اصلی تون رو داشته باشین باید یک بار فایل رو تبدیل به یک آرایه یا متغیر بکنید و به عنوان یک پکیج به کدتون اضافه کنید به نظر شما وقتی کدتون داره داخل سخت افزار اجرا میشه فایل متنی هم داخل fpga؟؟؟ نه نیست پس شما یک فایل رو تبدیل به کد میکنید و به همراه برنامه اصلی در fpga و یا e2prom پروگرام میکنید.

ahbadr
15-09-2014, 23:29
مهندس بابت راهنماییت تشکر
دستت درد نکنه
متوجه اصل قضیه شدم

برنامه من قابل سنتز شدن نیست
واسه همین ISE بهم خطا میداد
فقط قابل شبیه سازی هست واسه همین ISIM و ACTIVE HDL میتونستن برنامه من رو به درستی کامپایل کنن و خروجی رو ببینم.

همین طور که فرمودید در عمل FPGA نمیتونه از یه فایل TEXT ورودی بگیره و داده ها حتما باید تو یک حافظه خاصی ذخیره بشن.
به همین دلیل هم ISE توانایی سنتز کردن رو نداشت.
در واقع کد های من قابل سنتز شدن نیستن
و ISE من مشکل نداشت

الان تکلیف این تمرین مشخص شد برام
من و باش که چقدر براش زمان گذاشتم
الان یه تمرین جدید دارم که باید برای این عمل کد سنتز پذیر بنویسم
در واقع برای اینکه سنتز پذیر باشه باید داده هام رو در RAM ذخیره کنم و FPGA از روی RAM داده ها رو بخونه و پردازش کنه

اگه به مشکلی برخوردم همین جا می نویسم:wink:

دمت گرم

b.mahdavi1370
21-09-2014, 19:55
با سلام من نرم افزار ISE رو لپ تاپ خودم و چهار PC نصب کردم و برنامه هایی که می نویسیم به طور کامل سینتسایز میشن فقط مشکلم اینه که هنگام سیموله کردن با ISIM خطا زیر را می گیرد
FATAL_ERROR:Simulator:Fuse.cpp:209:1.129 - Failed to compile one of the generated C files. Please recompile with -mt off -v 1 switch to identify which design unit failed. Process will terminate. For technical support on this issue, please open a WebCase with this project attached at You can see links before reply
البته این مشکل فقط رو یکی از PC ها نیست و به طور کامل اجرا میشه، لطفا اگر کسی از این error چیزی سر در میاره کمکم کنه
با تشکر

sadmonew
21-09-2014, 20:27
با سلام من نرم افزار ISE رو لپ تاپ خودم و چهار PC نصب کردم و برنامه هایی که می نویسیم به طور کامل سینتسایز میشن فقط مشکلم اینه که هنگام سیموله کردن با ISIM خطا زیر را می گیرد
FATAL_ERROR:Simulator:Fuse.cpp:209:1.129 - Failed to compile one of the generated C files. Please recompile with -mt off -v 1 switch to identify which design unit failed. Process will terminate. For technical support on this issue, please open a WebCase with this project attached at You can see links before reply
البته این مشکل فقط رو یکی از PC ها نیست و به طور کامل اجرا میشه، لطفا اگر کسی از این error چیزی سر در میاره کمکم کنه
با تشکر
سلام مهندس
تو متن خطا گفته كه "يه بار ديگه با سوئيچ mt off -v 1- كامپايلش كني".
اين كارو انجام دادي؟