You are on page 1of 16

YILDIZ TEKNİK ÜNİVERSİTESİ

ELEKTRİK-ELEKTRONİK FAKÜLTESİ
ELEKTRONİK VE HABERLEŞME MÜHENDİSLİĞİ BÖLÜMÜ

Bitirme Projesi Ara Raporu

FPGA ile Frekanspetre / Periyotmetre Tasarımı

Tez/Proje Danışmanı :
Prof. Dr. Herman SEDEF
Arş. Gör. Murathan ALPAY

04014044
Faruk BAYHAN

İstanbul, 2009
ÖZET

Günümüzde elektronik sistemlerin tasarımında System–on–Chip (SoC) teknolojisi özellikle


yer ve enerji hız sorunlarının yoğun olarak yaşandığı alanlarda kullanılmaktadır. SoC
teknolojisinde, sistem içerisindeki birimler çoğunlukla bir donanım tanımlama dili (VHDL,
VERILOG veya SystemC) yardımıyla ifade edilirler.

Bütün birimler, sentezleme ve yerleştirme işlemleri sonunda tekrar programlanabilir bir


tümleşik devreye aktarılır. Sistemin uygulama aşamasında ise gerek büyük kapasiteleri ve
gerekse de esnek yapılarından dolayı FPGA tümleşik devreleri tercih edilmektedir.

Günümüz teknolojilerinden olan FPGA ve VHDL, teknoloji ilerledikçe handikaplarını


ortadan kaldırmakta, gittikçe önem kazanmakta ve uygulamalarda kendilerine daha çok yer
bulmaktadır.

Bu bitirme projesiyle FPGA teknolojisi VHDL donanım tanımlama dili kullanılarak


Frekansmetre / Periyotmetre tasarımı yapılacaktır. Projenin gerçeklenmesiyle FPGA
teknolojisi, VHDL hakkında bilgi sahibi olmak bu teknolojilerden yararlanmak için
kullanılması gereken programları kullanabilmek ve donanım kitleri üzerinde çalışan
uygulamalar yapabilmek hedeflenmiştir.

Dönemin başlangıcından ara raporun teslimine kadar sistemin gerçeklenmesi için gerekli
hazırlıklar yapılmış, edinilmesi gereken bilgiler öğrenilmiş ve tasarım sürecinde gerekli
adımlar atılmıştır. Bitirme tezinin son taslağının teslimine kadar geçecek süre içinde tasarımın
gerçeklenmesi hedeflenmektedir.

ii
1

1. GİRİŞ

Transistörün bulunmasıyla elektronikte hızlı bir gelişim süreci başlamış oldu.


Günümüzde, elektronik dünyasında yarı iletken teknolojisi oldukça ileri seviyelere
ulaşmıştır. Elektronik sistemlerin tasarımında System–on–Chip (SoC) teknolojisi
özellikle yer ve enerji hız sorunlarının yoğun olarak yaşandığı alanlarda kullanılmaktadır.
SoC teknolojisinde, sistem içerisindeki birimler çoğunlukla bir donanım tanımlama dili
(VHDL, VERILOG veya SystemC) yardımıyla ifade edilirler.

Piyasada çeşitli yöntemler kullanarak yapılmış değişik tiplerde frekansmetreler


satılmaktadır. Analog ibreli, titreşimli, sayısal, programlarla yapılmış olanlar bunlardan
bazısıdır. Bu bitirme projesi kapsamında FPGA teknolojisi kullanılarak, bir Frekansmetre
/ Periyotmetre tasarımı yapılacaktır. Projenin gerçeklenmesiyle birlikte yüksek hızlarda
çalışan bir frekansmetre gerçeklemenin yanında, FPGA teknolojisi, VHDL hakkında bilgi
sahibi olmak, bu teknolojilerden yararlanmak için kullanılması gereken programları
kullanabilmek ve donanım kitleri üzerinde çalışan uygulamalar yapabilmek
hedeflenmiştir.

