PDA

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



Hesam1984
15-03-2008, 11:18
با سلام
لطفا مراحل شروع كار با اين تراشه ها را توضيح دهيد و اينكه از كجا بايد شروع كنيم و چه چيزهايي لازمست .

alitaroosheh
15-03-2008, 17:41
كسي برنامه fpga هاي xilinx سراغ نداره لينك بده

Hesam_K
17-03-2008, 20:53
حسام جان در قسمت كتابهاي FPGA كتابي رو قرار دادم كه خيلي بدرد بخوره و كاملاً مفيده. آخرين كتابي كه تو اون بخش هست رو دانلود تا هم با نرم افزار MaxPlus آشنا بشي و هم اينكه روال كار رو كامل متوجه بشي.


علي جان حجم نرم افزار خيلي زياده و شايد ارزش دانلود كردن نداشته باشه من بهت توصيه ميكنم CD هاي الكترونيك رو بگيري، اين برنامه هم حتما داخلش هست. ببخش منو كه لينكشو پيدا نكردم ولي اگه يه سر به سايت خودش بزني ميتوني نسخه ISE اون رو بگيري.

alitaroosheh
17-03-2008, 22:39
ممنون
راستي اسم برنامه xilinx چيه؟

Hesam_K
18-03-2008, 01:13
سلام علي جان،
اول به اين ادرس برو Xilinx (You can see links before reply)

از اين صفحه يا اوليش رو بگير يا آخريش رو. اسم نرم افزار اصلي ISE Foundation™ هست كه ميتوني دانلودش كني. ISE Service Pack رو هم ميتوني بگيري كه قابليت هاي فراوون قبلي رو نداره ولي كار رابندازه. اگه تازه ميخواي شرو كني باقيش فعلاً بدردت نميخوره.
ولي بازم توصيه ميكنم CDيش رو بخر چون همه اينها توش كامل آورده شده ولي حواست باشه ورژنش قديمي نباشه.

Hesam1984
04-04-2008, 13:39
سلام حسام جان

شما خودتون براي كار با اين چيپ ها مثلا سري Xilinx نرم افزار خودش رو پيشنهاد مي كني يا Altium Designer رو ؟ . من يكم با Altium Designer براي اين چيپ ها كار كردم ولي زياد سر در نياوردم . مي شه راهنمايي بكني ؟ من تا حالا كسي رو نديدم كه باAltium Designer با
FPGA كار كنه . اصلا خبر ندارن كه همچين چيزي هم امكان پذيره . :k01:

Hesam_K
04-04-2008, 21:14
سلام حسام جان،
راستش من فكر ميكنم نرم افزاري كه خود Xilinx يا Altera ميدن بايد خيلي قويتر باشن چون فرضاً وقتي با Maxplus كار ميكني موقع شبيه سازي حتي تاخيرهاي هر كامپوننت رو هم نشونت ميده ولي تو شبيه سازيي كه ساير نرم افزارها ميكنن اين رو نميبينيم.
ولي خود من ترجيهم با Altiumه چون وقتي پروژه مي سازي نقشه هاي شماتيك و PCB و قسمت برنامه نويسي همه دركنارتن و راحت ميتوني بين اينا بچرخي. ولي شبيه سازيش يمقدار مشكلتره (خودم تا بفهمم چجوريه حدود 6-7 ماه طول كشيد).
روندش هم خيلي كاره سختي نيست اول FPGA Prioject رو انتخاب كن و پروژت رو بساز بعد VHDL Document رو به پروژت اضافه كن و برنامت رو توش بنويس. از قسمت Tools\Preferences هم ميتوني تنظيمات مربوط به سنتز و شبيه سازي رو انجام بدي.
از قسمت Design\Create Test Bench رو انتخاب كن تا يه Test Bench برات بسازه.
پايين اين Test Bench يه قسمتي هست كه اينو نوشته :


[align=left:c952742eb3]STIMULUS0:process
begin
-- insert stimulus here
wait;
end process;
[/align:c952742eb3]

پيداش كن و برنامه شبيه سازيت رو توش بنويس

