Orodha ya maudhui:

4 Hatua Sequencer Digital: Hatua 19 (na Picha)
4 Hatua Sequencer Digital: Hatua 19 (na Picha)

Video: 4 Hatua Sequencer Digital: Hatua 19 (na Picha)

Video: 4 Hatua Sequencer Digital: Hatua 19 (na Picha)
Video: Шок!!! ДУШИ МЕРТВЕЦОВ В ЗАТОЧЕНИИ У ДЕМОНА В ЭТОМ СТРАШНОМ ДОМЕ / HERE ARE THE SOULS OF THE DEAD 2024, Julai
Anonim
4 Hatua Sequencer ya Dijiti
4 Hatua Sequencer ya Dijiti
4 Hatua Sequencer ya Dijiti
4 Hatua Sequencer ya Dijiti

CPE 133, Cal Poly San Luis Obispo

Waundaji wa Mradi: Jayson Johnston na Bjorn Nelson

Katika tasnia ya muziki ya leo, mojawapo ya "vyombo" vya kawaida hutumiwa ni synthesizer ya dijiti. Kila aina ya muziki, kutoka kwa hip-hop hadi pop na hata nchi, hutumia kisanisi cha dijiti katika studio kuunda milio na sauti wanazohitaji kuleta muziki wao. Katika mafunzo haya, tutatengeneza synthesizer rahisi sana na bodi ya Basys 3 FPGA.

Synthesizer itaweza kucheza noti nne za robo zilizochaguliwa kwa idadi ya mara kwa mara ya beats kwa dakika. Watumiaji watatumia swichi kupeana kila noti ya robo kwa uwanja wa muziki. Kwa mradi huu tunatumia dijiti 4 hadi kibadilishaji cha analog (DAC) kuchukua pato kutoka kwa bodi na kuibadilisha kuwa ishara ya analog. Pato kutoka kwa DAC litapewa msemaji wa kawaida wa kompyuta, na kuunda muziki wetu. Viwanja kumi na sita vinawezekana. Tutazuia synthesizer yetu kwa octave moja ya noti 12, ambazo zinaanguka kati ya katikati C (261.6 Hz) na B4 (493.9 Hz). Mtumiaji pia atakuwa na chaguo la kupeana vidokezo vingi kwa wakati mmoja, na vile vile kupeana kupumzika kwa kupiga kugawa wakati hakuna swichi yoyote ya lami iliyohamia juu. Kama kila daftari inachaguliwa na kuchezwa, barua ya barua inaonyeshwa kwenye onyesho la sehemu 7. Tutatumia pia vifungo vitatu kwenye ubao, moja ya kucheza na kusitisha muziki, moja ya kuweka upya synthesizer na kuiweka katika hali ya "uteuzi", na ya tatu kupeana kila nukuu lami wakati wa hali ya uteuzi.

Mara tu mtumiaji anaporidhika na chaguo lao la daftari, na baada ya kubonyeza kitufe cha kucheza, kiunganishi kitacheza kila dokezo mfululizo mfululizo hadi mtumiaji atakapobonyeza kutulia au kuchagua.

Hapa kuna orodha ya vifaa vinavyohitajika:

  • Vivado (au nafasi yoyote ya kazi ya VHDL)
  • Basys 3 au bodi inayofanana ya FPGA
  • Ubadilishaji wa dijiti kwa analog (min. 4-bits)
  • Spika na kipaza sauti
  • Waya inaongoza

Hatua ya 1: Uendeshaji wa Mtumiaji wa Sequencer ya dijiti

Uendeshaji wa Mtumiaji wa Sequencer ya Dijiti
Uendeshaji wa Mtumiaji wa Sequencer ya Dijiti

Hatua zifuatazo ni kutumia mfuatano wa dijiti. Mfuatano wa dijiti unasaidia uchezaji wa viwanja 12 tofauti (C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B), ambayo ni kati ya 261.6 Hz hadi 493.9 Hz.

1. Bonyeza kitufe cha kushoto ili kuweka ubao katika hali ya uteuzi. Wakati katika hali hii, swichi 4 za kushoto (swichi 13 hadi 16) zitatumika kuhifadhi thamani tofauti ya lami.

