Mündəricat:

LİGH T S: 5 addım
LİGH T S: 5 addım

Video: LİGH T S: 5 addım

Video: LİGH T S: 5 addım
Video: 5 БЫСТРЫХ и ЛЕГКИХ причесок.Красивые прически пошагово 2024, Noyabr
Anonim
LİGH TS
LİGH TS

Bu son layihənin məqsədi davamlılığa yönələcək və rəqəmsal dizayn konsepsiyalarını həyata keçirəcək bir şey yaratmaq idi və bunu etmək üçün vhdl istifadə edərək Basys 3 Board (Artix-7 35T seriyası) üçün hazırlanmış ölçeklenebilir bir enerji qənaət sistemi dizayn etmək qərarına gəldim.). Ölçüləndir, çünki istənilən sayda sensorlar bir otağa yerləşdirilə bilər və bu sistemlərin hər hansı bir sayı bir bina və ya evin ətrafına yerləşdirilə bilər. Bu sistemin edəcəyi şey, nəzəri olaraq ticarət binalarında minlərlə dollara qənaət etmək və aktiv və passiv idarə olunan işıqlar, hərəkət detektorları, yeddi seqmentli displeylərdə göstərilən taymerlər və nəzarət açarları. Bu nümunə, üç hərəkət detektoru, bir master açarı, bir manuel/normal keçid, dörd yeddi seqmentli displey və sistemin idarə etdiyi tək bir işığı olan tək bir sistemdən bəhs edir.

Məsələn, seçilmiş bir otaqda ətrafa bir neçə hərəkət detektoru yerləşdiriləcəkdi (bu nümunədə üç dizayn var) və hər biri hərəkəti algıladıqda (1), yoxsa (0) siqnal göndərərdi. Hərəkət detektorlarından ən azı biri hərəkəti algılarsa, işıqlar hələ də yanmırsa yanır və artıq yanarsa da yanır. İstənilən vaxt bütün hərəkət detektorları heç bir şey algılamaz, bir taymer müəyyən bir müddət üçün geri saymağa başlayır (kodla tənzimlənə bilər) və taymer geri sayarkən işıqlar yanır. Taymer geri saymağı bitirdikdə, taymer dayanır və işıqlar sönür. Taymer geri sayarkən ən azı bir hərəkət detektoru hərəkəti algılarsa, taymer dayanır və sıfırlanır. Və ən azı bir hərəkət detektoru işıqlar sönərkən hərəkəti algılarsa, işıqlar dərhal açılır.

Bu sistemin iki rejimi var, onlardan biri yuxarıda göstərildiyi kimi taymerlə, ikincisi isə işıqları əllə idarə edən bir açarın olduğu yerdə (sensorlara məhəl qoymadan). İstifadəçiyə, ümumiyyətlə, daha çox enerji qənaət edəcəyini düşündüyündən asılı olaraq hansı rejimi istifadə etmək istədiyini seçməyə imkan verən bir əsas keçid var. Məsələn Koridor kimi bir otaq passiv taymer rejimindən faydalana bilər- istifadəçilər insanların nə vaxt keçəcəyini bilmirlər, amma hər dəfə girəndə və çıxanda işıqları yandırıb söndürmək bir narahatlıq olardı, halbuki belə bir otaq. tək istifadəçisi olan bir yataq otağı əllə idarə olunsa daha yaxşı olar. Usta keçid, yataq otağında yaşayan şəxsin uzun müddət tərk etməsi, usta keçidinin söndürülməsi və timer rejimi enerjinin daha səmərəli qənaət edilməsi üçün işləyəcəyi kimi hallarda faydalı olardı.

Beləliklə, bu sistemdə iki dövlət maşını var, biri əsas dövlət maşını, digəri isə geri sayım sayğacı üçün. Əsas dövlət maşınında aşağıdakı kimi təyin olunan beş vəziyyət var: 1. "işıqlar yanır, hərəkət aşkarlandı" (id = 000), 2. "işıqlar yanır, heç bir hərəkət aşkarlanmır" (id = 001), 3. "işıqlar sönür, hərəkət yoxdur aşkar edildi "(id = 010), 4." əl ilə açıldı "(id = 011) və 5." əl ilə söndürüldü "(id = 100). Bu əsas dövlət maşınının dörd girişi var: əsas keçid (ms), manuel/normal keçid (ns), ən azı bir keçid hərəkəti algıladığında yüksək olan, əks halda aşağı (orx) olan bir siqnal və Taymeri bitirdikdən sonra yüksəkdir, əks halda isə aşağıdır (td). Əsas dövlət maşınının iki çıxışı var: işıqlar (işıqlar) və geri sayım taymeri (taymer) və ya (t) nə vaxt açılacağını göstərən bir siqnal (hər ikisi bir -birini əvəz edir).

