İçindekiler:

Evrensel Kapatma Anahtarı Modeli: 10 Adım
Evrensel Kapatma Anahtarı Modeli: 10 Adım

Video: Evrensel Kapatma Anahtarı Modeli: 10 Adım

Video: Evrensel Kapatma Anahtarı Modeli: 10 Adım
Video: Talkback Kapatma, Talkback Nasıl Kapatılır, Görme Engelliler Modu Kapatma 🇹🇷 2024, Kasım
Anonim
Evrensel Kapatma Anahtarı Modeli
Evrensel Kapatma Anahtarı Modeli

Uyumadan önce evinizdeki tüm ışıkların kapalı olup olmadığını kontrol etmekten bıktınız mı? Her ışığı aynı anda sorunsuz bir şekilde kapatabilmeyi ister miydiniz? Güç ve zamandan tasarruf etmek için teorik olarak tüm evi bir anda kapatabilecek bir sistem oluşturmaya karar verdik.

Birkaç LED ve bir basys 3 devre kartı kullanarak bu konseptin bir kanıtını modelledik ve bir düğmeye basarak tüm LED'leri devre dışı bırakacak bir tasarım oluşturduk. Bu model, verilen VHDL dosyalarında daha karmaşık kablolama ve modifikasyonlar gerektirse de, gerçek bir ev aydınlatma sistemine de uygulanabilir.

Adım 1: Verilen VHDL Dosyalarını İçe Aktarın

Modelimizin doğru çalışması için Basys 3 kartına talimatlarını veren yazılımı indirmeniz gerekecek.

Öncelikle vhdl dosyalarını donanıma uygulamak için bir sentez aracı indirmeniz gerekecek. Kodun tamamının herhangi bir değişikliğe gerek kalmadan tasarımımızı tamamen kopyalayacağından emin olmak istiyorsanız Vivado 2016.2'yi kullanmanızı öneririz. Vivado'yu kurduktan sonra bir proje oluşturabilir ve kaynak dosyalarımızı indirebilirsiniz. Bunları projenize kaynak olarak ekleyin, kısıtlamalar dosyasını da eklemeyi unutmayın!

Ardından, kaynak dosyaların her birinin ne yaptığını açıklayacağız. Yalnızca cihazın fiziksel yapısına geçmek istiyorsanız 2'den 6'ya kadar olan adımları atlayın.

2. Adım: VHDL Üst Modülün Dağılımı

VHDL Üst Modülün Dağılımı
VHDL Üst Modülün Dağılımı
VHDL Üst Modülün Dağılımı
VHDL Üst Modülün Dağılımı

Projenin en üst modülü, tüm bireysel bileşen modüllerini kullanılan donanıma bağlayan şeydir. Gördüğünüz gibi üstte bileşen olarak tanımlanan killSwitch ve buzzerControl modülleri var.

Alt kısım, bu modüllerin birbirine nasıl bağlandığını belirtir. Dört LED'i karta bağladık ve onları dev0'dan dev3'e kadar killSwitch modülleriyle ilişkilendirdik. Dört adet killSwitch modülümüz var çünkü bağlı her bir LED'in durumunu yönetmek için bir modüle ihtiyacımız var. Bu modüllerin her biri, üst modül tanımında oluşturduğumuz saat ve düğme sinyalinin yanı sıra ilgili giriş anahtarı ve çıkış cihazı sinyallerini kullanır.

Alttaki buzzer kontrol modülü, evrensel kapatma düğmesine basıldığında sesli uyarıyı etkinleştirir. Gördüğünüz gibi buzzer kontrol modülü saat ve buton sinyalini giriş olarak geçmektedir. Ayrıca buna göre kontrol etmek için fiziksel buzzer çıkış pininden geçirilir.

3. Adım: VHDL Kill Switch Modülünün Dağılımı

VHDL Kill Switch Modülünün Dağılımı
VHDL Kill Switch Modülünün Dağılımı
VHDL Kill Switch Modülünün Dağılımı
VHDL Kill Switch Modülünün Dağılımı

Kill Switch evrensel kapatma düğmesidir ve modül öncelikle onu diğer devre elemanlarına bağlamakla ilgilenir, böylece basıldığında tüm ışıklar söner.

Üst modül fiziksel donanımın yazılıma bağlanmasını yönetirken, killSwitch modülü her cihazın ana mantığını yönetir. Modül, saat sinyali, evrensel kapatma düğmesi ve cihaz geçiş anahtarı için girişler alır. Karşılığında bağlı olduğu cihaz pininin durumunu kontrol eder.

Kodun mimari bölümünde bellek depolamak için dFlipFlop modülüne bağımlı olduğunu görüyoruz. Ayrıca, mantık ifadelerimizi uygulamanın yanı sıra flip flop'u bağlamak için kullanılacak dört sinyal bildirdiğimizi de görebilirsiniz. Kodun davranış bölümünde dFlipFlop modülünün bir örneğini oluşturduk ve I/O sinyallerimizi portlara atadık.

