اطلاعیه

Collapse
No announcement yet.

کمک در طراحی fpgaدر یک مثال عملی

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

    کمک در طراحی fpgaدر یک مثال عملی


    با سلام
    یک شفت اینکودر 2048 پالسی به یک موتور وصل است که با سرعت 21000 دور در دقیقه میچرخه یعنی 350 دور در ثانیه فرض کنید می خواهیم در زاویه 175 درجه ( که 995 امین پالس ) یک خروجی را فعال کنیم
    همانطوری که مستحضر هستید اگر یک مدار میکرو کنترلی درست کنیم با توجه به اینکه هر وقفه تایمر - کانتر حداقل 7 پالس ساعت می خواد فرکانس کاری که جواب میده در بهترین حالت بالای 80 مگ میشه که خوب از عهده میکروهای معمولی خارج است
    می خواهم با یک fpga این کار را انجام بدم
    فکر کنم اگر سخت افزاری به مدار نگاه کنیم خوب یک شمارنده میخواد و یک مقایسه کننده بیتی میخواهد و یک پایه enable

    حالا
    سوال 1 : آیا در fpga ها هم توالی مدارهای فوق لازم است اصلا طراحی مدار فوق چگونه خواهد بود
    سوال 2 : اگر fpga از توالی مدار فوق تشکیل شده باشه هر طبقه به طبقه بعد چند پالس ساعت لازم داره
    سوال 3 : آیا در fpga واحد های کانتر و شیفت و جمع کننده ها و ... اصلا فلیپ فلاپ ها آماده است یا باید با گیتها ساخته بشه
    تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
    داشتن عقله زيادتر از دیگر آدم ها است

    #2
    پاسخ : کمک در طراحی fpgaدر یک مثال عملی

    ای بابا
    ولی من به یک نتایجی رسیدم
    در مورد سوال سوم خودم انگار هیچ المان آماده ای جز گیت ها نیست بلکه با دستورات که از طریق کدنویسی VHDL صورت میگیره همون لحظه ساخته میشه و ذخیره میشه و در ضمن
    انگار 99 درصد مدارات از توالی دستورات استفاده میکنن که در توالی چندین و چندین دستور موازی میشه نوشت
    تنها موردي كه همه آدما يقين دارن خدا در حقش زیاد لطف کرده
    داشتن عقله زيادتر از دیگر آدم ها است

    دیدگاه


      #3
      پاسخ : کمک در طراحی fpgaدر یک مثال عملی

      اگر درست حساب کرده باشم شما به ازا 1.4 میکرو ثانیه یه کلاک از شفت انکودر دارید.
      با یه میکرو با فرکانس 20 مگ ؛ هر سیکل ساعت میشه 50 نانو ثانیه
      در صورتی که پالس شفت انکودر رو به جای اینکه در تایمر بشمارید بدید به کانتر
      و مقدار کانتر رو مقایشه کنید فکر کنم
      زمان کافی برای محاسبه رو هم داشته باشید.
      و در مورد سوالتون در رابطه با fpga ها:
      خود شرکت های سازنده ، کدهایی رو به صورت اماده در نرم افزاریهای سنتز کننده دارند تا
      به صورت بهینه شده مثلا یه کانتر رو قرار بدهند .
      تمام اجزا دارند با یک کلاک پالس کارشون رو انجلم میدهند
      هرچند طبق محاسبات من فکر میکنم یک میکرو برای شما کافی هست
      ولی با یک cpld هم میتونید این کار رو انجام بدید
      مثلا:


      کد:
      library ieee;
      use ieee.std_logic_1164.all;
      use ieee.std_logic_unsigned.all;
      
      entity counter is
      	port(clk : in std_logic;
      		 e : out std_logic
      		);
      end counter;
      
      architecture behav of counter is
      signal count:integer range 0 to 1023:=0;
      begin
      	process(clk)
      	begin
      		if(clk='1' and clk'event)then
      			count <= count+1;
      			if(count = 995)then
      				count<=0;
      				e<='1';
      			else
      				e<='0';
      			end if;
      		end if;
      	end process;
      end behav;

      دیدگاه

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