İkinci dövlət maşını, geri sayım sayğacının 12 vəziyyəti var: onlardan yeddi seqmentin göstərdiyi nömrə ilə əlaqəli idləri var- "seg 10" (id = 1010), "seg 9" (id = 1001), […], "Seg 2" (id = 0010), "seg 1" (id = 0001) və digər iki dövlətin hər ikisi də taymerin söndürüldüyünü əks etdirən sıfır göstərir- buna görə ilk boş "boş 1" var (id = 1111)) və ikinci boş "boş 2" (id = 0000). Geri sayım sayğacının bir girişi var: taymer (t) və üç çıxış: ikili olaraq dörd bit (bin) və taymerin bitdiyini göstərən bir siqnal ilə göstərilən nömrə (td).

Addım 1: Qara qutu diaqramı

Qara qutu diaqramı
Qara qutu diaqramı

Bu, bütün sistemin necə işləməli olduğuna dair bir baxışdır və qara qutu diaqramı ilə təsvir edilmişdir.

  • Saat əsas dövlət maşını və yeddi seqmentli dekoderin işlənməsi üçün istifadə olunur; aşağı sayğac üçün daha yavaş bir saat lazımdır, buna görə də saat girişini alan və aşağı sayğac üçün daha yavaş bir saat çıxaran bir saat bölücü modulu var.
  • Sarıcıdakı aralıq dəyişən (orx) hərəkət sensorlarına bağlıdır və sensorlardan ən az biri bir şey aşkar edərsə yüksək olar, əks halda aşağı olar; bunun üçün boole tənliyi yalnız orx = s (2) və ya s (1) və ya s (0) dir.
  • Əsas fsm, girişlərdən (orx, ms, ns, td) asılı olaraq sistemin hansı ümumi vəziyyətdə olduğunu idarə edir və istifadə etdiyi iki siqnal (timer və işıqlar) ilə sadələşdirilmiş şəkildə göstərilmiş cari vəziyyətini (sm) göstərir.

    • (taymer) aşağı fsm girişi olaraq göndərilən və əsas fsm -in cari vəziyyəti ilə idarə olunan bir sarım siqnaldır. Taymeri nə vaxt açacağını göstərir.
    • (işıqlar), ledi idarə etmək üçün istifadə olunan və əsas fsm -in cari vəziyyəti ilə idarə olunan bir sarğı siqnaldır.
  • Aşağı sayğac fsm, girişdən (taymerdən) asılı olaraq yeddi seqmentin nəyi göstərdiyini idarə edir və (td və bin) üçün istifadə etdiyi iki siqnal ilə sadələşdirilmiş şəkildə göstərildiyi (sd) cari vəziyyətini çıxarır.

    • (td), giriş olaraq əsas fsm -ə göndərilən və aşağı sayğac fsm -in cari vəziyyəti ilə idarə olunan bir sarğı siqnaldır. Taymerin nə vaxt bitdiyini göstərən bir geribildirim siqnalı kimi fəaliyyət göstərir.
    • (bin), dörd bit sıfır ("0000" və bin) ilə birləşdirilmiş dörd bitlik sarmal siqnaldır və birləşdirilmiş səkkiz bit (q), səkkiz bitlik bir sarma siqnalı göndərilir və bu da yeddiyə göndərilir. (ALU_VAL) altında seqment kod çözücü.
  • Yeddi seqmentli modul Polylearnda olduğu kimidir; onun əsas girişləri (ALU_VAL) üçün 8 bitlik bir rəqəm (bin) alır və dörd fərqli yeddi seqmentli displeydə göstərmək üçün (SEGMENTS) sarma siqnalı (seg) və (DISP_EN) üçün (disp_en) sarılır.

    • İki və ya daha çox yeddi seqment ekranı eyni vaxtda fərqli rəqəmləri göstərə bilmədiyi üçün, hər bir ssegin ayrı -ayrılıqda açılması üçün uyğun rəqəmi göstərən və dörd velosipeddə hərəkət etmək üçün bir saat lazımdır. ssegs bir anda görünür.
    • (işarə və etibarlı) bu proqram boyunca sabitdir, buna görə (işarəsi) daimi olaraq aşağı, (etibarlı) daimi olaraq yüksək olaraq təyin olunur.
    • (ALU_VAL), ikili olaraq yeddi seqmentli ekranda göstəriləcək sayını ifadə edən bir giriş olaraq (q) sarma siqnalını alır.
    • Çıxış (SEGMENTS) səkkiz bitlik bir sarma siqnalına (seg) və (DISP_EN) dörd bitlik sarma siqnalına (disp_en) göndərilir.
  • Diaqramda açıq şəkildə göstərilməyən, lakin iki dövlət maşını üçün alt modul olaraq lazım olan və əyalətlərin keçidinə sinxron şəkildə kömək edən bir D flip flop modulu da var.

    • (3) kodlaşdırma üçün 2^(3) = 8> 5 vəziyyət olduğundan əsas fsm üçün lazımdır.
    • (4) kodlama üçün 2^4 = 16> 12 vəziyyət olduğundan aşağı sayğac fsm üçün lazımdır