Buradan, mantığımızın ana kısmı, invertState ve isDevOn için sinyal değerlerinde yatmaktadır. Cihaz için mantıksal temelimiz şu şekildedir: "Anahtar her açıldığında ışık, açık/kapalı durumunu tersine çevirir. Düğmeye her basıldığında ve LED şu anda açık olduğunda, LED durumunu tersine çevirir. " Bu iki ifadeden, LED'in durumunun anahtarın XOR'si ve bizim bellek elemanımız olması gerektiğini tahmin edebiliriz. Bu şekilde, her ikisinde de bir değişiklik LED'i tersine çevirir. Bu, isDevOn sinyalinde uygulanmış olarak görülebilir. Bellek öğesi için LED açık durumu, invertState sinyalimiz tarafından işlenir. LED yanıyorsa ve butona basılırsa, hafıza elemanımız güncellenir ve durumunu tersine çevirir. Bu daha sonra LED'in durumunu da tersine çevirir.

Adım 4: VHDL Flip Flop Modülünün Dağılımı

VHDL Flip Flop Modülünün Dağılımı
VHDL Flip Flop Modülünün Dağılımı

Tasarımımızla ilgili bir sorun, kapatma düğmesini kullandıktan sonra, daha önce açık olan ışıkların açık konuma geri dönmesi için iki kez çevrilmesi gerekebilmesiydi. Bu, zamanla insanlar için oldukça rahatsızlık verici olacaktır. Tasarımımıza bilgi depolayabilen bir devre elemanı olan "Flip Flop"u dahil ederek bu sıkıntıdan kurtulmayı başardık. Artık sistem, bir ışık anahtarının daha önce açık olup olmadığını hatırlar, böylece tekrar çevrilirse ilk konumundan bağımsız olarak açılır.

VHDL kodu, devre tasarımımızda bir bileşen olarak Flip Flop oluşturmak için if ve else ifadelerini kullanır. Saat sinyali düşükten yüksek duruma geçtiğinde, ampul açıkken ve kapatma düğmesine basıldığında, flip flop çıkışının girişin üzerine yazmasını sağlar. Girişin üzerine yazıldığında, flip flop ters çevrilir.

Adım 5: VHDL Piezo Buzzer Modülünün Dağılımı

VHDL Piezo Buzzer Modülünün Dağılımı
VHDL Piezo Buzzer Modülünün Dağılımı
VHDL Piezo Buzzer Modülünün Dağılımı
VHDL Piezo Buzzer Modülünün Dağılımı

Bu dosya, donanım tasarımı söz konusu olduğunda biraz gereksizdir, ancak en üst modül ve kısıtlama dosyalarının sorunsuz çalışmasını sağlamak için gereklidir. Piezo buzzer'ı kullanmamayı seçerseniz, bu dosyayı indirin, ancak buzzer'ı Basys 3 kartına takmayın.

Piezo buzzer, devre dışı bırakma düğmesine basıldığında, kullanıcıya düğmeye basıldığına dair işitsel geri bildirim sağlayacak iki notalı bir ton çalacaktır. Bunu bir süreç yapısında bir dizi if ifadesi aracılığıyla VHDL'de davranışsal olarak uyguladık. Kaç saat değişikliğinin gerçekleştiğini takip etmek için bir tamsayı değeri oluşturarak başladık. İşlem başladığında, program ilk yarım saniyeyi (0 ila 50 milyon saat tik) harcar ve 440 hertz'de bir A notu verir. Bu, piezo buzzer sinyalinin bir modulo işleviyle 227272 saat tiklerinin her hatta katlarında bir ters çevrilmesiyle gerçekleştirilir. Bu sayı, kartın saat sinyalinin (100 MHz) istenen frekansa (400 Hz) bölünmesinin sonucudur. İkinci yarım saniye boyunca (50 ila 100 milyon saat tıklaması) kart, öncekiyle aynı yöntemle 349.2 hertz'de bir F notu verir. Bir saniye sonra program saat değişkenini daha fazla artırmaz ve piezo buzzer'dan herhangi bir çıktı vermeyi durdurur. Evrensel kapatma düğmesine tekrar basılması, bu sayıyı 0'a sıfırlayarak gürültü döngüsünü yeniden başlatır.

Adım 6: VHDL Kısıtlamaları Dosyasının Dağılımı

Kısıtlamalar dosyası, Vivado'ya Basys 3 kartında hangi cihazları kullandığımızı söyler. Ayrıca kodumuzdaki cihazlara verdiğimiz isimleri de Vivado'ya veriyor. Vivado'nun mantıksal öğelerimizi fiziksel donanıma nasıl bağlayacağını bilmesi için bu bilgilere ihtiyacı var. Kısıtlamalar dosyası, büyük miktarda yorumlanmış (kullanılmayan) kod içerir. Bu kod satırları, kartta kullanmadığımız cihazlara atıfta bulunur.

