اطلاعیه

Collapse
No announcement yet.

یک مشکل ساده و عجیب در FPGA

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

    یک مشکل ساده و عجیب در FPGA

    دوستان، من تازه شروع به کار با VHDL کردم و می خوام حدود 100 تا پالس با تا خیر و طول پالس متفاوت تولید کنم. اطلاعات مربوط به طول پالس و تاخیر باید از ورودی خونده بشه.
    من خودم این پروژه رو به سه قسمت 1- خوندن داده از ورودی و ذخیره کردن 2- خوندن داده ها از EPROM(؟)و 3- قسمت تولید پالس تقسم کردم.
    در حال حاضر من دارم روی قسمت سوم کار می کنم. من توی این مرحله 50 تا خروجی تعریف کردم و در بدنه از یک شمارنده و دستور if به ترتیب زیر استفاده کردم:
    if (rising_edge(clk)) then

    if cnt < 40000000 then
    cnt := cnt + 1;
    if (cnt > a and cnt < b) then
    ch1<='1';
    else
    ch1<='0';
    end if;
    متغیرهای aو b قبلا مقدار دهی می شن(در واقع همون مقادیری هستن که از ورودی خونده وذخیره شدن)
    مسئله اینجاس که با افزایش تعداد کانال های خروجی و یا مقدار شمارنده از یه حدی، برنامه جواب نمی ده. یعنی سنتز می شه. بدون ارور پروگرم می شه. ولی کار نمی کنه!!
    آیا تعداد if ها در این سطح محدودیتی ایجاد می کنه واسه fpga? با توجه به اینکه fpga مورد استفاده ی من xilinx spartan3 با 2 مگeprom هس؟
    به جای if از چی می تونم استفاده کنم که این مشکل پیش نیاد؟
    مرسی از کمکتون!
    شب تاریک و بیم موج و گردابی چنین حائل....

    #2
    پاسخ : یک مشکل ساده و عجیب در FPGA

    سلام
    از دستور when هم میتونی استفاده کنی.
    pwmمیخوای تولید کنی؟
    گسترده تر از هر چیز دل مومن است(امام علی (ع))
    [glow=red,2,300]R[/glow]
    [glow=green,2,300]G[/glow]
    [glow=blue,2,300]B[/glow]

    دیدگاه


      #3
      پاسخ : یک مشکل ساده و عجیب در FPGA

      بله، تقریبا. شما تا حالا به این مشکل بر نخوردین که برنامه بدون ارور سنتز و پروگرم شه ولی ران نشه؟؟
      شب تاریک و بیم موج و گردابی چنین حائل....

      دیدگاه


        #4
        پاسخ : یک مشکل ساده و عجیب در FPGA

        مرحله به مرحله برین جلو اول از همه چک کنید که دیتارو درست fpga میگیره.
        50تا خروجی pwm نویز زیاد تولید می کنه تا اوجایی که میدونم جواب نمیده.
        گسترده تر از هر چیز دل مومن است(امام علی (ع))
        [glow=red,2,300]R[/glow]
        [glow=green,2,300]G[/glow]
        [glow=blue,2,300]B[/glow]

        دیدگاه


          #5
          پاسخ : یک مشکل ساده و عجیب در FPGA

          سلام،
          بهترین کار و اصولی ترین کار استفاده از DCO هست به جای PWM اما اگه همون PWM رو لازم دارید باید خیلی تو کد نوشتنش دقت کنید، چون شما قصد دارید تعداد بالایی Instance بگیرید.
          برای استفاده از متغییر ها حتما اندازه اونها رو در تعریفشون درج کنید.
          در مورد تعداد هم هیچ محدودیتی نیست بجز حجم و روتینگ، این دو باعث میشن که کلاکها(50 خروجی شما و کلاک اصلیتون) از مسیرهای کلاک رد نشن و از Pathهای روتیتگ ردشن و مشکلاتی مثل Cross talk و Power loss داشته باشید، هرچی هم کلاک بالاتر بره اینها خودشون رو بیشتر نشون میدن.
          حتما از همه DCM ها استفاده کنید و اولویت کلاکهاتون رو هم بر اساس محل لاجیکش و محل پایه مشخص کنید.
          اسمایل، تومورو ویل بی وُرس

          دیدگاه

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