از منوي Simulator\HDL Compile رو بزن و از پنجره جديد هم روي Test Bench كليك كن.
سپس simulate Curent Project رو كليك كن (از آيكن هاي بالاي صفحه)
پنجره سيمولاتور باز ميشه و ميتوني تنظيمات شبيه سازي رو انجام بدي.

ليست يه برنامه نمونه رو برات مينويسم.فرض كن ميخواهيم يك گيت And بسازيم:


[align=left:c952742eb3]
library IEEE;
Use IEEE.std_logic_1164.all;

Entity Andd is
port(In1, In2 : in std_logic;
Out1 :out std_logic);
End Andd;

Architecture Data_Flow of Andd is
Begin
Out1 <In1> In1,
In2 => In2,
Out1 => Out1
);

STIMULUS0:process
begin
-- insert stimulus here
In1 <= '0';
In2 <= '0';
wait for 10ns;
In1 <= '0';
In2 <= '1';
wait for 10ns;
In1 <= '1';
In2 <= '0';
wait for 10ns;
In1 <= '1';
In2 <= '1';
wait for 10ns;
end process;

WRITE_RESULTS(
In1,
In2,
Out1
);

end architecture;
------------------------------------------------------------

------------------------------------------------------------
[/align:c952742eb3]


دانلود برنامه كامل : اينجا (You can see links before reply)

Hesam1984
04-04-2008, 21:45
سلام
مرسي از جوابت

آيا كد نوشتن اجباريه ؟ فكر كنم ISE Foundation كه مال Xilinx هست يك قسمت شماتيك داشت كه توش گيت ها و ابزارهاي ساده مثل كانتر و ديكودر و ... وجود داشت و نياز به كد نويسي نبود . Altium چطوريه ؟

Hesam_K
05-04-2008, 20:52
آره حسام جان تو آلتیوم هم میتونی با نقشه شماتیک کامپوننت رو پروگرم کنی هم میتونی کد بنویسی و تبدیلش کنی به یه کامپوننت شماتیک و توی نقشه شماتیکت ازش استفاده کنی.

Hesam1984
12-04-2008, 12:04
حسام جان نحوه پروگرام كردن يا نسبت دادن ورودي ها و خروجي ها به پايه هاي I/O آي سي از كجا انجام مي شه ؟
بعدش استاندارد رابط پروگرام كردن اين آي سي ها چيه ؟ منظورم اينه كه مثلا براي AVR ها از سوكت استاندارد IDC نوع 10 پايه در روي برد استفاده مي شه كه معلومه براي پروگرام كردن هست و پايه هاش معلومه كه كدام پايه مال چيه و يك جوري استاندارد شده ISP . اينجا چطوريه ؟

Hesam_K
13-04-2008, 14:09
حسام جان تو Help برنامه كاملاً توضيح داده كه چطور ميتوني اين كارا رو بكني. راستش يه خط و دو خط نيست كه بتونم برات توضيح بدم. ميتوني تو قسمت جستجوي Helpش اينو جستجو كني: AP0102: Linking an FPGA to a PCB Project

Hesam1984
17-04-2008, 11:53
حسام چند سوال برام پيش آمده است .

1 - روي CPLD به غير از پايه هاي (TDI,TDO,TMS,TCK) كه مال Jtag است و منحصرا براي برنامه ريزي هست يك سري پايه ديگه هم است كه من نمي دونم مال چيه . اسمشون (GCK1,GCK2,GCK3) و همين طور GSR , GTS1 , GTS2 هستند . كه هم ميشه پايه I/O باشه و هم اين ها . اين ها به چه درد مي خورند ؟

2 - مفهوم FB براي هر پايه چيه ؟ كه بين 1 تا 4 هست . منظور از اين چيه ؟

3 - استاندارد كابل برنامه ريزي CPLD/FPGA چيه ؟ مثلا مال AVR بهش مي گن ISP يا Jtag كه يك سوكت IDC نوع 10 پايه است كه پايه هايش مشخصه كه كدام به چي وصل مي شه و يك استاندارده . مال اين چيه ؟ اين طور كه رو پروگرامر گذاشته بايد يك IDC از نوع 14 پايه(2 * 7) باشه .

Hesam_K
17-04-2008, 17:27
سلام حسام جان
پايه هاي FPGAها به 2 گروه كلي تقسيم ميشوند: پين هاي اختصاصي و پين هاي كاربر
پين هاي اختصاصي:
1- پايه هاي مربوط به پاور
FPGAها معمولاً به دو ولتاژ براي كار كردن نياز دارن. يكي براي هسته و ديگري براي IO. و هركدومشون از پينهاي مجزايي استفاده ميكنن. ولتاژهاي هسته ثابت هستند و رنجي از 1.2 تا 5 ولت دارن كه براساس نوع قطعات متفاوتند ولي ولتاژهاي ثابتي هستند. ولتاژهاي IO براي هر بانك ميتونن مختلف باشن.(VCCIO و VCCINT و GNDIO و GNDINT)

2- پايه هاي مربوط به پروگرم
كه همونطور كه خودت اشاره كردي هستند.

3- پايه هاي مربوط به كلاك و پينهاي اختصاصي ورودي
كه پايه هاي كلاك و كلير و ... هستند. FPGAها معمولاً سنكرون هستند يعني برنامه هاي داخلي اونها براساس يك كلاك خارجي كه براي همزمان كردنه، كار ميكنه. در برنامه هاي سنكرون يك لبه كلاك مجموعه اي از فليپ-فلاپهاي داخلي را تحت تاثير قرار ميدهد. بعبارتي يك كلاك كل فليپ-فلاپها را كنترل ميكند. كه اين مساله باعث ايجاد مشكلات زماني( Timing) و الكتريكي داخلي در مدار FPGA ميشود. (بحث تايمينگ يكي از پيچيده ترين مشكلاته كه تو كارهاي حرفه اي FPGA، برنامه نويسان باهاش سروكار دارن). براي رفع اين عيوب سازندگان اين محصولات براي قطعات FPGA پايه هاي مختلفي رو براي كلاك طراحي كردن. بنابراين يك FPGA از چندين كلاك ميتونه استفاده كنه "clock domain" و فليپ-فلاپها هم بسته به اينكه از كدوم پايه كلاك دستور ميگيرن، سرعتها مختلفي دارند. يك "clock domain" ممكنه با 10MHz كارك كنه و يكي با 100MHz. براي راحتي كار بايد نسبت فركانسها ثابت باشه سنتز كننده راحت بتونه نسبتها رو بسازه وگرنه مشكلاتي بوجود مياد.
بنابراين اگه ميخواهي قطعت با يه مرجع (كلاك) كار كنه فقط GCLK1 رو استفاده كن و ساير GCLKها بايد وردي/خروجي تعريف شن. درغير اينصورت اونها هم پايه هاي كلاك هستن كه يسري از فليپ-فلاپهاي داخلي رو كنترل ميكنن.
براي بدست آوردن اطلاعات بيشتر
اينجا (You can see links before reply) و اينجا (You can see links before reply) و اينجا (You can see links before reply) رو نگاه كن.
متاسفانه در مورد GSR , GTS1 , GTS2 اطلاعاتي ندارم ولي سعي ميكنم پيدا كنم و در اختيارت بزارم.

Hesam_K
17-04-2008, 17:51
شركت هاي سازنده FPGA روشهاي مختلفي رو براي برنامه ريزي قطعاتشون ايجاد كردن. يكي از اين راهها اتصال كامپيوتر به بورد FPGA بوسيله كابل رابطه كه اكثر اين كابلها هم كابلهاي پارالل و USB هستند. هر شركت هم از كابل مخصوص بخودش براي برنامه ريزي استفاده ميكنه كه تعداد پايه هاي پروگرمرش ممكنه با يه شركت ديگه متفاوت باشه ولي هر دوشون از پورت پارالل و JTAG براي برنامه ريزي محصولاتشون استفاده كرده باشن.
براي بدست آوردن اطلاعات بيشتر در مورد پروگرمر هاي Xilinx به Parallel Cable ||| (You can see links before reply) و Hardware User Guid (You can see links before reply) و Parallel Cables (You can see links before reply) مراجعه كن.
با مقايسه تعداد پينهاي پروگرمر Xilinx و Altera (رجوع كن به You can see links before reply ) ميبيني كه هر دو شركت از پورت پارالل و استاندارد JTAG براي برنامه ريزي محصولاتشون استفاده كردن ولي تعداد پايه هاي پروگرمرشون متفاوته.

