M.Fatih TÜZ
01

İsim / Name

Fatih Tüz

Meslek / Job

Elektrik Elektronik Mühendisi / Electrical Electronics Engineer

E-Posta / E-Mail

info@cv.mftyazilim.com

Telefon / Phone

+90 (531) 451 9055

01

Design and Implementation of a Digital Clock with Alarm, and Displaying on VGA Monitor

VHDL-FPGA Project

Projenin temel amacı, dijital bir çalar saatin işlevselliğini, FPGA sistemi üzerinde gerçellemektir. Dijital saatler, VGA bağlantı noktası üzerinden ekranda görüntülenir. FPGA açılır açılmaz saat başlar. Alarm, FPGA kartında verilen butonlar kullanılarak ayarlanabilir. Kronometre sayacı dönmeye devam eder ve alarm çaldığında, çıktı olarak bir zil sesi duyulur.

1.PROJENİN AMAÇLARI

  • Kronometreyi ve alarm saatini VGA ekranda görüntüleme
  • Kullanıcıdan girişleri (kronometre, alarm ve sıfırlama) algılama
  • Girişten alarm zamanını ayarlama
    Giriş algılandıktan sonra kronometreyi sayma
  • Sinüsoidal bir düzende salınan saat yükseklikleri (bu normalde gerekli bir durum değildi, sadece görsel olarak nasıl zenginleştirilebilir olduğunu örnekledim)
  • Kronometre ile alarm saatinin karşılaştırılması
  • Alarm işlemi gerçekleştiğinde sesli uyarı.

Saat sistemi aşağıdaki genel gereksinimlere sahiptir:

  • Düşük güç kullanmalıdır
  • Üretim maliyeti düşük olmalıdır
  • Yazılım mimarisi modüler olmalıdır
  • Saat zamanlaması doğru olmalı, yani herhangi bir aksaklık olmamalıdır
  • Tasarım, tüketilen gücü akıllıca(verimli) kullanmalıdır.

2.PROJENİN TASARIMI

2.1 Blok Diyagramı

2.2 Projede Kullanılacak Modüller

2.2.1 Clock Divider Module

Spartan 3E kartında 50 MHz Clock Osilatörü bulunmaktadır. Yapmış olduğum projemde dijital saatler ile ilgili olduğundan, saatin düzgün çalışabilmesi ve alarmı tam zamanında çaldırması gerekiyordu. Bunun için ise Clock Sinyalini 1Hz’e düşürmem lazımdı. Ayrıca, saatlerde bulun rakamların yükseklikleri de sinüzoidal bir düzende salınmaktadır, bu salınım proje de ekstra görsellik istendiği için yapılmıştır. Bu işlemi yapmak için de yine aynı Clock sinyalini bölerek 1 Hz elde edilir. Projenin ikinci kısmında yapılan ise, elde edilen işlemlerin VGA Monitörde çıktısı alınarak gösterilmesidir. VGA sinyali üretmek için 25M Hz Clock sinyali gerekir. Sonuç olarak, bütün işlemlerin halledilip ve sistemin sorunsuz mükemmel şekilde çalıştırılması için Clock Divider Module(Saat Bölücü Modül) kullanılır.

2.2.2 Saat Bölücü Mantığı

Trigger(Tetikleme), Clock vb. sinyaller için doğru bir Pulse’a ihtiyacımız vardır. Mekanik bir cihaz olan anahtar, bastığımızda birkaç kez sıçrama (bouncing) eğilimindedir. Bu sıçramalar dijital devrelerde bir sorun olan gürültüye(noise) neden olabilir, bu sebeple anahtarın ortaya çıkardığı bu istenmeyen ani sıçramaları durdurmak için bir yöntem bulmamız gerekir. Sistemimiz Spartan 3E de bu probleme neden olan mekanik anahtarları kullanır. Bu nedenle, anahtarlarda oluşabilecek bu sıçramaları kaldırmak için, Debouncer modülünü kullandım.

2.3 Giriş Ve Sayaç Modülleri

Projedeki giriş modülleri, kronometreyi ve alarm saatini kullanıcıdan tespit etmek için kullanılır. Kart üzerindeki anahtarlar, saati ve kronometreyi  ayarlamak için kullanılır. Aşağıdaki şekilde, giriş modüllerinin ve sayaç modüllerinin nasıl çalıştığı gösterilmiştir. Kontrol anahtarı açık durumu giriş modülleri için, geri kalanı sayaç modülü içindir.

Saat Basamakları için Sayaç + Giriş Modülünün Diyagramı

Projedeki sayaç modülü, kronometre sayım işlemi için kullanılır. Saatler 1Hz’e bölünmüştür, ve bu sayede doğru çalışan bir saat gibi 1 saniyelik sürede sayım işlemi yapılır. Ayrıca sayaç modülü, zaman sınırlarına ulaştığında saniyeleri, dakikaları, saatleri kontrol eder, eğer limitlerine ulaştıysa sayaç kendini sıfırlar.

2.4 ROM Modülü

Numaraları, harfleri ve sinüsoidal dalga animasyonunu kullanarak ekranda saat göstermek için ROM kullanılmalıdır . Tasarımımdaki Karakter ROM Modülü, 32×64 olan 15 karakterden oluşmaktadır.

2.5. VGA Modülü

Daha önce belirttiğim gibi bu projede, kronometreyi ve alarm saatini görüntülemek için VGA modülü kullanılır. VGA modülü yatay çizgileri ve dikey çizgileri tarar ve senkronize eder. Ayrıca, gerekli konumlar eşleştiğinde, Font-ROM’dan gelen karakterler VGA monitöründe görüntülenir.

VGA Modül Diyagramı

2.6. Sinozoidal Modelleme

Sinüzoidal desen yapmak için font-ROM’da 4 faz kullandım. Bu 4 faz ile saatteki her bir basamak sıralı olmak kaydıyla yükseklikleri her saniyede salınmaktadır. Süreci daha anlaşılır hale getirmek için aşağıda gördüğünüz gibi küçük bir sinüs dalgası animasyonu ile projemizi destekledim.

4 fazlık Sinüs Pattern ROM’u

RTL Şeması

FPGA Board

 

 

Sonuç olarak, bu projede, Xilinx Spartan 3E FPGA Kiti kullanılarak VHDL’de alarmlı bir dijital saat geliştirilmesi başarıyla uygulanmıştır. Bu proje, benim için zor ama keyifli ve tatmin edici bir süreçten geçmemi sağlayarak, VHDL dilini keşfetmemi sağladı.