1 saniyedeki periyot sayısını ölçen ölçü aletlerine frekans metre denir. 1 işaretin
periyodunu ölçen alete ise periyotmetre denmektedir. Projede tasarım yapılırken bu iki
ölçü aleti arasındaki ilişkiden faydalanılmıştır. FPGA üzerinde periyotmetre
gerçeklenmesi hedeflenmiş 1 saniye süredeki periyot sayısını ölçerek frekansı
hesaplamanın ise periyot bilgilerinin gönderildiği bir kişisel bilgisayar üzerinde
yapılmasına karar verilmiştir.[1]

Raporun devamında projenin amacı, hedefleri, blok diyagramı, kullanılacak donanım kiti
hakkında bilgi ve şemalar, içinde bulunulan tarihe kadar yapılan işlemler hakkında kısaca
bilgi verilecektir.
2

2. AMAÇ

Bu bitirme projesiyle FPGA teknolojisi VHDL kullanılarak Frekansmetre / Periyotmetre


tasarımı yapılacaktır. Projenin gerçeklenmesiyle FPGA teknolojisi, VHDL hakkında bilgi
sahibi olmak bu teknolojilerden yararlanmak için kullanılması gereken programları
kullanabilmek ve donanım kitleri üzerinde çalışan uygulamalar yapabilmenin yanı sıra
yüksek hızlarda çalışabilen ve bulduğu değeri bilgisayar ortamına gönderebilen yüksek
özellikli bir Frekansmetre / Periyotmetre tasarlamak amaçlanmaktadır.

3. HEDEFLER

Bu projenin hedeflerinden biri sayısal entegre tasarım ve yapım yöntemlerini, FPGA


entegrelerin programlanmasını öğrenmek, benzetim yönteminin avantajlarından
faydalanabilmektir. Tasarlanan sayısal entegre veya sistemi programlanabilir yapılar
üzerinde gerçekleştirebilmektir. FPGA teknolojisinin, gelişimi ve akışı hakkında bilgi
edinmektir.

Projenin diğer hedefi olan FPGA teknolojisi; temel FPGA içerikleri, Toplayıcılar,
Çarpıcılar, Flip/Flop’lar vb. elemanların tasarımının ve kullanımının öğrenilmesi, bu
nedenlerden dolayı önem kazanmaktadır.

4. PROJE ÇIKTILARI

Projenin yapım süresince ve bitimi sonunda ortaya konulacak raporların ve uygulama


sonuçlarının aşağıdaki gibi olması beklenmektedir:

• Bitirme Projesi İlk Raporu


• Bitirme Projesi Ara Raporu
• Bitirme Tezi
• Benzetim programıyla gerçeklenen sayısal sistemin yazılımı, çıktıları ve kullanıcı
el kitabı
3

5. PROJEDEKİ AMAÇ VE HEDEFLERE ULAŞMAK İÇİN GEREKSİNİMLER

Projenin gerçeklenmesinde gerekli birtakım teknik doküman, kaynak, ve cihazlar vardır.


Bunları şöyle sıralayabiliriz:
• Tasarımın yapılması planlanan FPGA donanım kiti “Celoxica RC 10”.
• Tasarım Programı Xilinx ISE
• Simülasyon programı Modelsim
• Okulda asistan hocalarımız tarafından verilen FPGA eğitimleri

6. PROJE ADIMLARI VE PROJE PLANI

Bitirme projesi ara raporu teslim tarihinden itibaren yürütülen ve yürütülecek olan proje
planı hazırlanmış ve Tablo - 1 de verilmiştir.
4

23.11.2009 Ara Rapor teslimi


24.11.2009
25.11.2009
26.11.2009 Kare dalga algılayan
27.11.2009 Periyotmetre tasarımı
28.11.2009
29.11.2009
30.11.2009
01.12.2009
02.12.2009
03.12.2009 RS -232 Port kullanımı
04.12.2009
05.12.2009
06.12.2009
07.12.2009
08.12.2009
09.12.2009
10.12.2009 ADC kullanımı
11.12.2009
12.12.2009
13.12.2009
14.12.2009
15.12.2009 Sistemin Birleştirilmesi
16.12.2009
17.12.2009
18.12.2009 Bilgisayar arayüz
19.12.2009 yazımı
20.12.2009
21.12.2009
22.12.2009
23.12.2009
24.12.2009 Bitirme Tezi Yazımı
25.12.2009
26.12.2009
27.12.2009
28.12.2009 Bitirme Tezi Teslimi

Tablo – 1 Proje Planı

7. BİTİRME PROJESİ İLK RAPORU TESLİM TARİHİNE KADAR YAPILAN


İŞLER

- Konu belirlemesi yapıldı.


5

- Tasarımın gerçekleneceği bilgisayar programları (Xilinx ISE ve Modelsim) hakkında


bilgi edinildi. Programların kurulumu tamamlandı ve internette yayımlanan kullanım
kılavuzları incelendi.

- VHDL eğitimlerinin tamamına katılındı, verilen tüm ödevler yapıldı, birçok proje
sentezlendi ve simülasyonları incelendi.

Bu güne kadar sentezlenen projelerin listesi şu şekilde oluştu;

Tam Toplayıcı
Modulo 1000000 sayıcı
Sayıları çarpıp, çarpımları toplayan devre
Dizi detektörü
8 bit sayıp “7 segment” te çıkış veren devre

- Frekans, periyot gibi kavramlar araştırıldı. Bu kavramlar hakkında elde edilen bilgileri
şöyle özetleyebiliriz:

Frekans: 1 saniyedeki peryot sayısına frekans denir.


Periyot: Tam devir yapmış dalga bir peryotluktur (devirliktir). Devrini tamamlayan
dalgaya peryot denir.

Pals: Yarım peryota pals denir. 1 peryotta birisi pozitif, diğeri negatif olmak üzere iki
adet pals vardır.

Frekansın birimi: HERTZ vaya SAYKIL olarak belirtilir. Değerinin askatları yoktur,
fakat üs katları vardır.

Periyotun birimi: Saniye olarak ifade edilir. Bunu şöyle ifade edebiliriz:
1 hertzlik frekans 1 saniyede 1 devir yapıyor demektir, yani 1 saniyede 1 peryot
bulunmaktadır. Bu bizi, şu sonuca ulaştırır: 1 periyot 1 saniyedir.
Peryotun biriminin as katları bulunmaktadır.
6

- Projede kullanılacak teknoloji olan VHDL, “VHSIC Hardware Description Language”


in kısaltmasıdır. VHSIC ise “Very High Speed Integrated Circuits” in kısaltmasıdır.
Devre çizimi yapmak yerine bir programlama dili ile devreyi tanımlamada kullanılır.
Büyük sayısal devrelerin tasarımında kullanılan pek çok şekli vardır.
–Açıklama (Documentation)
–Doğrulama (Verification)
– Gerçekleme (Synthesis)
Üç farklı devre tanımlama yöntemi kullanılır:
–Yapısal (Structural)
–Veri Akışı (Data flow)
–Davranışsal (Behavioral)
Çoğu zaman bu üç yöntemin karışımı kullanılır.
VHDL 1976 yılında IEEE tarafından geliştirilmiş bir standartdır. Dil pek çok
yenilemeden geçmiştir. Şu anda 1993 yılı üretimi en çok kullanılan halidir.[2]

- Kullanılacak FPGA kiti “Celoxica RC 10” asistan hocalardan temin edildi. Kitin
kullanımı çok kolay olan programlama ara yüzü “FT3” kuruldu. Kullanım kılavuzu ve
şematik dosyaları ayrıntılı bir şekilde incelendi.