Kullandığımız cihazlar, kart üzerinde V17, V16, W16 ve W1 etiketli dört giriş anahtarı içerir. Ayrıca U18 etiketli evrensel kapatma düğmesini kullanıyoruz. Dört bağlı LED'imizin çıkış pinleri JB4, JB10, JC4 ve JC10'dur. Piezzo buzzerimiz için JA9 çıkış pinini kullanıyoruz.

Üst modül dökümünde belirttiğimiz gibi eğer karta ilave LED'ler veya başka cihazlar eklemek istiyorsanız sw ve dev sinyallerinin kapsamını arttırmanız, daha fazla killSwitch modülü eklemeniz ve bunları birbirine bağlamanız gerekir. Daha sonra bu değişken adlarını kısıtlama dosyası aracılığıyla cihaz donanımına bağlamanız gerekir. Bu, kullanmak istediğiniz pinlerle ilişkili kod satırlarının yorumunu kaldırarak (yeniden etkinleştirerek) ve ardından üst modülde ilişkili değişkeninin adını ekleyerek yapılabilir. Bunun için uygun sözdizimi kullandığımız cihazlardan kopyalanabilir. Kart üzerinde kullanmak istediğiniz pinlerin isimlerini öğrenmek için buradaki Baasys 3 başvuru kılavuzuna bakın.

Adım 7: Basys 3'ü Oluşturma

Basys 3'ü Oluşturma
Basys 3'ü Oluşturma
Basys 3'ü Oluşturma
Basys 3'ü Oluşturma

LED'lerinizi Basys 3'ün doğru G/Ç bağlantı noktalarına takmanız gerekecektir. Doğru bağlantı noktalarının ne olduğunu belirlemek için verilen resimleri takip edin, çünkü yanlış bağlantı noktasına bir LED takarsanız yanmayacaktır. Piezo buzzer'ı takmayı seçtiyseniz, bunu da doğru G/Ç bağlantı noktalarına bağlamanız gerekecektir.

Kart hazır olduğunda, USB kablosuyla bilgisayarınıza takın.

Adım 8: VHDL Dosyalarını Basys 3'e Uygulama

VHDL Dosyalarını Basys 3'e Uygulama
VHDL Dosyalarını Basys 3'e Uygulama
VHDL Dosyalarını Basys 3'e Uygulama
VHDL Dosyalarını Basys 3'e Uygulama

Artık panonuz hazır ve kodunuz bittiğine göre, nihayet modeli bir araya getirebilirsiniz.

Projenizi Vivado'da kurduktan sonra, kodu panoya yüklenmeden önce derlemek için "Bit Akışı Oluştur" düğmesini tıklamalısınız. Şu anda bir hata mesajı alırsanız, kodunuzun bizimkiyle tam olarak eşleşip eşleşmediğini iki kez kontrol etmeniz gerekir. Tam olarak dediğimde, kullanılan noktalı virgüllere veya parantez türlerine kadar demek istiyorum. Bit akışınız başarıyla yazıldıktan sonra, Vivado'daki donanım yöneticisine gidin ve "Hedefi Aç" düğmesine tıklayın, ardından hemen ardından "Cihazı Programla"ya tıklayın. Basys 3 anakartınız artık tamamen işlevsel olmalıdır.

9. Adım: Basys 3 Board'u Kullanma

Basys 3 Anakartını Kullanma
Basys 3 Anakartını Kullanma

Artık Basys 3 Board çalışır durumda olduğuna ve modelimizi temsil etmek üzere programlandığına göre, onu nasıl kullanacağınızı bilmelisiniz.

En sağdaki dört anahtarın her biri LED'lerden birini kontrol eder, onları itmek LED'in açılmasına veya kapanmasına neden olur. LED etkinleştirilmezse, doğru G/Ç bağlantı noktasına takılı olup olmadığınızı ve ilk etapta LED'inizin çalışır durumda olup olmadığını kontrol edin.

Tüm LED'leri bir kerede devre dışı bırakmak istediğinizde, yukarıda gösterilen beş buton setinde ortadaki butona basmalısınız.

Adım 10: Gösteriş

Model, arkadaşlarınızın ve ailenizin önünde gösterebileceğiniz küçük, zarif bir yenilik olarak hizmet ediyor. LED'leri ışıklarınıza giden kablolarla değiştirirseniz, teorik olarak evrensel kapatma anahtarını ev elektrik sisteminize uygulamak için de kullanılabilir. Mümkün olsa da, yine de buna karşı tavsiyede bulunmak zorunda kalacağız. Bir elektrikçinin yardımı olmadan yeniden kablolamaya çalışırsanız, kendinize veya evinize ciddi zarar verme potansiyeli vardır.

Önerilen: