اطلاعیه

Collapse
No announcement yet.

چند سوال ابتدایی در مورد fpga

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    چند سوال ابتدایی در مورد fpga

    سلام
    تازه وارد حوزه FPGA شدم و یه برنامه بسیار ساده نوشتم و برام چند تا سوال پیش اومده
    1- همیشه کلاک را باید با اسیلاتور خارجی بدهیم یا اسیلاتور داخلی هم وجود دارد
    2- با مقدار کلاک مثلا 50 مگ میشه درون fpga کلاک فرض 23.3 مگ ساخت
    3- با وجود کلاک فرضب 50 مگ اگر نیاز به کلاک بیش تر بود باید چه کرد ؟
    4- حد اکثر کلاک در کدام قسمت دیتاشیت هست؟؟
    و اگر راهنمایی دیگری دارید لطفا بفرمایید
    جدیدترین ویرایش توسط seyed saeed; ۱۴:۵۷ ۱۳۹۸/۰۷/۱۰. دلیل: املا
    اللهم صل علی محمد و ال محمد و عجل فرجهم
    پیامبر اکرم(ص):زکات علم نشر آن است.
    در کشور های غربی انتقال تجربیات و دانش به افراد مبتدی یک پیشرفت محسوب شده و به آن مدیریت دانش می گویند. ولی متاسفانه این فرهنگ هنوز در کشور ایران رایج نشده است !!!

    #2
    پاسخ : چند سوال ابتدایی در مورد fpga

    نوشته اصلی توسط seyed saeed نمایش پست ها
    سلام
    تازه وارد حوزه FPGA شدم و یه برنامه بسیار ساده نوشتم و برام چند تا سوال پیش اومده
    1- همیشه کلاک را باید با اسیلاتور خارجی بدهیم یا اسیلاتور داخلی هم وجود دارد
    2- با مقدار کلاک مثلا 50 مگ میشه درون fpga کلاک فرض 23.3 مگ ساخت
    3- با وجود کلاک فرضب 50 مگ اگر نیاز به کلاک بیش تر بود باید چه کرد ؟
    4- حد اکثر کلاک در کدام قسمت دیتاشیت هست؟؟
    و اگر راهنمایی دیگری دارید لطفا بفرمایید
    سلام منم یه چیزایی یاد گرفتم شاید بدردت بخوره ولی حرفه ای نیستم
    1_آره کلاک داخلی وجود نداره و منبع کلاک توسط اسیلاتور خارجی تامین میشه
    2_برای تقسیم فرکانس چندتا راه وجود داره مثلا میشه یه تایمر ساخت روی یه عدد خاص تنظیمش بکنی که هربار به اون عدد رسید خروجیش رو تغییر بده و دوباره تایمر ریست بشه از اول بشمره این یه روش ساده هستش، اما درونfpga های شرکت xilnix یه بلوک برای تنظیم منبع کلاک وجود داره به اسم DCM که میشه از منبع کلاک چندین کلاک برای بلوکهای داخلی تولید کرد حتی با اختلاف فاز و تاخیر نسبت به همدیگه این تاخیرها توسط بافرهای کلاک ایجاد میشن و برای کار با باسهای سریال طراحی شدن تا همزمانی و ناهمزمانی دریافت و ارسالها با دقت بالایی کنترل بشن
    3_ برای افزایش فرکانس بهتره که منبع کلاک یا اسیلاتور رو تغییر بدی البته بستگی به fpga داره بعضیها مثل spartan3 قابلیت این رو دارن که فرکانس رو هم افزایش بدن بدون vco البته بازهم بهتره که همون منبع فرکانس خارجی رو افزایش بدی
    توی دیتاشیت حالتهای مختلفی تعریف شده توی مدهای مختلف ماکزیمم فرکانس رو تو مد pll ببین با fMax نوشته شده البته با مد اورکلاک معمولا توی کاربردهای نچندان پیچیده میشه تا ده درصدماکزیمم فرکانس رو افزایش داد
    اگه از بردهای توسعه مثل mojo استفاده میکنی یا باید خود قطعه اسیلاتور رو با یدونه مشابه با فرکانس بیشتر تغییر بدی یا اینکه از یدونه دیگ از پایه های کلاک برای اتصال اسیلاتور دوم استفاده بکنی و تموم ماژولهایی که درون fpga تعریف میکنی به این اسیلاتور متصل باشن،
    یکی از مهمترین نکات پیاده سازی کلاک و تایمینگ هستش ، بعد از اون هم اگه برنامه پیچیده و بزرگی میخوای پیاده بکنی اون رو به چند ماژول کوچکیتر تقسیم بندی بکنی و همه ساختار رو توی یدونه ماژول توصیف نکنی، از چه نرم افزاری استفاده میکنی شایدتونستم یکم راهنمایی بکنم تا حدودی از xilnix ISE سر درمیارم

    دیدگاه


      #3
      پاسخ : چند سوال ابتدایی در مورد fpga

      نوشته اصلی توسط Edrissna نمایش پست ها
      سلام منم یه چیزایی یاد گرفتم شاید بدردت بخوره ولی حرفه ای نیستم
      1_آره کلاک داخلی وجود نداره و منبع کلاک توسط اسیلاتور خارجی تامین میشه
      2_برای تقسیم فرکانس چندتا راه وجود داره مثلا میشه یه تایمر ساخت روی یه عدد خاص تنظیمش بکنی که هربار به اون عدد رسید خروجیش رو تغییر بده و دوباره تایمر ریست بشه از اول بشمره این یه روش ساده هستش، اما درونfpga های شرکت xilnix یه بلوک برای تنظیم منبع کلاک وجود داره به اسم DCM که میشه از منبع کلاک چندین کلاک برای بلوکهای داخلی تولید کرد حتی با اختلاف فاز و تاخیر نسبت به همدیگه این تاخیرها توسط بافرهای کلاک ایجاد میشن و برای کار با باسهای سریال طراحی شدن تا همزمانی و ناهمزمانی دریافت و ارسالها با دقت بالایی کنترل بشن
      3_ برای افزایش فرکانس بهتره که منبع کلاک یا اسیلاتور رو تغییر بدی البته بستگی به fpga داره بعضیها مثل spartan3 قابلیت این رو دارن که فرکانس رو هم افزایش بدن بدون vco البته بازهم بهتره که همون منبع فرکانس خارجی رو افزایش بدی
      توی دیتاشیت حالتهای مختلفی تعریف شده توی مدهای مختلف ماکزیمم فرکانس رو تو مد pll ببین با fMax نوشته شده البته با مد اورکلاک معمولا توی کاربردهای نچندان پیچیده میشه تا ده درصدماکزیمم فرکانس رو افزایش داد
      اگه از بردهای توسعه مثل mojo استفاده میکنی یا باید خود قطعه اسیلاتور رو با یدونه مشابه با فرکانس بیشتر تغییر بدی یا اینکه از یدونه دیگ از پایه های کلاک برای اتصال اسیلاتور دوم استفاده بکنی و تموم ماژولهایی که درون fpga تعریف میکنی به این اسیلاتور متصل باشن،
      یکی از مهمترین نکات پیاده سازی کلاک و تایمینگ هستش ، بعد از اون هم اگه برنامه پیچیده و بزرگی میخوای پیاده بکنی اون رو به چند ماژول کوچکیتر تقسیم بندی بکنی و همه ساختار رو توی یدونه ماژول توصیف نکنی، از چه نرم افزاری استفاده میکنی شایدتونستم یکم راهنمایی بکنم تا حدودی از xilnix ISE سر درمیارم
      سلام
      ممنون توضیحات عالی بود از نرم افزار xilnix ISE استفاده می کنم
      خب همین DCM رو دیده بودم ولی نمی دونم چه طوری باید ازش تو برنامه استفاده کرد!!!
      اللهم صل علی محمد و ال محمد و عجل فرجهم
      پیامبر اکرم(ص):زکات علم نشر آن است.
      در کشور های غربی انتقال تجربیات و دانش به افراد مبتدی یک پیشرفت محسوب شده و به آن مدیریت دانش می گویند. ولی متاسفانه این فرهنگ هنوز در کشور ایران رایج نشده است !!!

      دیدگاه


        #4
        پاسخ : چند سوال ابتدایی در مورد mega mosfet

        سلام
        شما میتونید به بنده کمک کنید که مفهوم mega mosfet دربعضی از دیتا شیت ها نوشته میشه،چی هست؟
        مثل:IXTH 13N110
        MegaMOSFET
        باتشکر.

        دیدگاه


          #5
          پاسخ : چند سوال ابتدایی در مورد fpga

          [QUOTE=seyed saeed;705400]سلام



          این کلیپ رو ببین
          توی برنامه قسمت example رو پیدا و فک کنم روی آیکن شکل لامپ نوار ابزار بالای صفحه هم بری گزینه clock wizard رو سرچکنی پیداش میکنی
          بیشتر کاربردای این بلوک تویfpga مربوط به اتصال vco و pll هستش البته یک گزینه هم به اسم clock generator توی قسمت tools هست که به کارت میاد دو نوع بافر هم وجود دارن که در موردشون سرچ بکنی توی اینترنت کاربردشو بیشتر متوجه میشی BUFG, BUFH اینا بافر ایجاد تاخیرهستن بصورت استاندارد هستش
          هیچوقت سعی نکن داخل fpga فرکانس تولید بکنی چون کار خوبی نیست مثلا بخوای با تاخیرهای داخلی کلاک بسازی این بافر های هم تعداد قابل پیاده سازی محدودی دارن تاخیرشونم در حد 200 پیکو ثانیه هست
          جدیدترین ویرایش توسط Edrissna; ۰۳:۲۰ ۱۳۹۸/۰۷/۱۱.

          دیدگاه


            #6
            پاسخ : چند سوال ابتدایی در مورد fpga

            نوشته اصلی توسط seyed saeed نمایش پست ها
            سلام
            تازه وارد حوزه FPGA شدم و یه برنامه بسیار ساده نوشتم و برام چند تا سوال پیش اومده
            1- همیشه کلاک را باید با اسیلاتور خارجی بدهیم یا اسیلاتور داخلی هم وجود دارد
            2- با مقدار کلاک مثلا 50 مگ میشه درون fpga کلاک فرض 23.3 مگ ساخت
            3- با وجود کلاک فرضب 50 مگ اگر نیاز به کلاک بیش تر بود باید چه کرد ؟
            4- حد اکثر کلاک در کدام قسمت دیتاشیت هست؟؟
            و اگر راهنمایی دیگری دارید لطفا بفرمایید
            با سلام
            شرکت Xilinx برای کارکردن و آشنایی دقیق با امکانات داخلی FPGA های خود یک User Guide منتشر کرده که ریز جزئیات درون آن توضیح داده شده است . هر خانواده از این FPGA ها User Guideهای خودشون را دارند. برای مثال خانواده Spartan-6 شامل 17 User Guide بصورت زیر است :
            DS160 _Spartan-6 Family Overview
            DS162 _Spartan-6 FPGA Electrical Characteristics
            DS170_ Spartan-6 Automotive FPGA Family Overview
            DS172 _ Spartan-6Q Defense-Grade Family Overview
            UG380_ Spartan-6 FPGA Configuration
            UG381 _ Spartan-6 FPGA SelectIO Resources
            UG382_ Spartan-6 FPGA Clocking Resources
            UG383_ Spartan-6 FPGA Block RAM Resources
            UG384_ Spartan-6 Configurable Logic Block
            UG385_ Spartan-6 FPGA Packaging and Pinouts
            UG386 _ Spartan-6 FPGA GTP Transceivers
            UG388_ Spartan-6 FPGA Memory Controller
            UG389 _ Spartan-6 FPGA DSP48A1 Slice
            UG393_ Spartan-6 FPGA PCB Design and Pin Planning Guide
            UG394_ Spartan-6 FPGA Power Management
            UG615_ Spartan-6 Libraries Guide for HDL Designs
            UG616_ Spartan 6 Libraries Guide for Schematic Designs
            بنابراین شما برای تسلط بیشتر باید به این داکیومنت ها تسلط ذاشته باشید. برای مثال همین سوالی که شما پرسیدین که مربوط به تغییر فرکانس کلاک هست مربوط به User Guide شماره UG382 هست که حالا فصل 2 و 3 آن مربوط به DCM و PLL هست که باید از آن ها کمک بگیرید. این داکیومنت ها در سایت Xilinx بصورت رایگان قرار داده شده و میتونید به آن ها دسترسی داشته باشید . برای هر خانواده از FPGA های این شرکت (ُمثل Spartan_Virtex_Kintex_Artix) باید بصورت جدا این داکیومنت ها را تهیه کنید.پیشنهاد میکنم که در انجمن این شرکت هم عضو شوید .
            موفق باشید.
            جدیدترین ویرایش توسط Blue Ice; ۱۰:۰۳ ۱۳۹۸/۰۷/۱۱.
            ! Life doesn't get easier , you just get stronger

            دیدگاه


              #7
              پاسخ : چند سوال ابتدایی در مورد fpga

              سلام
              مانیتور رو راه اندازی کردم لطفا اشکلات کارم رو توضیح بدید البته پیکره بندی شده و مانیتور الان داره تمام صفحه رو قرمز رنگ در رزولوشن 1024در 768 نشون میده
              ولی میدونم که به عنوان کسی که تازه کار هست اشکالات زیادی در کارم هست
              library IEEE;
              use IEEE.STD_LOGIC_1164.ALL;
              use IEEE.NUMERIC_STD.ALL;

              -- Uncomment the following library declaration if using
              -- arithmetic functions with Signed or Unsigned values
              --use IEEE.NUMERIC_STD.ALL;

              -- Uncomment the following library declaration if instantiating
              -- any Xilinx primitives in this code.
              --library UNISIM;
              --use UNISIM.VComponents.all;

              entity VGA is
              Port ( CLK : in STD_LOGIC;
              VSYNC: out STD_LOGIC;
              HSYNC : out STD_LOGIC;
              R0 : out std_logic;
              R1 : out std_logic;
              R2 : out std_logic;
              R3 : out std_logic;
              R4 : out std_logic);
              end VGA;

              architecture Behavioral of VGA is

              signal CLK_65Mhz : std_logic;
              signal counter : unsigned (25 downto 0) :=(others=>'0');
              signal counter1 : unsigned (25 downto 0) :=(others=>'0');
              signal VerticalSYNC : std_logic;
              signal HorzintalSYNC : std_logic;
              signal RED : std_logic_vector(4 downto 0);
              --constant Hfront_porch : unsigned (4 downto 0) :=x"24";


              component myclock
              port
              (-- Clock in ports
              CLK_IN1 : in std_logic;
              -- Clock out ports
              CLK_OUT1 : out std_logic
              );
              end component;

              begin

              myclock_instance : myclock
              port map
              (-- Clock in ports
              CLK_IN1 => CLK,
              -- Clock out ports
              CLK_OUT1 => CLK_65Mhz);

              VSYNC <= VerticalSYNC;
              HSYNC <= HorzintalSYNC;

              R0 <=RED(0);
              R1 <=RED(1);
              R2 <=RED(2);
              R3 <=RED(3);
              R4 <=RED(4);

              process(CLK_65Mhz)
              begin

              if rising_edge(CLK_65Mhz) then

              counter <= counter+1;
              if(counter = to_unsigned(135,26)) then
              HorzintalSYNC <= '1';
              elsif(counter = to_unsigned(295,26)) then
              RED <=b"11111";
              elsif(counter = to_unsigned(1319,26)) then
              RED <=b"00000";
              elsif(counter = to_unsigned(1342,26)) then
              HorzintalSYNC <= '0';
              counter1 <= counter1+1;
              counter <=to_unsigned(0,26);
              end if;

              if(counter1 = to_unsigned(2,26)) then
              VerticalSYNC <= '1';
              elsif(counter1 = to_unsigned(805,26)) then
              VerticalSYNC <= '0';
              counter1 <=to_unsigned(0,26);
              end if;

              end if;

              end process;


              end Behavioral;
              اللهم صل علی محمد و ال محمد و عجل فرجهم
              پیامبر اکرم(ص):زکات علم نشر آن است.
              در کشور های غربی انتقال تجربیات و دانش به افراد مبتدی یک پیشرفت محسوب شده و به آن مدیریت دانش می گویند. ولی متاسفانه این فرهنگ هنوز در کشور ایران رایج نشده است !!!

              دیدگاه

              لطفا صبر کنید...
              X