Klavye veriyi SPI(Serial Peripheral Interface) ile gönderiyor. SPI'de bir clock bir de data hattı var. Clock'u da datayı da klavye sürüyor. O yüzden clockdaki kenarları bulmak FPGA'in işi. Klvaye veriyi paket halinde gönderiyor. Bir paket 11 bit. Paket biçimi 1 bit start biti ve hep 0 + 8 bit data + odd parity biti + stop bit. Data, clock'un negatif kenarında okunmalı. Datanın en düşük biti ilk yollanıyor. Aşağıdaki şekil PS2 klavyenin 1 paketi yollarkenki pin seviyelerini gösteriyor.
FPGA, ps2clockdaki negatif kenarları algılayıp, durum makinası ile ps2data'yı shift registera koyuyor. Sonra pariteyi kontrol edip, eğer hata yoksa ledlere veriyor ve data_ready bayrağını 1 yapıyor. Hata varsa ölü bir durumda kalıyor. FPGA'in tekrar çalışması için resetlemek gerekiyor. Ps2 klavyenin çalışma frekansı 10kHz - 16kHz arasında. Bu çok düşük çalışma frekansından dolayı 2 klavye pininin de filtrelenmesi gerekiyor.
Aşağıdaki şekilde klavye kodları var.
Bir tuşa basıldığında klavye o tuşun kodunu yolluyor. Eğer tuşa basılı tutulursa 0.1 saniye sonra tuşun kodunu sürekli yollamaya başlıyor. Tuş bırakılınca da F0 ve tuşun kodunu yolluyor. Yani 2 paket yolluyor. Program en son basılan tuşun kodunu gösterdiği için F0 gözükmüyor, onun yarine bırakılan tuşun kodu gözüküyor. Ama tuş bırakılınca ledlerin kısa bir süre yandığı görebiliyorum. Tuşa basılı tutulunca olan sürekli yollamalar da gözüküyor.
Bundna sonra klavye ile kartın üzerindeki LCD ekrana yazı yazabilecek programı yazmayı düşünüyorum.
Program kodları buradan indirilebilir.
İyi günler...
YanıtlaSilSitenizi incledim, gayet hoşuma gitti...
Ben de FPGA ile ileri seviyede programlama ile ilgileniyorum www.fxdev.org/muhendislik bölümünde FPGA ile yaptığım örneklerin bir kaçını görebilirsiniz.
Acaba sizle iletişime geçebilir miyim?
Bana sitemin iletişim bölümünden ulaşabilir misin?
www.fxdev.org
Çok ilginç şeyler varmış bu blogda. Sizin çalışma grubunu inceliyordum . O sırada buldum. Ben biraz yeteneksizim programlamada. Ama klavye arayüzü ve diğerleri gerçekten başarılı. Umarım karşılığını bulur bu emekler.
YanıtlaSilDerya(son sınıf VLSI adayı:)
ya ne alakasi var!
YanıtlaSil