Addım 2: Dövlət Maşınları

Dövlət Maşınları
Dövlət Maşınları

İki dövlət maşınını düzgün dizayn etmək üçün ayrı -ayrı dövlətlər, mümkün olan müxtəlif girişlərə əsaslanaraq, çıxışları və keçdiyi vəziyyətlə birlikdə aydın şəkildə müəyyən edilməlidir.

Əsas fsm dövlətləri:

"İşıqlar yanır, hərəkət aşkarlandı" (id = 000)

İşıqlar yanır, hərəkət detektorlarından ən azı biri hərəkəti algılar, buna görə orx yüksək olmalıdır və ms açılır.

  • Çıxışlar: işıqlar = 1 və taymer = 0
  • Ms = 1 və orx = 1 olduqda bu vəziyyətdə qalır.
  • Ms = 1 və orx = 0 olarsa "işıqlar yanır, heç bir hərəkət aşkarlanmır" vəziyyətinə keçir.
  • Ms = 0 və ns = 1 olarsa "əl ilə açılır" vəziyyətinə keçir.
  • Ms = 0 və ns = 0 olarsa "əl ilə söndürüldü" vəziyyətinə keçir.

"İşıqlar yanır, heç bir hərəkət aşkarlanmır" (id = 001)

İşıqlar yanır, heç bir hərəkət detektorundan heç bir hərəkət aşkar edilmir, buna görə orx aşağı olmalıdır və ms açılır. Həm də bu vəziyyətin əvvəlində, yüksək olaraq təyin olunan taymer geri sayma fsm -ə geri saymağa başlamağı, geri saymağa davam edir və geri sayma fsm bu fsm -ə saymanın bitdiyini söylədikdə geri saymağı dayandırır.

  • Çıxışlar: işıqlar = 1 və taymer = 1.
  • Ms = 1 və orx = 0 və td (taymer tamamlandı) = 0 olduqda bu vəziyyətdə qalır.
  • Ms = 1 və orx = 1 olarsa "işıqlar yanır, hərəkət algılanır" vəziyyətinə keçir.
  • Ms = 1 və orx = 0 və td = 1 olarsa "işıqlar sönür, heç bir hərəkət aşkarlanmır" vəziyyətinə keçir.
  • Ms = 0 və ns = 1 olarsa "əl ilə açılır" vəziyyətinə keçir.
  • Ms = 0 və ns = 0 olduqda "əl ilə söndürüldü" vəziyyətinə keçir.

"İşıqlar sönür, heç bir hərəkət aşkarlanmır" (id = 010)

İşıqlar sönür, heç bir hərəkət sensöründən heç bir hərəkət aşkar edilmir və taymer geri saymağı bitirdi, buna görə orx aşağı olmalıdır, ms açılır və td sönür.

  • Çıxışlar: işıqlar = 0 və taymer = 0.
  • Ms = 1 və orx = 0 olduqda bu vəziyyətdə qalır.
  • Ms = 1 və orx = 1 olarsa "işıqlar yanır, hərəkət algılanır" vəziyyətinə keçir.
  • Ms = 0 və ns = 1 olarsa "əl ilə açılır" vəziyyətinə keçir.
  • Ms = 0 və ns = 0 olarsa "əl ilə söndürüldü" vəziyyətinə keçir.

"Əl ilə açıldı" (id = 011)

İşıqlar yanır, hərəkət detektorları əlaqəsizdir, buna görə ms söndürülür və ns açılır.

  • Çıxışlar: işıqlar = 1 və taymer = 0.
  • Ms = 0 və ns = 1 olduqda bu vəziyyətdə qalır.
  • Ms = 0 və ns = 0 olarsa "əl ilə söndürüldü" vəziyyətinə keçir.
  • "İşıqlar sönür, ms = 1 olarsa heç bir hərəkət aşkarlanmır" vəziyyətinə keçir.

"Əl ilə söndürüldü" (id = 100)

İşıqlar sönür, hərəkət detektorları əhəmiyyətsizdir, buna görə ms sönür və ns söndürülür.

  • Çıxışlar: işıqlar = 0 və taymer = 0.
  • Ms = 0 və ns = 0 olduqda bu vəziyyətdə qalır.
  • Ms = 0 və ns = 1 olarsa "əl ilə açılır" vəziyyətinə keçir.
  • "İşıqlar sönür, ms = 1 olarsa heç bir hərəkət aşkarlanmır" vəziyyətinə keçir.

Aşağı sayğacda deyilir:

"Seg 10" (id = 1010)

Yeddi seqmentdə 10 göstərilir.

  • Çıxışlar: bin = "1010" və td = 0.
  • Taymer = 1 olduqda "seg 9" vəziyyətinə keçir.
  • Taymer = 0 olarsa "boş 2" vəziyyətinə keçir.

"Seg 9" (id = 1001)

Yeddi seqmentdə 9 göstərilir.

  • Çıxışlar: bin = "1001" və td = 0.
  • Taymer = 1 olduqda "seg 8" vəziyyətinə keçir.
  • Taymer = 0 olarsa "boş 2" vəziyyətinə keçir.

("Seg 8" və "Seg 2" ə qədər olan dövlətlər "Seg 10" və "Seq 9" ilə eyni modeli izlədikləri üçün buraxılmır və izahat üçün lazım deyil)

"Seg 1" (id = 0001)

Yeddi seqmentli ekran 1 -i göstərir.

  • Çıxışlar: bin = “0001” və td = 0.
  • Növbəti yüksələn kənarda "boş 2" vəziyyətinə keçir (girişə ehtiyac yoxdur).

"Boş 2" (id = 1111)

Yeddi seqment ekranında 0 göstərilir. İkinci boş vəziyyətin məqsədi təhlükəsizlik üçün td = 1 olduqda ayrı bir vəziyyətin olmasıdır.

  • Çıxışlar: bin = "1111" və td = 1.
  • Növbəti yüksələn kənarda "boş 1" vəziyyətinə keçir (girişə ehtiyac yoxdur).

"Boş 1" (id = 0000)

Yeddi seqmentli ekranda 0 göstərilir. Bu, əsas dövlət maşınının "işıqları sönür, heç bir hərəkət aşkarlanmadığı" vəziyyətdə qaldığı vəziyyətdir.

  • Çıxışlar: bin = “0000” və td = 0.
  • Taymer = 1 olduqda "seg 10" vəziyyətinə keçir.

Addım 3: Dövlət Maşın Həqiqət Cədvəlləri, Həyəcan Tənlikləri və Çıxış Tənlikləri

Dövlət Maşın Həqiqət Cədvəlləri, Həyəcan Tənlikləri və Çıxış Tənlikləri
Dövlət Maşın Həqiqət Cədvəlləri, Həyəcan Tənlikləri və Çıxış Tənlikləri
Dövlət Maşın Həqiqət Cədvəlləri, Həyəcan Tənlikləri və Çıxış Tənlikləri
Dövlət Maşın Həqiqət Cədvəlləri, Həyəcan Tənlikləri və Çıxış Tənlikləri
Dövlət Maşın Həqiqət Cədvəlləri, Həyəcan Tənlikləri və Çıxış Tənlikləri
Dövlət Maşın Həqiqət Cədvəlləri, Həyəcan Tənlikləri və Çıxış Tənlikləri
Dövlət Maşın Həqiqət Cədvəlləri, Həyəcan Tənlikləri və Çıxış Tənlikləri
Dövlət Maşın Həqiqət Cədvəlləri, Həyəcan Tənlikləri və Çıxış Tənlikləri

Növbəti addım, hər iki fsm üçün iki dövlət maşını üçün həqiqət cədvəlləri və həyəcan tənlikləri və çıxış tənlikləri yaratmaqdır. Hər fsm həyəcan tənliyi üçün, cari vəziyyət və giriş siqnalları baxımından hər bir sonrakı vəziyyət üçün kodlaşdırılmış bit üçün tənliklər olmalıdır. Hər fsm çıxış tənliyi üçün hər bir çıxış siqnalı üçün mövcud vəziyyət baxımından tənliklər olmalıdır. Dörd tənlik dəsti təsvir olunan həqiqət cədvəllərindən götürülə bilər. (qn hər bir dövlət maşını üçün növbəti dövlət kodlu bitdir və q cari vəziyyətdir)

(000) q (2) 'q (1)' q (0) 'və q (3)' q (2) 'q (1)' q (0) 'ekvivalenti (0000)

(məs. (0101) q (3) 'q (2) q (1)' q (0) və (110) q (2) q (1) q (0) ')

Əsas fsm üçün həyəcan tənlikləri:

  • qn (2) = (ms) '(ns)
  • qn (1) = (ms) '(ns)' + (ms) (orx) '[(td) (001) + (010)] + (ms) [(011) + (100)]
  • qn (0) = (ms) '(ns)' + (ms) (orx) '[(000) + (td)' (001)]

Əsas fsm üçün çıxış tənlikləri:

  • işıqlar = (000) + (001) + (100)
  • taymer = (001)

Aşağı sayğac fsm üçün həyəcan tənlikləri:

  • qn (3) = t [(0000) + (1010) + (1001) + (0001)]
  • qn (2) = t [(1000) + (0111) + (0110) + (0101) + (0001)]
  • qn (1) = t [(0000) + (1000) + (0111) + (0100) + (0011) + (0001)]
  • qn (0) = t [(1010) + (1000) + (0110) + (0100) + (0010) + (0001)]

Aşağı sayğac fsm üçün çıxış tənlikləri:

  • td = (1111)
  • bin (3) = (1010) + (1001) + (1000) + (1111) + (0000)
  • bin (2) = (0111) + (0110) + (0101) + (0100) + (1111) + (0000)
  • bin (1) = (1010) + (0111) + (0110) + (0011) + (0010) + (1111) + (0000)
  • bin (0) = (1001) + (0111) + (0101) + (0011) + (0001) + (1111) + (0000)

Addım 4: Sarıcı, Submodullar və Məhdudlaşdırma

Artıq 1 -ci addımda izah edildiyi kimi, bu modullar bu layihə üçün lazımdır və hamısı "final_proj.vhd" başlıqlı modul ilə birlikdə bağlanmışdır. "Basys3_Master.xdc" adlı məhdudiyyət faylı, bütün sarmalayıcı girişləri və çıxışları açarlara, yeddi seqmentə və Basys 3 lövhəsindəki I/O portlarına bağlamaq üçün istifadə olunur. Əsas keçid, tellərin işlədiyi tərəfə ən yaxın olan lövhədəki açar, ən yaxın ikinci/normal/əl açarı və üç hərəkət sensörünü təmsil edən üç açar, normal/əl açarının dərhal yanındakı üç açardır.. Bütün kodlar (boole tənlikləri, modul bəyannamələri və s.) Artıq sənədlərdə yazılmışdır, buna görə də bu işi yerinə yetirmək üçün başqa heç nə yazmaq lazım deyil.

Addım 5: LED üçün I/O Portları

LED üçün I/O portları
LED üçün I/O portları
LED üçün I/O portları
LED üçün I/O portları

Bu layihə üçün son addım (işıqların) həqiqətən açılıb sönməməsini göstərmək üçün bir LED istifadə etməkdir. Kablolama iki şəkildə göstərilmişdir. Ledi yandırmamaq üçün (ən az 330 ohm) bir sıra rezistorun olduğundan əmin olun və qırmızı telin göstərildiyi kimi ledin uzun pininin basys lövhəsindəki eyni qadın başlığına qoşulduğundan əmin olun (yuxarı ən sağda) və daha qısa pin göstərilir qara tellə eyni qadın başlığı (yuxarı, soldan ikinci) yerə bağlıdır.

Tövsiyə: