Mündəricat:

4 Addımlı Rəqəmsal Sequencer: 19 Addım (Şəkillərlə birlikdə)
4 Addımlı Rəqəmsal Sequencer: 19 Addım (Şəkillərlə birlikdə)

Video: 4 Addımlı Rəqəmsal Sequencer: 19 Addım (Şəkillərlə birlikdə)

Video: 4 Addımlı Rəqəmsal Sequencer: 19 Addım (Şəkillərlə birlikdə)
Video: Rəqəmsal bilik yarışması 4 | Riyaziyyat suallarının izahı | Nail Sadigov 2024, Iyul
Anonim
4 addımlı rəqəmsal ardıcıllıq
4 addımlı rəqəmsal ardıcıllıq
4 addımlı rəqəmsal ardıcıllıq
4 addımlı rəqəmsal ardıcıllıq

CPE 133, Cal Poly San Luis Obispo

Layihə Yaradıcıları: Jayson Johnston və Bjorn Nelson

Müasir musiqi sənayesində ən çox istifadə edilən "alətlərdən" biri rəqəmsal sintezatordur. Hip-hopdan popa və hətta ölkəyə qədər hər musiqi növü studiyadakı rəqəmsal sintezatordan istifadə edərək musiqilərini canlandırmaq üçün lazım olan səsləri və səsləri yaradır. Bu təlimatda, Basys 3 FPGA lövhəsi ilə çox sadə bir sintezator yaradacağıq.

Sintezator, dəqiqədə sabit sayda vuruşda dörd seçilmiş dörddəbir notu ifa edə biləcək. İstifadəçilər, hər dörddə bir notu musiqi sahəsinə təyin etmək üçün açarlardan istifadə edəcəklər. Bu layihə üçün, çıxışı lövhədən çıxarmaq və analoq siqnalına çevirmək üçün 4 bitlik rəqəmsaldan analoqa çeviricidən (DAC) istifadə edirik. Daha sonra DAC -dan çıxarılan musiqi kompüterimizin standart bir dinamikinə veriləcək. On altı ayrı sahə mümkündür. Sintezatorumuzu orta C (261.6 Hz) və B4 (493.9 Hz) arasına düşən 12 notdan ibarət bir oktava ilə məhdudlaşdıracağıq. İstifadəçinin eyni anda birdən çox qeyd təyin etmə, habelə sahə açarlarının heç birinin yuxarıya doğru sürüşməməsi halında təyinat vuraraq istirahət təyin etmə imkanı olacaq. Hər not seçildikdə və çalınarkən, hərf notu 7 seqmentli ekranda göstərilir. Həm də lövhədəki üç düymədən birini istifadə edəcəyik: biri musiqini çalmaq və durdurmaq, biri sintezatoru sıfırlamaq və "seçim" rejiminə keçirmək, üçüncüsü isə seçim rejimində hər bir nota meydança vermək.

İstifadəçi qeyd seçimlərindən məmnun olduqdan sonra və səsləndirmə düyməsini basdıqdan sonra sintezator hər bir notu ardıcıl olaraq istifadəçi durdurana və ya seçənə qədər çalacaq.

Burada tələb olunan avadanlıqların siyahısı:

  • Vivado (və ya hər hansı bir VHDL iş yeri)
  • Basys 3 və ya oxşar FPGA lövhəsi
  • Rəqəmsaldan analoqa çevirici (minimum 4 bit)
  • Qulaqlıq yuvası olan dinamik
  • Tel telləri

Addım 1: Rəqəmsal Sequencer -in İstifadəçi Əməliyyatı

Rəqəmsal Sekanserin İstifadəçi Əməliyyatı
Rəqəmsal Sekanserin İstifadəçi Əməliyyatı

Aşağıdakı addımlar rəqəmsal ardıcıllığı işə salmaqdır. Rəqəmsal sequencer, 261.6 Hz -dən 493.9 Hz -ə qədər olan 12 fərqli sahənin (C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B) çalınmasını dəstəkləyir.

1. Lövhəni seçim rejiminə keçirmək üçün sol düyməni basın. Bu rejimdə olduqda, ən sol 4 açar (13 -dən 16 -a qədər açar) hər biri fərqli bir sahə dəyərini saxlamaq üçün istifadə ediləcək.

2. Seçim etmək üçün sol açarlardan birini çevirin və sonra istədiyiniz pitch seçmək üçün ən sağdakı 4 açarı (1 -dən 4 -ə qədər açar) istifadə edin. Sağ açarların müəyyən bir birləşməsi ilə əlaqəli meydança yeddi seqmentli ekranda göstəriləcək və sağ açarlar yeni birləşməyə keçdikdə ekran yeni əlaqəli sahəyə yenilənəcək. İstirahət, heç vaxt sol açarlardan birinə meydança təyin etməməklə və ya nota ekranda 0 olaraq göstərilən meydança təyin etməklə təyin edilə bilər. İstədiyiniz meydança tapıldıqdan və ekranda göründükdən sonra, nota xüsusi bir atama təyin etmək üçün alt təyin düyməsini basın.

3. Qalan sol açarların hər birini ayrı -ayrılıqda çevirərək, sağ düymələri ilə müvafiq sahəni seçərək və nota not təyin etmək üçün aşağı düyməni basaraq qalan üç qeyd üçün 2 -ci addımı təkrarlayın. Birdən çox sol açarı eyni anda yuxarıya çevirərək eyni meydança təyin edilə bilər.

4. İndi not meydançalarının hamısı təyin olunduqdan sonra rəqəmsal sequencer oynamağa hazırdır. Dinamikdəki notları çalmaq üçün musiqini çalmağa başlamaq üçün sağdakı çal/durdur düyməsini basmaq kifayətdir. Çalma ardıcıllığının qaydası, soldan sağa, sol açarlarla əlaqəli meydançaları əks etdirir. Qeydlər 1, 2, 3, 4, 1, 2… sıralarında dəqiqədə müəyyən sayda vuruşlarla çalınacaq. Ekranda dinamiklər musiqini çalarkən çalınan not göstəriləcək. Musiqinin çalınmasını dayandırmaq üçün sadəcə sağ düyməni basın, sonra musiqi çalınmayacaq və ekranda fasilə simvolu görünəcək. Sağ düyməni yenidən basmaq oynatmaya davam edəcək.

Addım 2: Texniki məlumatlar

Texniki detallar
Texniki detallar

Sintezatorumuz bir çox fərqli rəqəmsal komponentdən istifadə edir. Sonlu dövlət maşınları, qeydlər, çoxlayıcılar, saat ayırıcılar və daha çoxu daxildir. Sintezatorumuzu qurmaq üçün 10 unikal modul faylı istifadə etdik. Hər bir modulu komponent etmək əvəzinə, modul faylları funksiyasına görə parçaladıq. Nəticədə əksər modullar birdən çox komponentdən ibarətdir. Diqqət yetirin yuxarıdakı şəkil üst dizaynımızda bir -birinə bağlı olan hər bir bloku göstərir.

Giriş və çıxışları təsvir edərək, komponentlərini parçalayaraq və ümumi dizayndakı məqsədini izah edərək hər bir modulu müzakirə edəcəyik. Layihədə istifadə olunan hər VHDL kod faylını ehtiva edən təlimatın altına bir ZIP faylı daxil edilmişdir.

Girişlər

  • Clk (yerli saat siqnalı)
  • PP (oynat/durdur)
  • Sel (sintezatoru seçim rejiminə keçir)
  • Təyin et (meydançaya bir addım at)
  • Addım (mövqe qeydləri)
  • Freq (istədiyiniz meydançanı yaradan açarlar)

Çıxışlar

  • Anod (7 seqmentli anodlar)
  • Katod (7 seqmentli katodlar)
  • DAC (DAC-ı idarə edən 4 bit)

Addım 3: Texniki Təfərrüatlar

Texniki detallar
Texniki detallar

Addım 4: 7 seqmentli Saat Bölücü

7 seqmentli Saat Bölücü
7 seqmentli Saat Bölücü

Sintezatorumuz, layihəmizdə fərqli bir məqsədə xidmət edən siqnallar istehsal edən üç saat ayırıcıdan istifadə edir. Bir saat bölücü, yerli bir saat siqnalı alır və orijinal saat siqnalından daha az bir tezliyə malik dəyişdirilmiş bir siqnal istehsal edir. Basys 3 -ün yerli saatı 100 MHz -dir. Saat ayırıcılarımızın istifadə etdiyi tezlik budur. Fərqli bir yerli saat tezliyi ilə fərqli bir FPGA lövhəsi istifadə edirsinizsə, kodu dəyişdirməli ola bilərsiniz.

7 seqmentli saat bölücü, seg_display faylını idarə edən bir siqnal istehsal edir. Bu faylın necə işlədiyini bölməsinə daxil olanda daha ətraflı izah edəcəyik. Əslində, bu saat bölücü, ekrandakı anodlar və katodlar arasında keçid üçün istifadə ediləcək 240 Hz siqnalı istehsal edir. Siqnal 240 Hz -dir, çünki insan gözünün işıq yoxluğunu tanımadığı tezlik 60 Hz -dir. İki rəqəmdən istifadə edirik, buna görə bu tezliyi ikiqat artıraraq hər rəqəm 60 Hz -də salınacaq. Daha sonra 240 Hz əldə etməyi iki qat artırırıq, çünki sistem yalnız siqnal yüksək olduqda dəyişir, aşağı düşəndə deyil.

Buna nail olmaq üçün bölücü yerli 100 MHz siqnalını alır və hər yüksələn kənarda sayır. Sayğac 416667 -ə çatdıqda, çıxış aşağıdan yuxarıya və ya əksinə gedəcək.

Girişlər

Clk (yerli saat siqnalı)

Çıxışlar

Clk_7seg (seg_display)

Komponentlər

  • D qeydiyyatı
  • MUX
  • İnverter
  • Adder

Addım 5: Dəqiqə Başına Beats Saat Bölücü

Dəqiqə Başına Döyüş Saat Bölücü
Dəqiqə Başına Döyüş Saat Bölücü

BPM saat bölücü oxşar şəkildə işləyir. Bu bölücü, oyun vəziyyətində səslər çıxarılarkən dörd addım arasında keçid edən saat tezliyini istehsal edir. 100 BPM -də qeydlər arasında keçid etmək qərarına gəldik. 100 BPM -də hər not saniyənin 3/5 hissəsində çalınacaq. Yaranan siqnal 1.67 Hz tezliyinə malik olacaq.

Bu tezlikdə bir siqnal çıxarmaq üçün yenə bir sayma sistemindən istifadə etdik, lakin bu dəfə say 60 milyon idi. Hər dəfə sayğac 60 milyona çatanda çıxış siqnalı yüksək və ya aşağı dəyişəcəkdi.

Girişlər

Clk (yerli saat tezliyi)

Çıxışlar

Clk_BPM (çıxış_FSM -ə)

Komponentlər

  • D qeydiyyatı
  • MUX
  • İnverter
  • Adder

Addım 6: Saat Bölücünü işə salın

Pitch Saat Bölücü
Pitch Saat Bölücü

Pitch Clock Divider, saat bölücülərimizin ən böyüyüdür. Bu bölücü, sintezatorumuzun oynaya biləcəyi 12 fərqli nota uyğun 12 fərqli siqnal verir. Musiqi nəzəriyyəsi haqqında əsas biliklərdən istifadə edərək, bir bitin və ya avtobusun musiqi notlarının tezliyinə uyğun bir sürətlə tərpənə biləcəyini anladıq. İstifadə etdiyimiz tezlikləri görmək üçün bura baxın. Dördüncü oktav sahədən istifadə etdik.

Eyni sayma sistemi burada istifadə olunur. Saydığımız xüsusi dəyərlər üçün Clk_div_pitches etiketli fayla baxın.

Girişlər

Clk (yerli saat tezliyi)

Çıxışlar

C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B (output_select üçün)

Komponentlər

  • D qeydiyyatı
  • MUX
  • İnverter
  • Adder

Addım 7: Dövlət Maşını Çal/Duraklat/Seç

Dövlət Maşını Çal/Durdur/Seç
Dövlət Maşını Çal/Durdur/Seç

Layihəmizdə iki sonlu dövlət maşını (FSM) var. FSM, məhdud sayda vəziyyətdən yalnız bir vəziyyətdə mövcud ola bilən bir məntiq cihazıdır. FSM istifadə edərək rəqəmsal bir dövrə girişlərin birləşməsinə əsaslanaraq yeni bir vəziyyətə keçə bilər. Giriş məntiqindən istifadə edərək, FSM -in vəziyyəti saatın ucu qalxanda dəyişəcək. Vəziyyətdən və dövrə girişlərindən yalnız FSM müəyyən bir vəziyyətdə olduqda mövcud olan çıxışları verən çıxış məntiqi yarada bilərsiniz.

PPS dövlət maşını, dövrəmizdəki ilk FSM -dir. Bu FSM -də üç dövlət var; Çal, Durdur və Seçim rejimi. Fərqli vəziyyətlərdə hərəkət etmək üçün PP və Seçim düymələrindən istifadə etdik. Vəziyyətlər arasında keçidlərin necə baş verdiyini görmək üçün yuxarıdakı vəziyyət diaqramına baxın. Bu FSM keçidini yerli 100 MHz saatın yüksələn kənarında etdik, belə ki, düymələrdən birinə basıldıqda, hətta çox qısa bir müddət ərzində də maşının keçməməsi mümkün olmazdı. Hazırkı vəziyyət (P_state) bu moduldan çıxan yeganə çıxışdır.

Girişlər

  • Clk (yerli saat tezliyi)
  • Sel (sol düymə)
  • PP (sağ düymə)

Çıxışlar

P_state (indiki vəziyyət, output_FSM, note_assign, seg_dsiplay, final_select)

Komponentlər

  • MUX
  • D qeydiyyatı

Addım 8: Dövlət Maşını Çal/Duraklat/Seç

Dövlət Maşını Çal/Durdur/Seç
Dövlət Maşını Çal/Durdur/Seç

Addım 9: FSM çıxışı

Çıxış FSM
Çıxış FSM

Bu, əvvəlki hissədə istinad edilən ikinci FSM -dir. Bu FSM digərindən fərqli bir funksiya yerinə yetirir, amma bunun əsası əslində eynidir.

FSM çıxışı yalnız ilk FSM -dən indiki vəziyyət "01" (oyun vəziyyəti) olduqda işləyir. Əslində, bu modul üçün imkan verir. Vəziyyət "01" dirsə, FSM BPM saat siqnalının yüksələn kənarındakı vəziyyətlər arasında keçəcək. Bunu edirik, çünki output_FSM seçilmiş meydança üçün hansı ikili nömrənin output_select və seg_display modullarına göndəriləcəyini nəzarət edir. FSM, not təyinetmə modulundan gələn 16 bitlik bir girişə malikdir və bu, sonradan əhatə olunacaq. Output_FSM üçün "00" vəziyyətində, modul təyin edilən ilk qeyd üçün "xxxx" çıxaracaq. Sonra "01" də, ikinci nota "yyyy" çıxaracaq və ilk nota keçməzdən əvvəl hər bir not üçün belə davam edəcək. Yuxarıdakı vəziyyət diaqramına baxın.

Bu FSM birincisindən fərqlənir, çünki vəziyyətlər arasında keçidi idarə etmək üçün heç bir giriş məntiqi yoxdur. Bunun əvəzinə, FSM yalnız ilk FSM -dən olan vəziyyət "01" olduqda işləyəcək və sonra bu FSM yalnız saat siqnalının yüksələn kənarında olan dövlətlər arasında keçəcək. Başqa bir fərq, bu modulun çıxış məntiqinə sahib olmasıdır, yəni indiki vəziyyəti çıxarmır, bu vəziyyətdə meydançanın ikili nömrəsini çıxarır.

Girişlər

  • Clk_BPM (Saat ayırıcıdan BPM saat siqnalı)
  • FSM1_state (PPS FSM -dən PS)
  • Pitch_in (note_assign'dan səslər)

Çıxışlar

Pitch_out (bir anda bir çıxış, çıxış_seçmək və seg_display üçün)

Komponentlər

  • MUX
  • D qeydiyyatı

Addım 10: FSM çıxışı

Çıxış FSM
Çıxış FSM

Addım 11: Qeyd et

Qeyd Təyin et
Qeyd Təyin et

Qeyd təyin etmə modulu, mövqe notuna və ya addıma bir addım atmaqdan məsuldur. Bu modul əslində olduqca sadədir. Əvvəlcə dövrənin "seçim" vəziyyətində olub olmadığını və bir addım keçidinin (ən solda) yüksək olub olmadığını yoxlayır. Əgər bu doğrudursa və təyinat düyməsinə basıldıqda, modulun çıxışı tezlik açarları ilə təmsil olunan ikili rəqəmə bərabər olacaq (ən sağda).

Başlanğıcda, həqiqətən, pitch clock siqnallarından birini çıxışa saxlayacaq bir modul hazırlamağa çalışmışdıq, ancaq giriş saat siqnallarına uyğun olaraq çıxışın dəyişməsi ilə bağlı problemlər yaşadıq. Bu, son dizaynda bir dəfədən çox istifadə edilən yeganə moduldur. Hər addımda bununla əlaqəli bir note_assign modulu var və buna görə modulun hər bir nümunəsi Step avtobusunun bir hissəsini alır.

Girişlər

  • P_state (PPS FSM -dən hazırkı vəziyyət)
  • Sel (sol düymə)
  • Keçid (bir addımlı keçid)
  • Freq (meydanda ən sağdakı açarlar)
  • Təyin et (alt düymə, qeyd təyin edir)

Çıxışlar

Pitch (ikili nömrə, output_FSM -ə qədər)

Komponentlər

  • MUX
  • D yenidən qeydiyyatdan keçin

Addım 12: Çıxış seçin

Çıxış seçin
Çıxış seçin

Çıxış seçimi, bir sahə üçün ikili nömrəni götürməkdən və onu müvafiq saat siqnalına bağlamaqdan məsuldur. Ölçüsünə baxmayaraq, bu da nisbətən sadə bir moduldur. Output_select, mahiyyətcə ikili nömrəni müəyyən bir saat siqnalına açan bir ikili kod çözücüdür. Əslində çıxışın bir saat tezliyinə təyin edilməsi, note_assign modulu ilə müqayisədə burada daha yaxşı işləyirdi, çünki bu modulun hamısı nəzarət girişini təmsil edən ikili rəqəmi olan saat siqnallarını MUX etmək idi.

Qəribə yönləndirmə üçün üzr istəyirik, Vivado clk_div_pitches faylı üçün siqnalları əlifba sırası ilə təşkil etdi, lakin bu fayl üçün onları ikili ədədin artması ilə təşkil etdi və meydançaların fərqli qaydada olmasına səbəb oldu. Həmçinin unutmayın ki, output_FSM -dən gələn ikili nömrə "0000" və ya "1100" -dən böyük bir şeydirsə, MUX düz '0' siqnalı ilə göndərilir.

Giriş

  • Pitch (output_FSM -dən);
  • C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B (pitch clock siqnalları)

Çıxış

Səs (seçilmiş saat siqnalına uyğun olan bir bit, square_wave üçün)

Komponentlər

MUX

Addım 13: Kare Dalğa Gen

Kvadrat Dalğa Gen
Kvadrat Dalğa Gen

Modul square_wave, lövhədən DAC -a çıxarılan kvadrat dalğası üçün bir generatordur. Əvvəlki faylın ton siqnalını istifadə edərək, bu square_wave, Tonun yüksələn kənarındakı "0000" və "1111" arasındakı 4 bit nömrəni ters çevirir. Ton xüsusi bir səs tezliyidir, buna görə square_wave, output_FSM başqa bir vəziyyətə keçərkən fərqli bir tezliyə malik bir dalğa yaradır. Bu moduldan 4 bitlik çıxış, fin_sel moduluna gedir, burada məntiq bu avtobusun PPS FSM-dən vəziyyətə görə çıxıb-çıxmayacağını diktə edir.

Bu kvadrat dalğa generatoruna alternativ bir sinus dalğası yaradır. Bu, çox güman ki, daha yaxşı bir son ton yaratsa da, həyata keçirilməsi xeyli çətindir, buna görə də yalnız bir kvadrat dalğası yaratmağa qərar verdik.

Girişlər

Ton (output_select -dən salınan bit)

Çıxışlar

DAC_input (eyni tezlikdə dəyişən salınan 4 bitlik avtobus)

Komponentlər

  • İnverter
  • D qeydiyyatı

Addım 14: 7 seqmentli ekran

7 seqmentli ekran
7 seqmentli ekran

Seg_display modulu, lövhəmizdəki 7 seqmentli ekranı idarə edir. Modul daxilində iki proses baş verir. Birinci proses, "seçmə" vəziyyətində olduqda və ya "oynatma" rejimində olduqda Pitch -in kodunu açır. "Pauza" rejimində modul deşifr edərək fasilə simvolunu göstərir. VHDL koduna baxdıqda, ikili dekoderin girişi iki fərqli siqnala, cathode1 və cathode2 olaraq açdığını görə bilərsiniz. Cathode1, göstəriləcək sahəyə uyğun hərfi, katod2 isə düz simvolu (b) təmsil edir. Bunun səbəbi seg_display modulu tərəfindən edilən ikinci proseslə əlaqədardır.

Bir basys3 lövhəsində, seqment ekranında ümumi katodlar var. Anodlar hansı rəqəmin açıldığını idarə edərkən, katodlar hansı seqmentlərin aktiv olduğunu nəzarət edir. Ekranda ümumi katodlar olduğu üçün bir anda yalnız bir seqment dəsti göstərə biləcəyiniz deməkdir. Bu, bu layihə üçün bir problem yaradır, çünki ilk rəqəmdə bir hərfi və lazım olduqda düz simvolu eyni vaxtda göstərmək istəyirik. İndi 7seg saat siqnalını xatırlayırsınız? Bu problemi həll etmək üçün anodları və katotları 7seg saat siqnalında irəli -geri dəyişirik. Saat siqnalı 240 Hz olduğundan və iki rəqəm istifadə etdiyimiz üçün hər rəqəm 60 Hz -də salınacaq. İnsan gözünə görə, rəqəmlər heç də salınmır.

Həmçinin basys3 lövhə ekranında mənfi məntiqdən istifadə edildiyini unutmayın. Bu, bir anod və ya katodun '0' olaraq təyin edildiyi təqdirdə, bu rəqəmin və ya seqmentin açıq olacağını və əksinə olacağını bildirir.

Girişlər

  • Pitch (qeyd üçün ikili nömrə, oyun vəziyyətində istifadə olunur)
  • Freq (tezlik açarları, seçim vəziyyətində istifadə olunur)
  • P_state (PPS FSM -dən hazırkı vəziyyət)
  • Clk_240Hz (Clk_div_7seg saat siqnalı, ikiqat 120, çünki yalnız yüksələn kənardan istifadə edirik)

Çıxışlar

  • Katod (ekrandakı seqmentləri idarə edən avtobus, son çıxış)
  • Anod (ekrandakı rəqəmləri idarə edən avtobus, son çıxış)

Komponentlər

  • Mandal
  • MUX
  • D qeydiyyatı

Addım 15: Son Seçim

Son Seçim
Son Seçim

Son seçim bu layihədə istifadə olunan son moduldur. Başqa bir sadə modul, bu modul DAC -a gedəcək son çıxışı idarə edir. "Seçim" və ya "fasilə" vəziyyətində olduqda modul statik bir "0000" çıxaracaq ki, dinamiklərdən heç bir musiqi çalınmasın. "Çalma" vəziyyətində, modul, square_wave tərəfindən təyin olunan salınan 4 biti çıxaracaq.

Girişlər

  • P_state (PPS FSM -dən hazırkı vəziyyət)
  • DAC_input (square_wave-dən salınan 4 bit)

Çıxışlar

DAC (oyun vəziyyətində DAC_ girişinə bərabərdir, son çıxış)

Komponentlər

MUX

Addım 16: Xarici Cihazlar: DAC

Xarici Cihazlar: DAC
Xarici Cihazlar: DAC

Rəqəmsaldan analoqa çevirici (DAC) diskret bir siqnal alır və onu davamlı bir siqnala çevirir. DAC -da dörd bit var və toplama gücləndiricisindən hazırlanmışdır. Təchizat və geribildirim döngəsindəki müqavimət nisbətlərindən istifadə edərək, hər bir şöbənin "cəmlənməsi" ilə 16 fərqli səviyyədə çıxış edən bir sistem yarada bildik. Bit0, ən yüksək filialı, ən az çəki daşıyır və daha yüksək müqavimət göstərdiyinə görə yüksək olduqda ən kiçik potensiala qatqı təmin edir. Budaqlardan aşağı düşdükcə çəki artır. Bit girişlərindən istifadə edərək ikili saymaq və sonra geri çəkmək lazım olsaydı, çıxış gərginliyi bir addım müdrik sinus dalğası kimi görünərdi. DAC-a giriş 4 bitlik siqnalın ötürülməsi üçün lövhədəki PMOD-lərdən birinə qoşuldu.

DAC əvvəlcə Elektrik Mühəndisliyi sinfi üçün yığılmışdı və mağazadan alınmamış bizim tərəfimizdən hazırlanmış və lehimlənmişdi. Yuxarıda, çap dövrə lövhəsi yaratmaq üçün dizayn faylının bir görüntüsüdür.

Addım 17: Xarici Cihazlar: Dinamik

Xarici Cihazlar: Dinamik
Xarici Cihazlar: Dinamik

Bu layihə üçün çox gözəl dinamiklər almaq istəməyəcəksiniz. Anladığınız kimi, səs olduqca sadədir. Gedib Best Buy -dan 8 dollarlıq kompüter hoparlörləri aldıq. Qulaqlıq yuvası olan hər şey yaxşı işləyir. Monoton yaxşı işləyir. Qulaqlıqlardan da istifadə edə bilərsiniz, ancaq onları partlata bilərsiniz!

DAC -ın çıxışını dinamiklərə bağlamaq üçün keçid kabellərindən istifadə etdik, sonra çıxış kabelini qulaqlıq yuvasının ucuna və topraklama kabelini bazaya bağladıq. Kabelləri yerində tutmaq üçün elektrik lentindən istifadə etməyə çalışdıq, amma çox müdaxilə yaratdı. Fərqli bir lent üslubunu sınamaq bu problemi həll edə bilər.

Dinamiklərimiz üçün onları ən yüksək səviyyəyə çevirdik və layiqli bir səs -küy aldıq.

Və bu, bir FPGA lövhəsindən rəqəmsal sekanser yaratmaq üçün son addımdır! Bütün VHDL kodlarımızı yükləmək və ardıcıllığı hərəkətdə görmək üçün növbəti iki hissəyə keçin.

Addım 18: Video Demo

Bu video, açarların 4 fərqli meydançaya təyin edilməsi prosesi və dinamiklərin müvafiq qeydləri çalması da daxil olmaqla iş layihəsinin son versiyasını göstərir.

Addım 19: VHDL Kodu

Sekanser qurarkən istifadə olunan məhdudiyyət və sim faylları da daxil olmaqla bütün layihənin kodu budur. Qeyd edək ki, istifadə olunmamış dizayn sənədləri memarlıqda belə deyir.

Tövsiyə: