اطلاعیه

Collapse
No announcement yet.

کمک جهت طراحی fft با vhdl

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

    کمک جهت طراحی fft با vhdl

    با سلام
    من میخوام یک fft به روش رادیکس2 برای 512 نقطه طراحی کنم:
    سوال اول ، برای اینکه در حین عملیات جمع سریز اتفاق نیفته باید چیکار کنم. نوع داده ورودی رو چی انتخاب کنم؟ real یا sfixed یا unsigned
    دوم اینکه برا محاسبه twiddle factor برای این تعداد نقطه ، روش کوتاهی برای برنامه نویسیش هست؟ :cry2:
    سوم اینکه اگر بخوام روش رادیکس 2 رو با دستور portmap انجام بدم بهتره یا پیشنهاد دیگه های دارید :biggrin:
    با تشکر :smile:

    #2
    پاسخ : کمک جهت طراحی fft با vhdl

    ا سلام
    باید داده هات از نوع real باشن و حداقل چهار رقم اعشار
    برا بدست اوردن twiddle factor چون 512 رادیکس 2 هست و مشخصه میتونی از نت جدولشو در بیاری و در محاسباتت ازش استفاده کنی(محاسبه نکنی)
    بهترین روش البته از نظر من محاسبه به روش windowو استفاده از جدول ضرایب هست
    البته برا سرعت زیاد
    لینک زیر هم میتونه کمکت کنه
    http://www.mikroe.com/download/eng/d...ft_library.htm
    محک

    دیدگاه


      #3
      پاسخ : کمک جهت طراحی fft با vhdl

      نوشته اصلی توسط mahank
      ا سلام
      باید داده هات از نوع real باشن و حداقل چهار رقم اعشار
      برا بدست اوردن twiddle factor چون 512 رادیکس 2 هست و مشخصه میتونی از نت جدولشو در بیاری و در محاسباتت ازش استفاده کنی(محاسبه نکنی)
      بهترین روش البته از نظر من محاسبه به روش windowو استفاده از جدول ضرایب هست
      البته برا سرعت زیاد
      لینک زیر هم میتونه کمکت کنه
      http://www.mikroe.com/download/eng/d...ft_library.htm
      یک دنیا ممنون از راهنماییتون.
      فقط من روش window نمیدونم چجوریه. :sad: مطلبی یا توضیحی درباره این روش دارین شما؟

      دیدگاه


        #4
        پاسخ : کمک جهت طراحی fft با vhdl

        یعنی نمونه هات رو به تعداد 512 تا از ورودی میگیری به صورت اعشار کوچکتر از یک اسکیل میکنی بعد به صورت رادیکس 2
        Fft میگیری
        در ورودی محاسباتت هم اعداد رو در ماتریس به صورت یکی در میان به جای اعداد حقیقی و به جای اعداد موهومی صفر میزاری
        حالا میتونی بیت ریورز انجام بدی و یا در اخر fft تا نمونه هات مرتب بشه
        در ضمن سرعت نمونه برداریت هم حداقل دو برابر اخرین فرکانسی باشه که تو fft نیاز داری
        محک

        دیدگاه


          #5
          پاسخ : کمک جهت طراحی fft با vhdl

          به لینک زیر مراجعه کنید
          http://www.rfwireless-world.com/sour...vhdl-code.html
          محک

          دیدگاه


            #6
            پاسخ : کمک جهت طراحی fft با vhdl

            نوشته اصلی توسط mahank
            به لینک زیر مراجعه کنید
            http://www.rfwireless-world.com/sour...vhdl-code.html
            سلام.
            ممنون از لینکتون. تو این لینک از یه سری طبقات ram استفاده کرده ، اما فقط COMPONENT نوشته و برنامه اصلیش نیست . من تا حالا با حافظه های ram و rom کار نکردم ومتوجه نمیشم الان این وروردی ها و خروجیهای حافظه به چه طریقی دارن کار میکنن.
            ممنون میشم اگه راهنمایی کنید.

            دیدگاه


              #7
              پاسخ : کمک جهت طراحی fft با vhdl

              ببینید برای محاسبات یه سری متغییر تعریف میشه که جاشون تو ram هست درسته
              بعد یه سری ضرایب twiddle factor داریم که 512 تا هستن اونا تو rom ذخیره میشن
              در بدنه اصلی برنامه میایم از فرمول fft که یه سری با طول مشخص هست استفاده میکنیم
              اون سری رو اگه بازش کنی اول میاد به صورت زوج و فرد مرتب میکنه بعد دوتا دوتا به مبدل پایه (radix2) میده که خروجی اون میشه استیج 1
              بعد دوباره تکرار میشه و به استیج بعدی میره تا n استیج
              و در اخر بیت ریورز انجام میدی تا اعداد سر جاشون قرار بگیرن
              و بعد اندازه داده هات رو در زیر رادیکال به توان 2 میرسونی و با هم جمع میکنی تا بدست بیاد

              محک

              دیدگاه


                #8
                کمک جهت طراحی fft با vhdl

                یه سوال دیگه داشتم
                توی این پروژه یه ورودی داریم به نام کلاک که فرکانسش 10mhz هست. و باید در 512 پالس ، تعداأ 512 ورودی دریافت بشه.
                اگر کلاک ورودی هست چطوری باید مقدار کلاکش تنظیم بشه؟
                اگر باید کلاک 10Mرو دستی توی برنامه بسازیم که دیگه نیازی به تعریف اون به عنوان ورودی نیست.
                ممنون میشم اگر راهنماییم کنید

                دیدگاه


                  #9
                  پاسخ : کمک جهت طراحی fft با vhdl

                  در مورد کلاک که برای نمونه برداری استفاده میشه از روی ماکزیمم فرکانس ورودیت مشخص میشه به عنوان مثال حداکثر فرکانست 20khz باشه
                  اگه بیشتر از 40 هزار نمونه در ثانیه بگیری سیگنال قابل تفسیر هست
                  در مورد کلاک محاسبات باید جوری باشه که وقتی داره محاسبه انجام میشه قبل از رسیدن 512 نمونه بعدی محاسبات تموم شده باشه تا داده از دست نره
                  یا در صورت کند بودن محاسبات داده بافر بشه که داده های بعدی رو ذخیره داشته باشی که در این صورت fft realtime نیست
                  محک

                  دیدگاه


                    #10
                    پاسخ : کمک جهت طراحی fft با vhdl

                    نوشته اصلی توسط mahank
                    در مورد کلاک که برای نمونه برداری استفاده میشه از روی ماکزیمم فرکانس ورودیت مشخص میشه به عنوان مثال حداکثر فرکانست 20khz باشه
                    اگه بیشتر از 40 هزار نمونه در ثانیه بگیری سیگنال قابل تفسیر هست
                    در مورد کلاک محاسبات باید جوری باشه که وقتی داره محاسبه انجام میشه قبل از رسیدن 512 نمونه بعدی محاسبات تموم شده باشه تا داده از دست نره
                    یا در صورت کند بودن محاسبات داده بافر بشه که داده های بعدی رو ذخیره داشته باشی که در این صورت fft realtime نیست
                    ممنون. اینو متوجه هستم که وقتی داره محاسبه انجام میشه قبل از رسیدن 512 نمونه بعدی محاسبات تموم شده باشه تا داده از دست نره، اما نمیدونم چطوری با کد VHDL اینو پیاده کنم. :sad:

                    دیدگاه


                      #11
                      پاسخ : کمک جهت طراحی fft با vhdl

                      میتونم برا کلاک 10MHZ از این روش استفاده کنم:

                      clk : in std_logic := '0';
                      ...
                      clk <= not clk after 50ns;

                      دیدگاه

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