İçindekiler:

Basys 3 Çalar Saat: 9 Adım
Basys 3 Çalar Saat: 9 Adım

Video: Basys 3 Çalar Saat: 9 Adım

Video: Basys 3 Çalar Saat: 9 Adım
Video: Kurtlar Vadisi - 9.Bölüm | FULL HD YENİ 2024, Ekim
Anonim
Basys 3 Çalar Saat
Basys 3 Çalar Saat

Projemiz Basys 3 FPGA kartı, Arduino ve hoparlör sürücü kartını kullanarak bir çalar saat oluşturuyor. Kullanıcı, Basys 3 üzerindeki 11 giriş anahtarını kullanarak geçerli saati karta girebilir ve kart üzerindeki orta düğmeyi kullanarak değeri kilitleyebilir. Kullanıcı daha sonra aynı anahtarları kullanarak alarm saatini girebilir ancak alarm saatini kilitlemek için sol düğmeye basabilir. Yanlış saat girilirse reset düğmesine (üst düğme) basılabilir ve mevcut saat ve alarm saati 00:00'a ayarlanır. Kullanıcı daha sonra en soldaki anahtarı kullanarak saati başlatabilir ve sonraki anahtarı kullanarak alarmı açabilir. Alarm açıldığında, saat ve ayarlanan alarm zamanı eşleştiğinde çalar saat bir ses çıkarır.

Adım 1: Kara Kutu Şeması

Kara Kutu Şeması
Kara Kutu Şeması
Kara Kutu Şeması
Kara Kutu Şeması

Programımızda ihtiyaç duyulan girdi ve çıktıları görselleştirmek için bir kara kutu diyagramı çizerek projemize başladık. Programımız için aşağıdaki girdiler 5-bit giriş (Hour_in) gibi 24 saatlik süreyi belirtmek için başlatılmıştır, 6-bit (Min_in) girişi 60 dakikaya kadar görüntülemek için, bir reset (Rst_b) butonu ile kullanıcıya izin verir. zaman girişlerini değiştirin, alarm girişini yükleyen 1 bitlik bir giriş (alm_en), etkinleştirildiğinde alarm saatini kapatmak için 1 bitlik bir giriş (alarm_sw), sayacın ne zaman çalıştığını kontrol eden 1 bitlik bir giriş (e_sec) saniye çalışacaktır, geçerli saati ayarlayan 1 bitlik bir giriş (Led_btn) ve son olarak Basys 3 kartı tarafından görüntülenen zamanı kontrol eden 1 bitlik bir giriş (clk). Çıkışlar, sinyali Arduino'ya gönderen (alm_on), Basys 3'te giriş zamanını gösteren sseg çıkışı ve yedi segmentli ekranda girişlerin nerede görüntüleneceğini kontrol eden anot çıkışıdır.

2. Adım: Yavaş Saat

Yavaş Saat
Yavaş Saat

Yavaş saat veya clock_div2 dosyası, frekansı 2 hz olan bir saat oluşturur. Bu saati saniye sayacımıza beslersek saniye değeri her saniye bir artacaktır. Yavaş saat, saniyede bir kez düşükten yükseğe değişen güvenilir bir saat sinyali oluşturmak için kullanılır.

Adım 3: Sayaç

Tezgah
Tezgah
Tezgah
Tezgah

Bileşen Sayacı (dakika ve saniye):

Dakika ve saniyelerin temel işlevi sayaç olmalarıdır. Dakika sayacı, girişlerden (Min_in) gelen sinyal olan girişi (Vin) alır ve girilen istenen girişe ulaşana kadar sayar. Saniyeler, yedi segmentte görüntülenemediğinden yalnızca anahtarın (e_Sec) girişini alır ve anahtar yüksek '1' olduğunda arka planda sayılır. Her ikisi de orada (Qout) değerini verir ve daha sonra (data) içinde saklanır, bu da onu bağlantı dosyasında yapılan SSEG'ye gönderir. Ayrıca dakika ve saniyeler 59 değerine ulaştığında sıfırlanır ve dakika/saat arttırmak için çıktısı '1' olur. Ayrıca girişlerine bir reset(rst_b) ile eşlenebilir.

Adım 4: Sayaç Saati

Sayaç Saati
Sayaç Saati
Sayaç Saati
Sayaç Saati

Bileşen Sayaç Saati

Benzer şekilde, dakika ve saniyelerin bileşen sayacına benzer şekilde, saat bileşeni, dosya girişini (Hour_in) bağlayan bir sinyal olan (Vin) gibi girişleri alır ve aynı şekilde dakika ve saniyelerle bağlantılı çıkışlara sahiptir. Saatin sayma değeri 24 00'a ulaştığında 00 00'a sıfırlanır.

Adım 5: Alarm

