Click Here for the English Version
Bir süredir programlanabilir mantık aygıtlarına merak salmış durumdayım, ufak projelerle uğraşarak kendimi geliştirmeye çalışıyorum. Konuya yabancı olanlar için http://www.pyroelectro.com/edu/fpga/ ve https://www.coursera.org/learn/digital-systems/ başlangıç için güzel kaynaklar gibi duruyor.
Kısa bir süre önce HC-SR04 ultrasonik mesafe sensörünü FPGA ile kullanmayı denedim ve biraz uğraş sonunda bunu başardım. Şimdi bu ufak çalışmayı sizlerle paylaşıyorum, programlanabilir mantık aygıtları hakkında kısa bir tanıtım gibi düşünebilirsiniz.
Ben “Arow CYC1000” FPGA kartını kullanıyorum. Kendisinin üzerinde “10CL025YU256C8G” FPGA entegresi bulunuyor. Bu entegre Intel(Altera) Cyclone 10 serisine ait ve üzerinde 24 624 mantık elamanı bulunuyor. FPGA entegresinin giriş/çıkış gerilimi 3.3V ancak HC-SR04 sensörü 5V seviyesinde çalışıyor, bu sorunu çözmek için çift yönlü lojik gerilim dönüştürücü kullanıyorum. Ayrıca bir de saate ihtiyacımız var, CYC1000 üzerindeki 12MHz osilatörü de saat olarak kullanıyorum.
HC-SR04 bir mesafe ölçüm sensörü, ses gönderiyor ve yansımasını dinliyor, üzerinde TRIG ve ECHO pinleri var. TRIG pinine 10 mikrosaniye genişliğinde sinyal gönderildikten sonra çalışmaya başlıyor, ortama 40KHz frekansında ses dalgaları yayıyor. TRIG sinyali verildikten birkaç yüz mikrosaniye sonra ECHO sinyali yükseliyor ve gönderilen ses dalgası herhangi bir cisimden yansıyıp geri dönünce, ECHO sinyalinin genişliği sesin ortamdaki seyahat süresine eşit olacak şekilde ECHO sinyali düşüyor. ECHO sinyalinin genişliğini sayarak sesin ortamdaki seyahat süresini elde ediyoruz. Sesin mikrosaniye seyahat süresini 58'e bölünce de sesin yansıdığı yüzeyin sensöre uzaklığını santimetre biriminde bulmuş oluyoruz. Her TRIG sinyali ile bir ölçüm alabiliyoruz, sensörün datasheetinde çalıştırma sıklığının 60 milisaniyeyi geçmemesi önerilmiş ancak ben yaptığım testlerde güvenli aralığı 250 milisaniye ve üstü olarak belirledim.
CYC1000 üzerinde 8 adet LED var, her 5cm için bir LED yanıyor ya da sönüyor.
Sistemin tasarımını VHDL ile yaptım, VHDL kodunu buradan indirebilirsiniz.
İstek olursa satır satır açıklama da yükleyeceğim ancak oldukça giriş seviyesinde bir tasarım olduğu için sistemin kolayca anlaşılabileceğini düşünüyorum.

Çok güvenilir çalışmış. Ardunio ile çok yapmıştık ama böylesini pek görmemiştim.