FPGA

آموزش FPGA: در ادامه طراحی پروسسور دستورات مورد نظر آورده میگردد.

mv Rx,Ry                   Rx ← [Ry]
mvi Rx,#D                      Rx ← D
add Rx,Ry       Rx ← [Rx] + [Ry]
sub Rx,Ry       Rx ← [Rx] − [Ry]
دستور اول انتقال یک رجیستر به رجیستر دیگر را نشان می دهد.
دستور دوم انتقال یک عدد به یک رجیستر را نشا ن میدهد.
دستور سوم جمع دو رجیستر ودستور چهارم تفریق دو رجیستر را نشان میدهد.
تعداد کلاکهایی که برای هر دستور لازم است در جدول زیر نشان داده میگردد.
T1                                           T2                                                    T3
(mv): I0                        RYout, RXin,  Done                                                                                            

(mvi): I1                        DINout, RXin, Done                                                                                            

(add): I2                       RXout, Ain                                         RYout, Gin                    Gout, RXin, Done
,sub): I3                       RXout, Ain                                         RYout, Gin                    Gout, RXin )
ساختار برنامه VHDL که عملیات مورد نظر را انجام می دهد به قرار زیر است
LIBRARY ieee; USE ieee.std_logic_1164.all;
USE ieee.std_logic_signed.all;
ENTITY proc IS
PORT ( DIN : IN STD_LOGIC_VECTOR(15 DOWNTO 0);
Resetn, Clock, Run : IN STD_LOGIC;
Done : BUFFER STD_LOGIC;
BusWires : BUFFER STD_LOGIC_VECTOR(15 DOWNTO 0));
END proc;
ARCHITECTURE Behavior OF proc IS
. . . declare components
. . . declare signals
BEGIN
High <= ’1’;
Clear <= . . .
Tstep: upcount PORT MAP (Clear, Clock, Tstep_Q);
I <= IR(1 TO 3);
decX: dec3to8 PORT MAP (IR(4 TO 6), High, Xreg);
decY: dec3to8 PORT MAP (IR(7 TO 9), High, Yreg);

controlsignals: PROCESS (Tstep_Q, I, Xreg, Yreg)
BEGIN
. . . specify initial values
CASE Tstep_Q IS
WHEN "00" => - - store DIN in IR as long as Tstep_Q = 0
IRin <= ’1’;
WHEN "01" => - - define signals in time step T1
CASE I IS
. . .
END CASE;
WHEN "10" => - - define signals in time step T2
CASE I IS
. . .
END CASE;
WHEN "11" => - - define signals in time step T3
CASE I IS
. . .
END CASE;
END CASE;
END PROCESS;
reg_0: regn PORT MAP (BusWires, Rin(0), Clock, R0);
. . . instantiate other registers and the adder/subtracter unit
. . . define the bus
END Behavior;
Figure 2b. Skeleton VHDL code for the processor.
LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_signed.all;
ENTITY upcount IS
PORT ( Clear, Clock : IN STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR(1 DOWNTO 0));
END upcount;
ARCHITECTURE Behavior OF upcount IS
SIGNAL Count : STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN
PROCESS (Clock)
BEGIN
IF (Clock’EVENT AND Clock = ’1’) THEN
IF Clear = ’1’ THEN
Count <= "00";
ELSE
Count <= Count + 1;
END IF;
END IF;
END PROCESS;
Q <= Count;
END Behavior;


LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY dec3to8 IS
PORT ( W : IN STD_LOGIC_VECTOR(2 DOWNTO 0);
En : IN STD_LOGIC;
Y : OUT STD_LOGIC_VECTOR(0 TO 7));
END dec3to8;
ARCHITECTURE Behavior OF dec3to8 IS
BEGIN
PROCESS (W, En)
BEGIN
IF En = ’1’ THEN
CASE W IS
WHEN "000" => Y <= "10000000";
WHEN "001" => Y <= "01000000";
WHEN "010" => Y <= "00100000";
WHEN "011" => Y <= "00010000";
WHEN "100" => Y <= "00001000";
WHEN "101" => Y <= "00000100";
WHEN "110" => Y <= "00000010";
WHEN "111" => Y <= "00000001";
END CASE;
ELSE
Y <= "00000000";
END IF;
END PROCESS;
END Behavior;

LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY regn IS
GENERIC (n : INTEGER := 16);
PORT ( R : IN STD_LOGIC_VECTOR(n-1 DOWNTO 0);
Rin, Clock : IN STD_LOGIC;
Q : BUFFER STD_LOGIC_VECTOR(n-1 DOWNTO 0));
END regn;
ARCHITECTURE Behavior OF regn IS
BEGIN
PROCESS (Clock)
BEGIN
IF Clock’EVENT AND Clock = ’1’ THEN
IF Rin = ’1’ THEN
Q <= R;
END IF;
END IF;
END PROCESS;
END Behavior;
.
 

 

آموزش FPGA: در بخش دوم از طراحی پروسسور به قابلیتهایی که یک پروسسور به صورت حداقل باید داشته باشد میپردازیم.

1-      تعدادی رجیستر داخلی.در پروسسوری که ما میخواهیم بسازیم  8 رجیستر در نظر میگیریم

2-      ا مکان انتقال  رجیسترها

3-      بخشی که محاسبات را انجام می دهد. در اینجا عملیات جمع و تفریق لحاظ گردیده است

4-      بخش کنترل

 

2

ا ز طریق DIN دیتا به هر یک از رجیسترها  می تواند منتقل گردد و اطلاعات  رجیستر A و هریک از رجیسترهای R0 تا R7 در قسمت محاسباتی

با هم جمع یا تفریق می گردد.دستور العملها در رجیستر  IR ذخیره شده و پس از decoding فرمانهای لازم از طریق بخش کنترل به قسمتهای

مختلف داده میگردد

 

 

 

آموزش FPGA:بابه بازار  آمدن FPGAها موضوع پیاده سازی پروسسور ها در آنها یک مطلب مهم بود که مورد توجه شرکتها و اشخاص مختلف قرار گرفت.

در همین راستا  IP CORE  پروسسوری چون 8051 توسط بعضی شرکتها تهیه گردید و همانند آسی 8051 که خریداری میگردید آن نیز

خریداری میشد وسپس با پیاده شدن در FPGA قابلیت استفاده در پروژههای مختلف رامی یافت.

در ا دامه  این  موضوع  چنان   اهمیت  یافت که  شرکتهای  بزرگ   تولید  کننده   FPGA  چون   Altera   و Xilinx     اقدام  به  تولید

Soft  processor های توانایی چون NIOS  و  Microblaze  نمودند.

در این میان ساخت پروسسورهایی که برای مصارف خاص تهیه  شده است  جایگاه  مهمی  دارد  علت  این  موضوع  آن   است   که

در بسیاری از کاربردها ما احتیاج  به  دستورلعملهای  کمی  داریم و  می توانیم  با  صرف  انرژی  معقولی  پروسسوری  با  قابلیتهای

خواسته  شده   را طراحی  نماییم  از  سوی  دیگر  پروسسورهای  با  قابلیتهای  زیاد در تعدادی از FPGA  ها امکان  پیاده  سازی  را

ندارند واین در حالی است که ما بسیاری از آن امکانات را استفاده نمی کنیم .

در این سلسله از مباحث ما روند طراحی یک پرو سسور راآموزش میدهیم.

 

 

مقدمه:

cycloneII بین دو تا چهار PLL  دارا میباشد  که هر PLL  میتواند سه خروجی مستقل داشته باشد .

فرکانس خروجی توسط فرکانس سیگنال ورودی و دو ضریب multiplication factor و division factor مشخص میگردد.

EP2C5 وEP2C8  دارای دو PLL  می باشند و مابقی انواع CYCLONEII  دارای چهار عدد PLL  میباشند.

افزایش شیفت فاز تا 125 پیکو ثانیه میتواند کاهش یابد. فرکانس کاری PLL  بستگی به speed grade  عنصر CYCLONEII  دارد

که مورد استفاده قرار میگیرد.

هر PLL دارای سه کلاک خروجی داخلی و یک کلاک خروجی خارجی می باشد.ورودی هر PLL باید از طریق کلاک خاص آن PLL  اعمال

گردد در غیر این صورت Fitter   خطا خواهد گرفت .

در شکل زیر که از سایت ALTERA گرفته شده است بلاک دیاگرام pll در cyclone2 نمایش داده شده است.

cyclone2_blockgiagram

 

 

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

1-  میتوان cycloneII را به عنوان DSP به تنهایی مورد استفاده  قرار داد یا به عنوان یک  coprocessor با یک پردازنده DSP  استفاده گردد.

-cycloneII DSP تواناییهای زیر را شامل می باشد:

الف- تا 150 ضرب کننده 18*18 را دارا میباشد.

ب-  تا 1.1 Mbits  حافظه on chip embedded را دارا می باشد.

پ-core  های مختلف DSP را میتوان در آن پیاده سازی نمود .

ت- دارای interface با سرعت بالا برای اتصال به حافظه خارجی میباشد.

ث-دارای ارتباط DSP BUILDER  با نرم افزار  MATLAB و  SIMULINK در  MATLAB میباشد.

cycloneII  کاربردهای مختلفی دارد که در ذیل به آن اشاره می گردد

 

Table 1. Cyclone II DSP Applications
Applications
Broadcast and Consumer Wireline and Wireless Communications
  • Plasma Displays
  • HDTV
  • Set-Top Boxes
  • Cameras
  • Audio/Visual Conference Equipment
  • HDTV Camcorders
  • Wireless Basestations
  • Digital Subscriber Line Access Multiplexer (DSLAM) Systems
  • Wireless LAN Access Point
Automotive Military, Industrial, and Medical
  • Navigation Systems
  • Satellite Radio Receiver
  • Hybrid Television Receiver
  • Telematics
  • Entertainment
  • Medical Imaging (e.g., MRI, X-ray)
  • Video Displays
  • Video Surveillance
  • Radars
  • Software Defined Radio
  • Network Test Equipment
 

با کلیک روی 1+ نوین تراشه را محبوب کنید!

| + -