Hesam1984
17-04-2008, 18:35
دستت درد نكنه . خيلي عالي بود .

اما اين FB يعني چي يا Macrocell . مثلا در مورد يك پايه اين جوري اطلاعات داده :
[align=left:27c3d13b57]Pin Number = 4
FB = 1
Macrocell = 8[/align:27c3d13b57]
يا مثلا

[align=left:27c3d13b57]Pin Number = 40
FB = 2
Macrocell = 11[/align:27c3d13b57]

بعدش يك سوال :

1 - اگر سيستم كلاك نداشته باشه . يعني فقط گيتهاي منطقي بدون كلاك باشه اين پايه هاي كلاك رو چكار كنم ؟

Hesam_K
23-04-2008, 09:12
حسام جان ببخشيد كه طول كشيد تا جوابتو بدم.
راستش FB رو نميدونم چي هست ولي Macrocell يه مجموعه كوجك از فليپ-فلاپهاست (فكر ميكنم FB هم به همينها مربوط بشه ولي مطمئن نيستم). به ماكروسلها حافظه هم اطلاق ميشه. تراشه نوعي EPM7128SLC84 داراي 128 ماكروسله. تو سايت آلترا چند مقاله راجع به اين ماكروسلها ميتوني پيدا كني و شماتيكشون رو هم ببيني (سعي ميكنم برات پيدا كنم).

در مورد پايه هاي كلاك هم اگه براي اون پايه ها، استفاده هايي غير از كلاك هم تعريف شده باشه مثلاً I/O باشن كه ميتوني نرم افزاري اون پايه ها رو ورودي خروجي تعريف كني ولي اگه اختصاصا كلاك تعريف شده باشن كه نميتوني كاريشون كني چون اين پايه مستقيما به پايه كلاك فليپ-فلاپهاي داخلي وصل شده و براي سنكرون كردن اونها استفاده شده. اگه پايت رو I/O تعريف كردي و نخواستي كلاك براي برنامت بزاري حواست باشه كه برنامت ديگه سنكرون نيست و Processهاي برنامت آسنكرون ميشن.

Hesam1984
24-04-2008, 11:28
حسام جان دستت درد نكنه . خوبه .
حالا بريم سراغ برنامه نويسي . شما خودت VHDL رو توصيه مي كني يا Verilog رو . توي ISE يك چيزي هم به نام ABEL بود كه نمي دونم چه زبان برنامه نويسي هستش . من كه خودم اين دو تا رو بيشتر شنيدم .
من تمام Ebook هايي رو كه زحمت كشيدي گذاشتي دانلود كردم . بگو براي ابتدا كدام رو شروع كنم ؟

Hesam_K
24-04-2008, 21:27
سلام حسام جان
راستش من خودم Verilog كار نكردم ولي ميدونم كه VHDL از Verilog جديدتره و ساخته شده تا محدوديتهاي Verilog رو ازبين ببره و ساده تر باشه. با اين حال از اونجايي كه من خودم Verilog كار نكردم نميتونم با هم مقايسشون كنم.
در مورد زبان ABEL هم بايد بگم كه يكي از زبانهاي HDL ه كه حالا ديگه كمتر مورد استفاده قرار ميگيره.
در مورد كتاب هم من با
Brown and Vranesic (You can see links before reply)شرو كردم كه خيلي كتاب جالبيه و درموردش هم تو بخش دانلود كتاب توضيح دادم. قواعد و قوانينش رو پيشنهاد ميكنم با اين كتاب شرو كن. چند وقت ديگه هم ميخوام چنتا كتاب جديد معرفي كنم كه فقط تمرين براي FPGA هست (بايد بگردم تا پيداشون كنم). بهرحال سريعتر پرينتش كن و شرو كن به خوندنش.

spartan2010
05-12-2009, 17:48
با سلام
در مورد FB يا همون فانكشن بلاك . به نظرم همونطور كه يك سري گيت و فليپ فلاپ با هم ماكروسل تشكيل ميدن . مجموع چند ماكروسل هم يك FB رو تشكيل ميده . كه CPLD شما احتمالا 72 ماكروسل و 4 تا FB داره.

من تازه تصميم گرفتم توي اين جور سايت هاي علمي تبادل تجربه كنم. به نظرم از زمان ارسال پست شما خيلي ميگذره!

HamidTaheri
23-05-2011, 02:18
[QUOTE=Hesam_K;1225]سلام حسام جان،
راستش من فكر ميكنم نرم افزاري كه خود Xilinx يا Altera ميدن بايد خيلي قويتر باشن چون فرضاً وقتي با Maxplus كار ميكني موقع شبيه سازي حتي تاخيرهاي هر كامپوننت رو هم نشونت ميده ولي تو شبيه سازيي كه ساير نرم افزارها ميكنن اين رو نميبينيم.
ولي خود من ترجيهم با Altiumه چون وقتي پروژه مي سازي نقشه هاي شماتيك و PCB و قسمت برنامه نويسي همه دركنارتن و راحت ميتوني بين اينا بچرخي. ولي شبيه سازيش يمقدار مشكلتره (خودم تا بفهمم چجوريه حدود 6-7 ماه طول كشيد).
روندش هم خيلي كاره سختي نيست اول FPGA Prioject رو انتخاب كن و پروژت رو بساز بعد VHDL Document رو به پروژت اضافه كن و برنامت رو توش بنويس. از قسمت Tools\Preferences هم ميتوني تنظيمات مربوط به سنتز و شبيه سازي رو انجام بدي.
از قسمت Design\Create Test Bench رو انتخاب كن تا يه Test Bench برات بسازه.
پايين اين Test Bench يه قسمتي هست كه اينو نوشته :

پيداش كن و برنامه شبيه سازيت رو توش بنويس

از منوي Simulator\HDL Compile رو بزن و از پنجره جديد هم روي Test Bench كليك كن.
سپس simulate Curent Project رو كليك كن (از آيكن هاي بالاي صفحه)
پنجره سيمولاتور باز ميشه و ميتوني تنظيمات شبيه سازي رو انجام بدي.

ليست يه برنامه نمونه رو برات مينويسم.فرض كن ميخواهيم يك گيت And بسازيم:

-----------------------------------------------------------
سلام، میدونی دقیقا چجوری باید یه قسمت رو به یه پین خاص نسبت داد؟
مثلا میخوام پین p0-1رو به عنوان خروجی تعریف کنم که مقدار نهایی روی این پایه قرار بگیره.
کلا چجوری باید ورودی خروجی یه پین رو مشخص کنیم؟

مثلا میخوایم دوتا ورودی این اند ها از پایه های پی 1 و پی 2 باشه و خروجی روی پی 3
چجوری این کار رو باید انجام بدهیم؟
خواهشا سریع جواب بدید، پنج شنبه باید ارائه بدم. ممنون

mohsen.sharif
22-09-2017, 20:01
سلام حسام جان
راستش من خودم Verilog كار نكردم ولي ميدونم كه VHDL از Verilog جديدتره و ساخته شده تا محدوديتهاي Verilog رو ازبين ببره و ساده تر باشه. با اين حال از اونجايي كه من خودم Verilog كار نكردم نميتونم با هم مقايسشون كنم.
در مورد زبان ABEL هم بايد بگم كه يكي از زبانهاي HDL ه كه حالا ديگه كمتر مورد استفاده قرار ميگيره.
در مورد كتاب هم من با
Brown and Vranesic (You can see links before reply)شرو كردم كه خيلي كتاب جالبيه و درموردش هم تو بخش دانلود كتاب توضيح دادم. قواعد و قوانينش رو پيشنهاد ميكنم با اين كتاب شرو كن. چند وقت ديگه هم ميخوام چنتا كتاب جديد معرفي كنم كه فقط تمرين براي FPGA هست (بايد بگردم تا پيداشون كنم). بهرحال سريعتر پرينتش كن و شرو كن به خوندنش.
سلام. دقیقا برعکس زبان Verilog از VHDL ساده تره.