Kullandığımız kitin genel donanım özelliklerini şöyle listeleyebiliriz.[3]


- Xilinx Spartan 3L XC3S1500L-4-FG320 FPGA Çip
- 5 yönlü buton
- Klavye ve fare için PS/2 portu
- RS-232 seri port
- 2 ADC
- VGA Çıkış
- opsiyonel LCD video çıkış
- ses çıkış (stereo PWM, ve piezo)
- USB port yönetimi, FPGA Konfigürasyonu ve Flash yönetimi için “ Microcontroller”
- 2 tane 7-segment
- 8 adet yeşil LED
7

Donanımları inceleyen blok diyagram Şekil – 1 de verilmiştir.

Şekil – 1 RC 10 Donanımı Blok Diyagramı [3]

- Daha önce geliştirilen ancak fiziksel ortamda denenemeyip sadece simülasyonu


yapılabilen bazı projeler FPGA kiti üzerinde çalıştırıldı.

- Sistemin 48 MHz lik saat çıkışını kullanan ancak bunun gözle görülebilmesi için
düzenlemeler yapılmış 8 bit bir sayıcı kitin ledlerinden çıkış verilerek çalıştırıldı daha
sonra 8 bit ikili değerin 16 lık karşılığı 2 basamaklı “7 segment” te de gösterildi. Çalışan
devrenin bir fotoğrafı Resim -1 de verilmiştir.
8

Resim – 1

Yazılan VHDL kod ise şu şekildedir.

entity fbyaz is
Port ( clk : in STD_LOGIC;
butonas : in STD_LOGIC;
sseg : out STD_LOGIC_VECTOR (15 downto 0);
ledout : out STD_LOGIC_VECTOR (7 downto 0));
end fbyaz;

architecture Behavioral of fbyaz is

-- noktalar 7 ve 11
signal charfb : STD_LOGIC_VECTOR (15 downto 0) :="1111000100010111";
signal char00 : STD_LOGIC_VECTOR (15 downto 0) :="1011011101111101";
signal HEXL : STD_LOGIC_VECTOR (3 downto 0) :="0000";
signal HEXH : STD_LOGIC_VECTOR (3 downto 0) :="0000";
signal LEDL : STD_LOGIC_VECTOR (6 downto 0) :="0000000";
signal LEDH : STD_LOGIC_VECTOR (6 downto 0) :="0000000";
signal cntr : STD_LOGIC_VECTOR (23 downto 0) :="000000000000000000000000";
9

signal im_ledout : STD_LOGIC_VECTOR (7 downto 0) :="00000000";


begin

process (clk)
begin
if clk='1' and clk'event then
cntr <= cntr + 1;
end if;
end process;

process (cntr(23))
begin
if cntr(23)='1' and cntr(23)'event then
im_ledout <= im_ledout + 1;
end if;
end process;

process (butonas)
begin
if butonas='0' then
sseg <= char00;
else
sseg <= charfb;
end if;
end process;
HEXL <= im_ledout(3) & im_ledout(2) & im_ledout(1) & im_ledout(0);
HEXH <= im_ledout(7) & im_ledout(6) & im_ledout(5) & im_ledout(4);

--HEX-to-seven-segment decoder
-- HEX: in STD_LOGIC_VECTOR (3 downto 0);
-- LED: out STD_LOGIC_VECTOR (6 downto 0);
--
10

-- segment encoinputg
-- 0
-- ---
-- 5 | | 1
-- --- <- 6
-- 4 | | 2
-- ---
-- 3
with HEXL SELect
LEDL<="0000110" when "0001", --1
"1011011" when "0010", --2
"1001111" when "0011", --3
"1100110" when "0100", --4
"1101101" when "0101", --5
"1111101" when "0110", --6
"0000111" when "0111", --7
"1111111" when "1000", --8
"1101111" when "1001", --9
"1110111" when "1010", --A
"1111100" when "1011", --b
"0111001" when "1100", --C
"1011110" when "1101", --d
"1111001" when "1110", --E
"1110001" when "1111", --F
"0111111" when others; --0

with HEXH SELect


LEDH<="0000110" when "0001", --1
"1011011" when "0010", --2
"1001111" when "0011", --3
"1100110" when "0100", --4
"1101101" when "0101", --5
11

"1111101" when "0110", --6


"0000111" when "0111", --7
"1111111" when "1000", --8
"1101111" when "1001", --9
"1110111" when "1010", --A
"1111100" when "1011", --b
"0111001" when "1100", --C
"1011110" when "1101", --d
"1111001" when "1110", --E
"1110001" when "1111", --F
"0111111" when others; --0
-- Elde ettiğimiz kodların Sahip olduğum kitin şemsına göre dizilmiş hali ara daki 0 lar 7
segment in noktaları
char00 <= LEDL(2) & LEDL(6) & LEDL(3) & LEDL(4) & '0' & LEDH(2) & LEDH(3)
& LEDH(4) & '0' & LEDL(1) & LEDL(0) & LEDL(5) & LEDH(1) & LEDH(0) &
LEDH(6) & LEDH(5);

ledout <= im_ledout;

end Behavioral;

Daha sonra tasarlanan devredeki giriş ve çıkış pinleri “Plan Ahead” adlı programda
FPGA çipi üzerine, kullandığımız kit olan “RC10” a bağımlı olarak, atamaları yapıldı
Resim – 2 de “Plan Ahead” programından bir görüntü görülmektedir.
12

Resim – 2

- Tasarlanması planlanan Frekansmetrenin blok diyagramı oluşturuldu. Oluşturulan blok


diyagramı Şekil - 2 de verilmiştir.
13

Şekil – 2 Devrenin Blok Diyagramı

8. SONUÇLAR

Bitirme projesi ara raporunda proje hakkında detaylı bilgiler verilmiş, projenin
öneminden bahsedilmiştir. Projeyi gerçekleştirebilmek için yapılan çalışmalar,
ilerlemeler, alınan sonuçlar, devre tasarımları ve oluşturulan donanım anlatılmıştır.
Neden FPGA teknolojisinin seçildiği hakkında bilgiler verilmiştir, çalışma prensibi,
yapılmış çalışmalarda gerçeklenen devreler hakkında bilgiler verilmiştir. Tasarımda
kullanılabilecek bilgisayar programları açıklanmıştır. Tasarlanacak devrenin blok
diyagramı verilmiştir.

Projeyi gerçekleştirebilmek için öncelikle FPGA ve VHDL hakkındaki eksik bilgiler


giderilmiştir. Yeterli bilgi ve deneyime sahip olunmuş Frekansmetre / Periyotmetre
tasarımına geçilmiştir.
14

Projenin tasarımı için gerekli kaynaklara ulaşılmıştır. Bu aşamada ilk önce FPGA
üzerinde “Sayıcı” , “Yazmaç” gibi elementlerin tasarımı gerçeklenmiş, bunlar kit
üzerinde çalıştırılmıştır. Şimdi bu elementlerin birleşimiyle Frekansmetre / Periyotmetre
tasarımının gerçeklenmesi hedeflenmektedir.

Projenin yeni hedeflerine ulaşabilmek için FPGA ile bir kişisel bilgisayarı seri port
üzerinden haberleştirebilmek gerekmektedir. Bunun için gerekli kaynaklara ulaşılmıştır.
Ayrıca bilgisayar üzerinde de çalışacak bir de ara yüz tasarlanmalıdır.

9. KAYNAKLAR

[1] http://www.teknomerkez.net/makale.asp?k=141

[2] Ece OLCAY GÜNEŞ ve Berna ÖRS YALÇIN, (2008) “VHDL Eğitim sunumları”

[3] Cambridge Technology Consultants, 2005. RC10 Manual, Celoxica.

You might also like