Alarm
Alarm
Alarm
Alarm
Alarm
Alarm
Alarm
Alarm

Alarm.vhd dosyası, dijital verileri depolayabilen depolama aygıtları olan d-flip-flop'lardan oluşur. Alarm dosyası, alarmın etkinleştirileceği zamanı saklamak için kullanılır. Saat (5 bit giriş) ve dakika (6 bit giriş) verilerini saklamak için alarm dosyamızda 11 d-flip-flop'u damgalamalıyız. Bunu yapmak için önce d-flip-flopların işleyişini yöneten mantığı içe aktarmalı ve bileşenleri eşlemeliyiz. 11 d-flip-flop'un her biri, girişlerden bir bit veri depolayacak ve verilerin alarm dosyasının çıkışlarına eşlenmesine izin verecektir. D-flip-floplar veri depoladığından, giriş anahtarları değiştirilse bile verileri daha sonraki bir zamanda kullanabiliriz.

6. Adım: Evrensel Yedi Segment Ekran Sürücüsü

Evrensel Yedi Segment Ekran Sürücüsü
Evrensel Yedi Segment Ekran Sürücüsü
Evrensel Yedi Segment Ekran Sürücüsü
Evrensel Yedi Segment Ekran Sürücüsü
Evrensel Yedi Segment Ekran Sürücüsü
Evrensel Yedi Segment Ekran Sürücüsü

Evrensel yedi segmentli ekran sürücüsü, saat ve saat setinden girdileri alır ve bunları karttaki yedi segmentli ekrana verebilir. Sürücü, kart üzerinde aynı anda iki ayrı sayım çıktısı alabilir. Bu fonksiyonu hem saat hem de dakikayı ayrı ayrı görüntülemek için kullandık. Yedi segmentli ekran aynı anda yalnızca bir numarayı etkinleştirebilir, bu nedenle sseg dosyası, zamanın tüm numaralarını aynı anda görüntülemek için çoğullamayı kullanmalıdır. Kartların saat sinyali, çoğullama için doğru zamanı korumak için sseg'e beslenir. Dosyaya girdileri yedi segmentli ekrana çıktılanabilecek bir forma dönüştürmek için ikiliden ikiliye kodlanmış bir ondalık kodlayıcı gereklidir. sseg dosyasının son çıktısı yedi segmentli ekrana eşlenir ve ekranda doğru zaman gösterilir.

7. Adım: Dosyayı Bağlayın

Bağlantı Dosyası
Bağlantı Dosyası
Bağlantı Dosyası
Bağlantı Dosyası
Bağlantı Dosyası
Bağlantı Dosyası

Bağlantı dosyası, programın diğer tüm yönlerini birbirine bağlar ve sinyalleri doğru konumlarına eşler. Her bileşen dosyaya getirilir ve somutlaştırılır. Sinyaller, verileri bir bileşenden diğerine aktarmak için kullanılır. Bağlantı noktası eşlemesi, yukarıda listelenen kara kutu şemasını takip edecektir. Bağlantı dosyası ayrıca alarmın ne zaman etkinleştirildiğini yöneten mantığı da içerir. Projenin çoğu zaten bu noktada bitmiş olacak. Kalan iş, her sinyali uygun konuma yönlendirmektir.

Adım 8: Arduino

Arduino
Arduino
Arduino
Arduino

Arduino, hoparlörü etkinleştirmek ve hoparlör aracılığıyla çalınan notanın tonunu ve süresini kontrol etmek için kullanılır. Arduino, Basys 3 kartından dijital bir sinyal okur. Bu sinyal yüksek olduğunda, arduino, alarmın tonunu ve süresini kontrol eden bir PWM sinyali verir. Arduino'dan gelen çıkış sinyali, hoparlörün sesini artıran bir hoparlör sürücü kartının giriş sinyaline bağlanır. Arduino bu işlemi saniyede birçok kez tekrarlayarak çok hızlı yapar.

Adım 9: Kablo Yönlendirme

Kablo Yönlendirme
Kablo Yönlendirme

Arduino ve Basys 3 kartı, kartlar arasında sinyal aktarımı için fiziksel olarak bağlı olmalıdır. Kabloya ilk kablo, Basys 3'ün JA PMOD'unun topraklama piminden arduino'nun topraklama pimine kadar olacaktır. Ardından, Basys 3'ün JA PMOD'unun 1 numaralı pininden arduino'nun 7 numaralı dijital pinine bir kablo bağlayın. Ardından, arduinodan gelen iki topraklama pimini hoparlör sürücüsünün topraklama pimlerine bağlayın. Ardından, arduino'nun 3.3 V çıkışını hoparlör sürücüsünün Vcc pinine bağlayın. Ardından, arduino'nun dijital pin 9'unu hoparlör sürücüsünün In pinine bağlayın.

Önerilen: