تبلیغات
" /> باران الکترونیک - مطالب Xilinx
سه شنبه 28 مهر 1394  11:21 ب.ظ
نوع مطلب: (FPGA ،Xilinx ،Altera ،VHDL ،) توسط: امیرحسین رستمی

هدف

در این مقاله سعی شده است نحوه یاد گرفتن FPGA قدم به قدم توضیح داده شود. نظراتی که در این مقاله آمده است شخصی بوده و ممکن است شخص دیگری نظری پی رادیان مخالف داشته باشد (که نشان دهده سواد کم­تر او می­ باشد پس نگران نباشد و ادامه به خواندن این مطلب دهید.)

مغز


نظرات()       

این قسمت شامل:
-ChipScope چیست؟
-اضافه کردن ChipScope به طرح
-اضافه کردن سیگنال به ChipScope
-باز کردن ChipScope و ریختن برنامه روی FPGA
-نحوه کار با ChipScope
-اشکل زدایی (دیباگ) طرح با استفاده از ChipScope

[http://www.aparat.com/v/HmRzX]


نظرات()   
   
جمعه 29 خرداد 1394  07:27 ب.ظ
نوع مطلب: (FPGA ،Xilinx ،آموزش ISE ،) توسط: امیرحسین رستمی

این قسمت شامل بخش های زیر می باشد:

-تنظیمات پروژه : فعال سازی multithreading
-اضافه کردن IP Core: افزایش فرکانس FPGA با استفاده از PLL
-استفاده IMPACT برای ریختن برنامه روی FPGA
-چشمک زدن LED

[http://www.aparat.com/v/lgN6e]


نظرات()   
   

این قسمت شامل مطالب زیر می باشد:
-تنظیمات پروژه ISE
  • با پین های بدون استفاده چگونه رفتار شود
  • فشرده سازی bit.
  • انواع شبیه سازی: behavioral و POST-ROUTE
-نوشتن برنامه test bench
  • تولید کلاک در برنامه تست بنچ
  • تولید سیگنال های محرک
-شبیه سازی با استفاده از ISIM
  • کار با نرم افزار ISIM
  • اضافه کردن سیگنال

[http://www.aparat.com/v/qLSZ0]


نظرات()   
   

این جلسه شامل مطالب زیر می باشد:
-ساختن پروژه جدید
-اضافه کردن فایل شماتیک به پروژه
-ساختن و نوشتن یک برنامه VHDL
-ساختن بلوک از برنامه VHDL
- استفاده از نرم افزار PlanAhead برای Pin Assignment
-سنتز پروژه و ساختن فایل قابل برنامه زیری داخل FPGA

[http://www.aparat.com/v/2fQgl]


نظرات()   
   

از سری فیلم های آموزشی نرم افزار ISE
قسمت اول :آشنایی با پکیج نرم افزاری Xilinx
این قسمت شامل معرفی و آشنایی با بخش های زیر می باشد
ISE
XPS
SDK
EDK
Chipscope

[http://www.aparat.com/v/QYowA]


نظرات()   
   
پنجشنبه 12 دی 1392  06:03 ب.ظ
نوع مطلب: (FPGA ،Xilinx ،Altera ،) توسط: امیرحسین رستمی


ایده FPGA

ایده اصلی FPGA از اینجا سر چشمه می­گیرد که هر تابع منطقی را می­تواند با یک حافظه جایگزین کرد. برای مثال یگ گیت منطقی XOR در شکل زیر نشان داده شده است. همان طور که مشخص است می­تواند یک گیت XOR  با دو ورودی را با یک حافظه 1×4 جایگزین کرد که ورودی گیت در واقع همان خط آدرس  و خروجی آن همان خط داده می­باشند.

همین ساختار با پیچیدگی بیشتر در FPGA مورد استفاده قرار می­گیرد. به حافظه­ای که در ساختار داخلی FPGA برای پیاده سازی توابع منطقی مورد استفاده قرار می­گیرد، Look Up Table یا به طور مختصر LUT گفته می­شود.

مزیت اصلی FPGA این است که دارای معماری خیلی انعطاف­پذیری می­باشد. اما این انعطاف پذیری با پرداخت هزینه­ی بیش­تر در سخت افزار همراه می­باشد. یعنی این که، انعطاف­پذیری بیش­تر به معنی گیت­های بیش­تر، مساحت سطح سیلیکون بیش­تر، منابع بیش­تر برای مسیریابی و در نتیجه مصرف توان بیش­تر می­باشد.

Altera یا Xilinx

در زمینه­ی تولید FPGA دو شرکت بزرگ آلترا[1] و زایلینکس[2] 89% FPGAهای بازار را تولید می­کنند. زالینکس برای سال­های متمادی است که بزرگ­ترین تولید کننده­ی  FPGAدر جهان می­باشد و دارای طیف گسترده­ای از FPGAها از لحاظ قیمت و عملکرد می­باشد. در شکل زیر سهم هر یک از تولید کننده­های FPGA در بازار نشان داده شده است.

شکل 1 بازار FPGA



[1] Altera

[2]  Xilinx


نظرات()       
چهارشنبه 13 آذر 1392  11:16 ب.ظ
نوع مطلب: (FPGA ،Xilinx ،آموزش ISE ،) توسط: امیرحسین رستمی

مقدمه

برای افزایش فرکانس نیاز به PLL[1] داریم. در شکل زیر نمودار بلوکی PLL نشان داده شده است. PLL از یک شمارنده تقسیم کنند N، مدار آشکار ساز فاز-فرکانس PFD[2]، نوسان­گر کنترل شده با ولتاژ VCO[3] و چند شمارنده ضرب کنند تشکیل شده است.

حلقه قفل شده فاز (PLL) از یک فرکانس مرجع برای تولید مضارب مختلف آن استفاده می­کند. در ابتدا  اسیلاتور کنترل شده با ولتاژ (VCO) روی محدوده فرکانس مورد نظر تنظیم می­شود. سیگنال خروجی از VCO با استفاده از یک تقسیم کننده فرکانس بر همان عامل ضرب تقسیم می­شود. سیگنال تقسیم شده و فرکانس مرجع به یک مقایسه کننده فاز وارد می شوند. خروجی مقایسه کننده فاز ولتاژی است که متناسب با اختلاف فاز می باشد. پس از عبور از یک فیلتر پایین گذر و تبدیل به ولتاژ مناسب، این ولتاژ برای تنظیم فرکانس به VCO وارد می­شود. اگر فاز سیگنال VCO نسبت به فاز  سیگنال مرجع تاخیر داشته باشد، این تنظیم باعث افزایش فرکانس ‏ می­شود ولی اگر فاز سیگنال ‏VCO‏ نسبت به فاز  سیگنال مرجع جلوتر باشد، فرکانس کاهش می یابد. در نهایت VCO در مضرب فرکانس مرجع به پایداری می­رسد.

DCM

در FPGA های Xilinx به واحد ضرب کننده فرکانس، DCM[1] گفته می­شود. ساختار داخلی اسپارتان-3 در شکل زیر نشان داده شده است. همان طور که مشاهده می­شود4 عدد DCM در 4 گوشه تراشه قرار دارد.

برای استفاده از DCM در برنامه ها نیاز به استفاده از Core Generator داریم.

فراخانی DCM

ابتدا از منوی Project، New Source را انتخاب کنید. یک نام دلخواه وارد کنید و Next  بزنید.

در قسمت Search، DCM را وارد کنید و Next را بزنید.

در پنجره بعدی ‏Finish‏ را بزنید. ‏

در پنجره بعد زبان خروجی مورد نظر را انتخاب کنید و Next را بزنید.

در پنجره بعدی تنظیمات DCM نشان داده می­شود.

تنظیمات DCM در Core Generator

توضیح پین­ها به شرح زیر می­باشد:

CLK90 : کلاک خروجی از این پین 90 درجه با کلاک ورودی اختلاف فاز دارد.

CLK180 : کلاک خروجی ‏ از این پین 180 درجه با کلاک ورودی اختلاف فاز دارد.‏

CLK270 : کلاک خروجی ‏ از این پین 270 درجه با کلاک ورودی اختلاف فاز دارد.‏

CLKDV: کلاک خروجی ‏ از این پین کسری از کلاک ورودی است.‏ که مقدار تقسیم در قسمت Divide by value انتخاب می­شود.

CLK2X : فرکانس‏ کلاک خروجی ‏ از این پین دو برابر فرکانس کلاک ورودی است.‏

CLKFX : با انتخاب این پین می­توانید فرکانس دخواه را توسط PLL تولید کنید.

CLKFX180 : این پین با پین قبلی 180 درجه اختلاف فاز دارد.

LOCKED: بیانگر این است که چه زمانی فاز کلاک خروجی با فاز کلاک ورودی برابر می­باشد.

CLKFX‏ ‏ را انتخاب کنید و به صفحه بعد بروید.

در صفحه بعد روی Next کلیک کنید.

در این صفحه باید فرکانس خروجی مورد نظرتان را وارد کنید. سپس روی Calculate کلیک کنید تا ضرایب ضرب و تقسیم برای ساختن این فرکانس محاسبه شود. در نهایت روی Next کلیک کنید.

خلاصه ای از تنظیمات شما نمایش داده می­ شود.



به نرم افزار برگیردید. IP ساخته شده را انتخاب کنید و روی Create  Schematic Symbol کلیک کنید تا بلوک شماتیک برای آن ساخته شود.


با رفتن به صفحه شماتیک (که قبلا ایجاد کرده­اید) می­توانید به راحتی از DCM برای تولید کلاک مورد نظرتان استفاده کنید.

دانلود فایل PDF

سرور دوم

منبع

Using Digital Clock Managers (DCMs(


نظرات()   
   
جمعه 1 آذر 1392  12:36 ق.ظ
نوع مطلب: (FPGA ،VHDL ،Xilinx ،Altera ،) توسط: امیرحسین رستمی

می­خواهیم برنامه­ای بنویسیم که در آن رابطه بین ورودی و خروجی به صورت زیر باشد:

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

الف) m توانی از 2 باشد:

فرض کنید  باشد. n=3 یعنی فرکانس پالس خروجی  1/8 فرکانس پالس ورودی می­باشد. یک شمارنده 3 بیتی تعریف می­کنیم. شمارنده از 0 تا 7 می­شمارد. با توجه به شکل اگر با ارزش­ترین بیت MSB شمارنده را به خروجی بدهیم، به هدف خود رسیده­ایم.

برنامه تقسیم کننده فرکانس در ادامه آمده است:

به ادامه مطلب مراجعه کنید.
دانلود فایل PDF در ادامه مطلب


نظرات()       
دوشنبه 20 آبان 1392  09:43 ب.ظ
نوع مطلب: (FPGA ،Xilinx ،Altera ،VHDL ،) توسط: امیرحسین رستمی

برای نوشتن برنامه شمارنده نیاز به یک جمع کننده ‏داریم که عدد ورودی را یک واحد افزایش دهد. برای این ‏که جمع کننده با کلاک سنکرون باشد نیاز به یک ‏D‏ فلیپ فلاپ داریم. شماتیک برنامه شمارنده در شکل ‏زیر نشان داده شده است.‏

برای این که شمارنده از یک تا نه بشمارد، وقتی که عدد نه در خروجی نمایش داده شد در کلاک بعدی باید عدد صفر وارد جمع کننده شود. برنامه کامل VHDL در ادامه نشان داده شده است.

entity counter0to9 is

   generic(

      N: integer := 4;    -- number of bits

      M: integer := 9     -- mod-M

  );

   port(

      clk, reset: in std_logic;

      q: out std_logic_vector(N-1 downto 0)

   );

end counter0to9 ;

------------------------------------------

architecture arch of mod_m_counter is

   signal r_reg: unsigned(N-1 downto 0);

   signal r_next: unsigned(N-1 downto 0);

begin

   -- register

   process(clk,reset)

   begin

      if (reset='1') then

         r_reg <= (others=>'0');

      elsif (clk'event and clk='1') then

         r_reg <= r_next;

      end if;

   end process;

   -- next-state logic

   r_next <= (others=>'0') when r_reg=(M-1) else

             r_reg + 1;

   -- output logic

   q <= std_logic_vector(r_reg);

end arch;

 

برای دیدن مدار ساخته شده در برنامه ISE مطابق شکل زیر از منوی Design، قسمت Synthesize را گسترش دهید (روی + کلیک کنید) و روی گزینه View RTL Schematic دوبار کلیک کنید.
بلوک زیر نمایش داده می­شود:

روی بلوک ‏mod_m_counter‏ دوبار کلیک کنید تا مدار ساخته شده مطابق شکل زیر نمایش داده شود.‏

برنامه test bench برای شبیه سازی مدار:


library ieee;

use ieee.std_logic_1164.all;

use ieee.numeric_std.all;

entity mod_m_counter is

   generic(

      N: integer := 4;     -- number of bits

      M: integer := 9     -- mod-M

  );

   port(

      clk, reset: in std_logic;

      q: out std_logic_vector(N-1 downto 0)

   );

end mod_m_counter;

 

architecture arch of mod_m_counter is

   signal r_reg: unsigned(N-1 downto 0);

   signal r_next: unsigned(N-1 downto 0);

begin

   -- register

   process(clk,reset)

   begin

      if (reset='1') then

         r_reg <= (others=>'0');

      elsif (clk'event and clk='1') then

         r_reg <= r_next;

      end if;

   end process;

   -- next-state logic

   r_next <= (others=>'0') when r_reg=(M-1) else

             r_reg + 1;

   -- output logic

   q <= std_logic_vector(r_reg);

end arch;

نتیجه شبیه سازی در شکل زیر نشان داده شده است:


دانلود فایل PDFلینک 1

دانلود فایل لینک 2


  • آخرین ویرایش:یکشنبه 29 فروردین 1395
  • برچسب ها:vhdl ،fpga ،counter ،
نظرات()   
   

تعریف محدودیت تناوب در نرم­افزار

نگارش کامل برای تعریف محدودیت در دوره تناوب (در فایل UCF) به صورت زیر می­باشد:

TIMESPEC "TSidentifier"= PERIOD "TimingGroupName" period_time {HIGH|LOW} [high_or_low_time] INPUT_JITTER value; 

TSidentifier: نام TIMESPEC می­باشد و باید با TS شروع شود. همچنین باید یکتا باشد. بیش از یک TIMESPEC با نام یکسان قابل قبول نمی­باشد.

TimingGroupName: نام گروه زمان­بندی می­باشد که محدودیت PERIOD به آن اعمال می­گردد. معمولا با TNM_NET ساخته می­شود.

period_time: مقدار واقعی تناوب کلاک. می­تواند به صورت یک مقدار مطلق در زمان ps، ns (مقدار پیش فرض) us یا ms یا به صورت فرکانس kHz، MHz یا GHz تعریف شود.

HIGH|LOW: وضعیت اولین لبه را برای محاسبه محدودیت OFFSET مشخص می­کند. توجه شود که مقداری که در این­جا مشخص می­شود می­تواند در محدودیت OFFSET در نظر گرفته نشود.

high_or_low_time: بیانگر عرض اولین پالس می­باشد در نتیجه زمان وظیفه را مشخص می­کند. می­تواند به عنوان یک مقدار مطلق در زمان ، ‏ns‏ (مقدار پیش فرض) ‏us‏ یا ‏ms‏ یا بر حسب درصد  period_time تعریف شود.

INPUT_JITTER: پیک-تا-پیک ناپایداری (jitter) کلاک. می­تواند به عنوان یک مقدار مطلق در زمان برحسب ‏ns‏ (مقدار پیش فرض) ‏us‏ یا ‏ms‏ بیان شود.

برای دیدن مقاله کامل روی ادامه مطلب کلیک کنید.


نظرات()       
شنبه 18 خرداد 1392  11:33 ب.ظ
نوع مطلب: (FPGA ،Xilinx ،) توسط: امیرحسین رستمی


طراحان و برنامه ­نویسان FPGAهای ‏Xilinx از محدودیت­ های زمانی یا Timing Constraints برای کنترل کارایی و عملکرد FPGA استفاده می ­کنند. در این قسمت از Timing Constraints برای کنترل فرکانس کلاک، زمان آماده ­سازی و نگه­داری برای ورودی­های همزمان، و زمان کلاک-به-خروجی برای خروجی­های هم­زمان استفاده شده است.

با استفاده از Timing Constraints به نرم ­افزار ISE می­گوییم که دقیقاً چه عملکردی در پروژه قابل قبول میباشد. بدون گفتن این ­ها به نرم­ افزار، ممکن است نرم­ افزار، سیم ­کشی (route) طرح را طوری انجام دهد که هنگام پیاده سازی روی FPGA به درستی کار نکند.


برای دیدن مقاله کامل روی ادامه مطلب کلیک کنید.


  • آخرین ویرایش:چهارشنبه 25 شهریور 1394
  • برچسب ها:FPGA ،Xilinx ،ISE ،
نظرات()       
چهارشنبه 15 خرداد 1392  01:02 ب.ظ
نوع مطلب: (FPGA ،Xilinx ،Altera ،VHDL ،) توسط: امیرحسین رستمی

در زیر لینک ویدیوهای آموزشی FPGA مربوط به سایت Altera و Xillinx قرار داده شده است. این ویدیوهای شامل بخش‎های مختلفی می‎باشند: از آموزش VHDL گرفته تا کار با بخش‎های مختلف سخت افزار و نکات مهم هنگام برنامه نویسی:




  • آخرین ویرایش:شنبه 14 دی 1392
  • برچسب ها:FPGA ،Xillinx ،Altera ،
نظرات()   
   
یکشنبه 12 خرداد 1392  08:33 ب.ظ
نوع مطلب: (FPGA ،Xilinx ،) توسط: امیرحسین رستمی


برای این که تفاوت بین این دو رم را بهتر متوجه شویم باید نگاهی به ساختار داخلی FPGA بیاندازیم. ساختار داخلی FPGA، Spartan-3 در شکل 1 نشان داده شده است. در ادامه به توضیح CLB و Block RAM می­پردازیم.


Spartan-3 Structure


CLB (Configurable Logic Block) یا بلوک منطقی قابل پیکربندی منابع اصلی برای تشکیل دادن مدارات همزمان و ترکیبی میباشند. برنامه­ای که به زبان توصیف سخت­افزار (HDL) می­نویسید در CLB پیاده می­شود. هر CLB شامل دو جدول جست و جو LUT برای پیاده ساری logic و دو المان ذخیره سازی که میتواند به عنوان فلیپ فلاپ  یا لچ استفاده شود. LUT ها میتوانند به عنوان یک حافظه 16x1 (RAM16) و یا به عنوان یک شیقت رجیستر 16 بیتی SRL استفاده شوند. در طراحی، بیش­تر لاجیکهای عمومی به طور خودکار روی CLB ها پیاده سازی می شوند. LUT ها در واقع حافظه  RAMمی­باشند که در سراسر قطعه پخش شده­اند. از این LUT ها می­توانیم به عنوان RAM استفاده کنیم که در این صورت به آن­ها حافظه توزیع شده یا Distributed RAM گفته می­شود. درSpartan-3 هر CLB شامل 64 بیت رم تک پورتی یا 32 بیت رم دو پورتی می­شود. برای پیاده­سازی حافظه­های بزرگ­تر با استفاده از CLBها، رم­ها موازی می­شوند.

اما block RAM یک حافظه اختصاصی می­باشد که شامل چندین کیلو بیت رم می­شود. برای مثال خانواده Spartan-3 بین 72 کیلوبیت تا 1,872کیلوبیت رم دارد. این حافظه به صورت بلوک­های دوبیتی 18 کیلوبیتی قابل استفاده می­باشند. اگر برای داده­های کم از این حافظه استفاده کنید، آن­گاه بقیه فضای این 18 کیلوبیت را از دست می­دهید.

نتیجه

بنابراین با توجه به مطالبی که گفته شد Distributed RAM‏ ‏برای پیاده سازی حافظه­های کوچک و FIFO مناسب می­باشد ولی Block RAM برای استفاده در حافظه‎های بزرگ مناسب می­باشد.



نظرات()   
   

 آموزش تصویری نرم افزار Xillinx ISE Design Suite

فهرست مطالب

‏1- آموزش نرم افزارISE Design Suite

‏1-1- ایجاد یک پروژه جدید

‏1-2- ایجاد یک فایل شماتیک جدید

‏1-3- ایجاد یک فایل ‏VHDLجدید

‏1-4- بررسی نگارش برنامه ‏VHDLو ساخت بلوک شماتیک

‏1-5- طراحی مدار درصفحه شماتیک

1-6-  اتصال ورودی و خروجی های طرح به پین­های‏FPGA   ‏‏

‏1-7- شبیه­سازی طرح    ‏‏

‏1-7-1- شبیه­سازی رفتاری        ‏‏

‏1-8- پیاده سازی طرح   ‏‏

‏1-9- ریختن برنامه روی‏FPGA ‏‏

 

دانلود فایل PDF فارسی  آموزش تصویری نرم افزار Xillinx ISE Design Suite

دانلود فایل از سرور دوم

دانلود ویدئوی آموزشی به زبان اینگلسی




نظرات()       
  • تعداد کل صفحات :2  
  • 1  
  • 2  
آخرین پست ها