2. Ili kufanya uteuzi, badilisha moja ya swichi za kushoto, kisha utumie swichi 4 za kulia (swichi 1 hadi 4) kuchagua lami inayotaka. Lami inayohusishwa na mchanganyiko maalum wa swichi za kulia itaonyeshwa kwenye onyesho la sehemu saba, na onyesho litasasisha kwa lami mpya inayohusiana wakati wowote swichi za kulia zikihamishiwa kwenye mchanganyiko mpya. Pumziko linaweza kupewa kwa kutoweka lami kwa moja ya swichi za kushoto, au kwa kupeana lami iliyoonyeshwa kama 0 kwenye onyesho kwa maandishi. Mara tu uwanja unaotakiwa umepatikana na umeonyeshwa kwenye onyesho, bonyeza kitufe cha chini cha kupeana wigo huo kwa maandishi.

3. Rudia hatua ya 2 kwa vidokezo vitatu vilivyobaki, kwa kupindua kila swichi zilizobaki kushoto moja kwa moja, ukichagua lami sawa na swichi za kulia, na kubonyeza kitufe cha chini ili kutoa sauti kwa maandishi. Vidokezo vingi vinaweza kupewa lami sawa na kuhama zaidi ya swichi za kushoto kwenda juu kwa wakati mmoja.

4. Sasa kwa kuwa viwanja vyote vya maandishi vimepewa, mtiririko wa dijiti uko tayari kucheza. Ili kucheza vidokezo kwenye spika, bonyeza tu kitufe cha kucheza / kitufe cha kulia ili kuanza kucheza muziki. Mpangilio wa mlolongo wa uchezaji unaonyesha viwanja vinavyohusiana na swichi za kushoto, kutoka kushoto kwenda kulia. Vidokezo vitachezwa kwa idadi kadhaa ya viboko kwa dakika, kwa mpangilio wa 1, 2, 3, 4, 1, 2…. Onyesho litaonyesha dokezo ambalo linacheza wakati spika zinacheza muziki. Kusitisha uchezaji wa muziki, bonyeza tu kitufe cha kulia, na kisha muziki utaacha kucheza na alama ya pause itaonyeshwa kwenye onyesho. Kubonyeza kitufe cha kulia tena kutaendelea kucheza.

Hatua ya 2: Maelezo ya Kiufundi

Maelezo ya Kiufundi
Maelezo ya Kiufundi

Synthesizer yetu hutumia vifaa vingi tofauti vya dijiti. Imejumuishwa ni mashine za serikali zenye mwisho, rejista, multiplexers, wagawanyaji wa saa na zaidi. Ili kujenga synthesizer yetu, tulitumia faili 10 za kipekee za msimu. Badala ya kufanya kila moduli kuwa sehemu, tulivunja faili za moduli chini kwa kazi. Moduli nyingi, kama matokeo, ni zaidi ya sehemu moja. Kumbuka picha hapo juu inaonyesha kila kizuizi kilichofungwa pamoja katika muundo wetu wa juu.

Tutazungumzia kila moduli kwa kuelezea pembejeo na matokeo, kuvunja vifaa vyake, na kuelezea kusudi lake katika muundo wa jumla. Faili ya ZIP imejumuishwa chini ya inayoweza kufundishwa, ambayo ina kila faili ya nambari ya VHDL inayotumiwa katika mradi huo.

Pembejeo

  • Clk (ishara ya saa asili)
  • PP (cheza / pumzika)
  • Sel (weka synthesizer katika hali ya uteuzi)
  • Agiza (weka hatua kwa lami)
  • Hatua (maelezo ya nafasi)
  • Freq (swichi zinaunda lami inayotakiwa)

Matokeo

  • Anode (sehemu 7 za sehemu)
  • Cathode (sehemu 7 za cathode)
  • DAC (4-bits kuendesha DAC)

Hatua ya 3: Maelezo ya Kiufundi

Maelezo ya Kiufundi
Maelezo ya Kiufundi

Hatua ya 4: Sehemu-7 ya Mgawanyiko wa Saa

Sehemu inayogawanya Saa 7
Sehemu inayogawanya Saa 7

Synthesizer yetu hutumia vigawaji vitatu vya saa, vyote vinazalisha ishara ambazo hutumikia kusudi tofauti katika mradi wetu. Mgawanyiko wa saa huchukua ishara ya saa ya asili na hutoa ishara iliyobadilishwa ambayo ina masafa ambayo ni chini ya ishara ya saa ya asili. Saa ya asili ya Basys 3 ni 100 MHz. Huu ndio mzunguko ambao wagawanyaji wetu wa saa hutumia. Ikiwa unatumia bodi tofauti ya FPGA na masafa tofauti ya saa asili, itabidi ubadilishe nambari.

Mgawanyiko wa saa-sehemu-7 hutoa ishara ambayo huendesha faili ya seg_display. Tutaelezea jinsi faili hii inafanya kazi kwa undani zaidi tunapofika kwenye sehemu yake. Kwa kweli, msuluhishi wa saa hii hutoa ishara ya Hz 240 ambayo itatumika kubadili kati ya anode na cathode kwenye onyesho. Ishara ni 240 Hz kwa sababu mzunguko ambao jicho la mwanadamu haliwezi kutambua ukosefu wa nuru ni 60 Hz. Tunatumia nambari mbili, kwa hivyo kwa kuzidisha mzunguko huu, kila tarakimu itazunguka kwa 60 Hz. Kisha tunapata mara mbili kupata 240 Hz kwa sababu mfumo unabadilika tu wakati ishara inakwenda juu, sio wakati inakwenda chini.

Ili kufanikisha hili, mgawanyiko huchukua ishara ya asili ya 100 MHz na huhesabu kila makali yanayoinuka. Kaunta inapofikia 416667, pato litatoka chini hadi juu, au kinyume chake.

Pembejeo

Clk (ishara ya saa asili)

Matokeo

Clk_7seg (kwa seg_display)

Vipengele

  • D kujiandikisha
  • MUX
  • Inverter
  • Adder

Hatua ya 5: Beats Kwa Dakika Mgawanyaji wa Saa

Beats Kwa Dakika Mgawanyaji wa Saa
Beats Kwa Dakika Mgawanyaji wa Saa

Mgawanyiko wa saa ya BPM hufanya kazi kwa njia ile ile. Mgawanyiko huu hutoa masafa ya saa ambayo husababisha ubadilishaji kati ya hatua nne wakati wa kutoa tani kwenye hali ya kucheza. Tuliamua kubadili kati ya noti kwa 100 BPM. Katika 100 BPM, kila noti itachezwa kwa 3/5 ya sekunde. Ishara inayosababisha itakuwa na masafa ya 1.67 Hz.

Ili kutoa ishara ya masafa haya, tulitumia tena mfumo wa kuhesabu, lakini wakati huu hesabu ilikuwa milioni 60. Kila wakati kaunta ilipogonga milioni 60, ishara ya pato ingegeuza juu au chini.

Pembejeo

Clk (masafa ya saa asili)

Matokeo

Clk_BPM (kwa pato_FSM)

Vipengele

  • D kujiandikisha
  • MUX
  • Inverter
  • Adder

Hatua ya 6: Viwanja vya saa vinagawa saa

Viwanja Clock Spider
Viwanja Clock Spider

Mgawanyaji wa Saa ya Pitches ndiye mkubwa zaidi wa wagawanyaji wetu wa saa. Mgawanyiko huu hutoa ishara 12 tofauti zinazolingana na noti 12 tofauti ambazo synthesizer yetu inaweza kucheza. Kutumia maarifa ya kimsingi ya nadharia ya muziki, tuligundua kuwa kidogo au basi inaweza kusonga kwa kiwango kinacholingana na mzunguko wa noti za muziki. Kuona masafa tuliyotumia, angalia hapa. Tulitumia octave ya nne ya viwanja.

Mfumo huo wa kuhesabu hutumiwa hapa. Kwa maadili maalum tuliyohesabu, angalia faili iliyoandikwa Clk_div_pitches.

Pembejeo

Clk (masafa ya saa asili)

Matokeo

C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B (kutoa_kuchagua)

Vipengele

  • D kujiandikisha
  • MUX
  • Inverter
  • Adder

Hatua ya 7: Cheza / Sitisha / Chagua Mashine ya Jimbo

Cheza / Sitisha / Chagua Mashine ya Jimbo
Cheza / Sitisha / Chagua Mashine ya Jimbo

Katika mradi wetu kuna mashine mbili za serikali zenye mwisho (FSM). FSM ni kifaa cha mantiki ambacho kinaweza kuwepo katika jimbo moja tu kutoka kwa idadi ndogo ya majimbo. Kutumia FSM, mzunguko wa dijiti unaweza kuhamia hali mpya kulingana na mchanganyiko wa pembejeo. Kutumia mantiki ya kuingiza, hali ya FSM itabadilika wakati kuna makali ya saa. Kutoka kwa hali na pembejeo kwenye mzunguko, unaweza kuunda mantiki ya pato ambayo inatoa matokeo ambayo yapo tu ikiwa FSM iko katika hali fulani.

Mashine ya serikali ya PPS ni FSM ya kwanza katika mzunguko wetu. Kuna majimbo matatu katika FSM hii; Cheza, Sitisha, na Hali ya Uchaguzi. Kupitia majimbo tofauti, tulitumia vifungo vya PP na Uchaguzi. Tazama mchoro wa serikali hapo juu ili uone jinsi mabadiliko kati ya majimbo yanatokea. Tulifanya mabadiliko haya ya FSM kwenye ukingo unaoinuka wa saa ya asili ya 100 MHz, ili iwezekane kwa mashine kutobadilika wakati kifungo kimoja kilibanwa, hata kwa muda mfupi sana. Hali ya sasa (P_state) ndio pato pekee kutoka kwa moduli hii.

Pembejeo

  • Clk (masafa ya saa asili)
  • Sel (kitufe cha kushoto)
  • PP (kitufe cha kulia)

Matokeo

P_state (hali ya sasa, hadi pato_FSM, noti_sign, seg_dsiplay, mwisho_chagua)

Vipengele

  • MUX
  • D kujiandikisha

Hatua ya 8: Cheza / Sitisha / Chagua Mashine ya Jimbo

Cheza / Sitisha / Chagua Mashine ya Jimbo
Cheza / Sitisha / Chagua Mashine ya Jimbo

Hatua ya 9: Pato la FSM

Pato la FSM
Pato la FSM

Hii ni FSM ya pili iliyotajwa katika sehemu iliyopita. FSM hii hufanya kazi tofauti kuliko ile nyingine, lakini msingi wa hii kimsingi ni sawa.

Pato la FSM hufanya kazi tu ikiwa hali ya sasa kutoka FSM ya kwanza ni "01" (hali ya kucheza). Kwa kweli, hii ndiyo kuwezeshwa kwa moduli. Ikiwa hali ni "01", basi FSM itabadilika kati ya majimbo kwenye makali ya kupanda kwa ishara ya saa ya BPM. Tunafanya hivyo kwa sababu pato_FSM inadhibiti ni nambari ipi ya kibinadamu ya uwanja uliochaguliwa hutumwa kwa moduli za pato_chagua na seg_display. FSM ina pembejeo ya 16-bit inayokuja kutoka kwa moduli ya kukabidhi noti, ambayo itafunikwa baadaye. Katika hali ya "00" kwa pato_FSM, moduli itatoa "xxxx" kwa noti ya kwanza iliyopewa. Halafu katika "01", itatoa "yyyy" kwa dokezo la pili na kadhalika kwa kila noti kabla ya kurudi kwa nukuu ya kwanza. Tazama mchoro wa serikali hapo juu.

FSM hii inatofautiana na ya kwanza kwa sababu hakuna mantiki ya kuingiza kudhibiti ubadilishaji kati ya majimbo. Badala yake, FSM itaenda kufanya kazi tu wakati serikali kutoka FSM ya kwanza ni "01", na kisha FSM hii itabadilika kati ya majimbo kwenye makali tu ya ishara ya saa. Tofauti nyingine ni kwamba moduli hii ina mantiki ya pato, ikimaanisha kuwa haitoi hali ya sasa, inatoa idadi ya binary kwa uwanja kwenye jimbo hilo.

Pembejeo

  • Clk_BPM (BPM saa ya ishara kutoka kwa msuluhishi wa saa)
  • FSM1_state (PS kutoka PPS FSM)
  • Pitch_in (viwanja kutoka kwa noti_saini)

Matokeo

Piga_kutoka (lami moja kwa wakati, ili kutoa_chagua na uonyeshe maonyesho)

Vipengele

  • MUX
  • D kujiandikisha

Hatua ya 10: Pato la FSM

Pato FSM
Pato FSM

Hatua ya 11: Kumbuka Agiza

Kumbuka Agiza
Kumbuka Agiza

Moduli ya kupeana noti inawajibika kwa kupeana lami kwa maandishi, au hatua. Moduli hii ni rahisi sana. Inakagua kwanza ikiwa mzunguko uko katika hali ya "uteuzi" na ikiwa swichi ya hatua (kushoto kidogo) iko juu. Ikiwa hii ni kweli na kitufe cha mgawo kimeshinikizwa, pato la moduli litakuwa sawa na nambari ya binary inayowakilishwa na swichi za masafa (kulia kulia).

Hapo awali, tulijaribu kutengeneza moduli ambayo ingeokoa moja ya ishara ya saa ya lami kwenye pato, lakini tulipata shida na mabadiliko ya pato kufuata ishara za saa ya kuingiza. Hii ndio moduli pekee inayotumiwa zaidi ya mara moja katika muundo wa mwisho. Kila hatua ina moduli ya note_assign inayohusishwa nayo, na kwa sababu hiyo, kila tukio la moduli hupata kidogo ya basi la Hatua.

Pembejeo

  • P_state (hali ya sasa kutoka PPS FSM)
  • Sel (kitufe cha kushoto)
  • Kubadili (kubadili hatua moja)
  • Freq (swichi za kulia kulia kwa lami)
  • Agiza (kitufe cha chini, weka dokezo)

Matokeo

Piga (nambari ya binary, hadi pato_FSM)

Vipengele

  • MUX
  • D kujiandikisha

Hatua ya 12: Chagua Pato

Chagua Pato
Chagua Pato

Chaguo la matokeo ni jukumu la kuchukua nambari ya binary kwa lami na kuiunganisha kwa ishara yake ya saa. Licha ya saizi yake, hii pia ni moduli rahisi. Output_select kimsingi ni decoder ya binary, ikichagua nambari ya binary kwa lami kwa ishara maalum ya saa. Kwa kweli kupeana pato kwa masafa ya saa kulifanya kazi vizuri hapa ikilinganishwa na moduli ya note_assign, kwa sababu moduli hii yote ilibidi kufanya ni MUX ishara za saa na nambari ya binary inayowakilisha pembejeo ya kudhibiti.

Tunaomba radhi kwa njia isiyo ya kawaida, Vivado alipanga ishara za lami kwa faili ya clk_div_pitches, lakini kwa faili hii iliwapanga kwa kupanda kwa nambari ya binary, na kusababisha viwanja kuwa katika mpangilio tofauti. Pia kumbuka kuwa ikiwa nambari ya binary kutoka kwa pato_FSM ilikuwa "0000" au kitu chochote kikubwa kuliko "1100", basi MUX ilituma kupitia ishara gorofa ya '0'.

Ingizo

  • Piga (kutoka pato_FSM);
  • C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B (ishara za saa ya lami)

Pato

Toni (kidogo moja ambayo inalingana na ishara ya saa iliyochaguliwa, kwa mraba_wave)

Vipengele

MUX

Hatua ya 13: Mganda wa Mraba Gen

Mganda wa Mraba Mwa
Mganda wa Mraba Mwa

Moduli ya mraba_wave ni jenereta ya wimbi la mraba ambalo hutolewa kutoka kwa bodi kwenda kwa DAC. Kutumia ishara ya toni kutoka kwa faili iliyotangulia, mraba_wave hii inabadilisha nambari 4 kati ya "0000" na "1111" kwenye ukingo unaoinuka wa Toni. Toni ni mzunguko maalum wa lami, kwa hivyo mraba_wave hutoa wimbi na masafa tofauti wakati pato_FSM inabadilika kwenda hali nyingine. Pato la 4-bit kutoka kwa moduli hii huenda kwa moduli ya fin_sel, ambapo mantiki inaamuru ikiwa basi hii itatolewa kulingana na serikali kutoka PPS FSM.

Njia mbadala ya jenereta hii ya mraba inazalisha wimbi la sine. Ingawa hii ingeweza kutoa sauti bora ya mwisho, ni ngumu sana kutekeleza, kwa hivyo tuliamua kutoa wimbi la mraba.

Pembejeo

Toni

Matokeo

Pembejeo la DAC_ (oscillating 4-bit bus that changes in the same frequency of tone)

Vipengele

  • Inverter
  • D kujiandikisha

Hatua ya 14: Uonyesho wa sehemu 7

Uonyesho wa sehemu 7
Uonyesho wa sehemu 7

Moduli ya seg_display inadhibiti onyesho la sehemu 7 kwenye bodi yetu ya basys. Ndani ya moduli, michakato miwili hufanyika. Mchakato wa kwanza huamua Freq wakati uko katika hali ya "uteuzi" au Pitch wakati uko katika "kucheza" mode. Katika hali ya "pause", moduli huamua kuonyesha alama ya pause. Kuangalia nambari ya VHDL, unaweza kuona kwamba kificho cha binary huamua kweli pembejeo katika ishara mbili tofauti, cathode1 na cathode2. Cathode1 inawakilisha barua inayolingana na lami kuonyeshwa, na cathode2 inawakilisha alama ya gorofa (b) ikiwa kuna moja. Sababu ya hii inahusiana na mchakato wa pili uliofanywa na moduli ya seg_display.

Kwenye ubao wa basys3, onyesho la sehemu lina cathode za kawaida. Wakati anodes inadhibiti ni nambari gani imewashwa, cathode hudhibiti sehemu ambazo zimewashwa. Kwa kuwa onyesho lina cathode za kawaida, hiyo inamaanisha unaweza kuonyesha seti moja tu ya sehemu kwa wakati. Hiyo inaleta swala kwa mradi huu kwa sababu tunataka kuonyesha barua kwa nambari ya kwanza na alama ya gorofa, ikiwa ni lazima, wakati huo huo. Sasa kumbuka ishara ya saa 7seg? Ili kuzunguka suala hili, tunabadilisha anode na cathode kurudi na kurudi kwenye ishara ya saa 7seg. Kwa sababu ishara ya saa ni 240 Hz na tunatumia nambari mbili, kila tarakimu itateleza kwa 60 Hz. Kwa jicho la mwanadamu, itaonekana kama tarakimu hazichangamshi hata kidogo.

Pia kumbuka kuwa onyesho la bodi ya basys3 hutumia mantiki hasi. Hii inamaanisha ikiwa anode au cathode imewekwa kuwa '0', nambari hiyo au sehemu hiyo itawashwa, na kinyume chake.

Pembejeo

  • Piga (nambari ya binary kwa dokezo, inayotumika katika hali ya kucheza)
  • Freq (swichi za masafa, zinazotumiwa wakati wa hali ya uteuzi)
  • P_state (hali ya sasa kutoka PPS FSM)
  • Clk_240Hz (ishara ya saa kutoka Clk_div_7seg, mara mbili 120 kwa sababu tunatumia tu makali inayoinuka)

Matokeo

  • Cathode (basi inayodhibiti sehemu kwenye onyesho, pato la mwisho)
  • Anode (basi inayodhibiti tarakimu kwenye onyesho, pato la mwisho)

Vipengele

  • Mchoro
  • MUX
  • D kujiandikisha

Hatua ya 15: Chagua Mwisho

Chagua Mwisho
Chagua Mwisho

Chaguo la mwisho ni moduli ya mwisho inayotumiwa katika mradi huu. Moduli nyingine rahisi, moduli hii inadhibiti matokeo ya mwisho ambayo yatakwenda kwa DAC. Wakati wa hali ya "uteuzi" au "pause", moduli itatoa "0000" tuli ili hakuna muziki utakaochezwa kutoka kwa spika. Katika hali ya "uchezaji", moduli itatoa bits 4 zinazosonga kama inavyoamuliwa na mraba_wave.

Pembejeo

  • P_state (hali ya sasa kutoka PPS FSM)
  • Pembejeo la DAC_ (kusongesha-4-bits kutoka mraba_wave)

Matokeo

DAC (sawa na DAC_ pembejeo katika hali ya kucheza, pato la mwisho)

Vipengele

MUX

Hatua ya 16: Vifaa vya nje: DAC

Vifaa vya nje: DAC
Vifaa vya nje: DAC

Digital kwa kibadilishaji cha analog (DAC) huchukua ishara tofauti na kuibadilisha kuwa ishara inayoendelea. DAC yetu ina bits nne na imetengenezwa kutoka kwa kipaza sauti. Kwa kutumia uwiano wa vipingaji katika kitanzi cha usambazaji na maoni, tuliweza kuunda mfumo ambao unatoa matokeo katika viwango 16 tofauti iliyoundwa na "muhtasari" wa kila tawi. Bit0, tawi la juu, hubeba uzito mdogo na inachangia uwezo mdogo zaidi ikiwa juu kwa sababu ya matawi hayo upinzani mkubwa. Uzito huongezeka unapoenda chini ya matawi. Ikiwa ungehesabu kwa binary juu na kisha kurudi chini ukitumia pembejeo kidogo, voltages za pato zingeonekana kama wimbi la busara la sine. Uingizaji kwa DAC uliunganishwa na moja ya PMOD kwenye bodi kuhamisha ishara ya 4-bit.

Awali DAC ilikusanywa kwa darasa la Uhandisi wa Umeme na ilitengenezwa na kuuzwa na sisi, haikununuliwa kutoka duka. Hapo juu ni picha ya faili ya muundo wa kuunda bodi ya mzunguko iliyochapishwa.

Hatua ya 17: Vifaa vya nje: Spika

Vifaa vya nje: Spika
Vifaa vya nje: Spika

Kwa mradi huu, hautataka kununua jozi nzuri za spika. Kama unaweza kusema, sauti ni ya msingi sana. Tulikwenda na kununua seti ya $ 8 ya spika za kompyuta kutoka Best Buy. Chochote kilicho na kipaza sauti kinafanya kazi vizuri. Monotone inafanya kazi vizuri pia. Unaweza hata kutumia vichwa vya sauti, lakini unaweza kuzilipua!

Ili kuunganisha pato la DAC kwa spika, tulitumia nyaya za kuruka na kisha kushikilia kebo ya pato kwa ncha ya kichwa cha kichwa na kebo ya chini hadi chini. Tulijaribu kutumia mkanda wa umeme kushikilia nyaya mahali, lakini ilisababisha usumbufu mwingi. Kujaribu mtindo tofauti wa mkanda kunaweza kutatua suala hili.

Kwa spika zetu, tuliwageukia mpangilio wa hali ya juu na tukapata kelele kali nzuri.

Na hiyo ni hatua ya mwisho ya kuunda mfuatano wa dijiti kutoka bodi ya FPGA! Nenda kwa sehemu mbili zifuatazo kupakua nambari yetu yote ya VHDL na uone sequencer ikifanya kazi.

Hatua ya 18: Maonyesho ya Video

Video hii inaonyesha toleo la mwisho la mradi unaofanya kazi, pamoja na mchakato wa kupeana swichi kwa viwanja 4 tofauti, na spika zinazocheza noti husika.

Hatua ya 19: Nambari ya VHDL

Hapa kuna nambari ya mradi mzima, pamoja na kikwazo na faili za sim zinazotumiwa wakati wa kujenga sequencer. Kumbuka kuwa faili za muundo zisizotumiwa zinasema hivyo katika usanifu.

Ilipendekeza: