Мазмуну:

4 кадам Digital Sequencer: 19 кадам (сүрөттөр менен)
4 кадам Digital Sequencer: 19 кадам (сүрөттөр менен)

Video: 4 кадам Digital Sequencer: 19 кадам (сүрөттөр менен)

Video: 4 кадам Digital Sequencer: 19 кадам (сүрөттөр менен)
Video: How to use MPU-9250 Gyroscope, Accelerometer, Magnetometer for Arduino 2024, Июль
Anonim
4 кадам санариптик секвенер
4 кадам санариптик секвенер
4 кадам санариптик секвенер
4 кадам санариптик секвенер

CPE 133, Cal Poly San Luis Obispo

Долбоордун жаратуучулары: Джейсон Джонстон жана Бьорнн Нельсон

Азыркы музыка индустриясында эң көп колдонулган "инструменттердин" бири - санарип синтезатор. Музыканын ар бир жанры, хип-хоптон попко, ал тургай өлкөгө чейин, музыканы жандандыруу үчүн керектүү ыргактарды жана үндөрдү түзүү үчүн студияда санарип синтезаторду колдонот. Бул окуу куралында биз Basys 3 FPGA тактасы менен абдан жөнөкөй синтезаторду түзөбүз.

Синтезатор тандалган төрт чейрек нотасын мүнөтүнө туруктуу сокку менен ойной алат. Колдонуучулар өчүргүчтөрдү колдонуп, ар бир чейрек нотасын музыкалык питчке ыйгарышат. Бул долбоор үчүн биз 4-разряддуу санарипти аналогдук конвертерге (DAC) колдонуп, тактадан чыгарууну алып, аны аналогдук сигналга айландырабыз. Андан кийин DACтын чыгармасы биздин музыканы түзүп, стандарттык компьютер динамигине берилет. Он алты дискреттик чайыр мүмкүн. Биз синтезаторубузду 12 нотадан турган бир октавага чектейбиз, алар орто С (261.6 Гц) менен В4 (493.9 Гц) ортосунда. Колдонуучу бир эле учурда бир нече ноталарды дайындоо мүмкүнчүлүгүнө ээ болот, ошондой эле бир дагы баскычты өйдө карай жылдырбастан, дайындоо менен басуу менен эс алууну дайындай алат. Ар бир нота тандалып жана ойнотулуп жатканда, тамга нотасы 7 сегменттүү дисплейде көрсөтүлөт. Биз ошондой эле тактадагы үч баскычты колдонобуз, бири музыканы ойнотуу жана тындыруу үчүн, экинчиси синтезаторду баштапкы абалга келтирүү жана "тандоо" режимине коюу үчүнчүсү, ал эми үчүнчүсү тандоо режиминде ар бир нотага чайыр берүү.

Колдонуучу ноталарды тандоого канааттангандан кийин жана ойнотуу баскычын баскандан кийин, синтезатор колдонуучу тыныгууну же тандоону басмайынча, ар бир нотаны кайра -кайра ойнотот.

Бул жерде керектүү жабдуулардын тизмеси келтирилген:

  • Vivado (же кандайдыр бир VHDL жумуш мейкиндиги)
  • Basys 3 же ага окшош FPGA тактасы
  • Санариптен аналогдук которгуч (мин. 4-бит)
  • Гарнитура уячасы бар динамик
  • Зым жетелейт

1 -кадам: Digital Sequencerдин колдонуучу операциясы

Digital Sequencerдин колдонуучу операциясы
Digital Sequencerдин колдонуучу операциясы

Төмөнкү кадамдар санариптик секвенорду иштетүү болуп саналат. Санариптик секвенер 261.6 Гцтен 493.9 Гцке чейинки диапазондогу 12 башка чайкаларды (C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B) ойнотууну колдойт.

1. Тактаны тандоо режимине коюу үчүн сол баскычты басыңыз. Бул режимде болгондо, эң сол жагындагы 4 өчүргүчтөр (13төн 16га чейин которгучтар) ар бири белгилүү бир кадамдын маанисин сактоо үчүн колдонулат.

2. Тандоо үчүн, сол которгучтардын бирин оодарыңыз, андан кийин эң керектүү кадамды тандоо үчүн эң оң жагындагы 4 өчүргүчтү (1ден 4кө чейин) колдонуңуз. Оң коммутаторлордун белгилүү бир айкалышы менен байланышкан кадам жети сегменттүү дисплейде көрсөтүлөт жана оң которгучтар жаңы айкалышка которулганда дисплей жаңы байланышкан чайырга жаңыртылат. Эс алуу эч качан сол которгучтардын бирине чайырды дайындоосуз же нотага дисплейде 0 катары көрсөтүлгөн чайырды дайындоо менен берилиши мүмкүн. Каалаган чайыр табылып, дисплейде көрсөтүлгөндөн кийин, нотага ошол өзгөчө кадамды дайындоо үчүн ылдыйкы дайындоо баскычын басыңыз.

3. Калган үч нотанын 2 -кадамын кайталаңыз, калган сол өчүргүчтөрдүн ар бирин жекече күйгүзүү менен, туура которгучтар менен тиешелүү кадамды тандап, нотага үндү дайындоо үчүн астыңкы баскычты басыңыз. Бир эле нотага бир эле сол которгучтардын бирөөсүн жогору өйдө жылдыруу менен дайындалышы мүмкүн.

4. Эми нота аянтчаларынын бардыгы дайындалгандан кийин, санариптик секвенер ойногонго даяр. Динамикте ноталарды ойнотуу үчүн, музыканы ойнотууну баштоо үчүн жөн гана оң ойнотуу/тындыруу баскычын басыңыз. Ойнотуу тизмегинин тартиби сол которгучтар менен байланышкан аянтчаларды чагылдырат, солдон оңго. Эскертүүлөр 1, 2, 3, 4, 1, 2… иретинде, мүнөтүнө белгиленген сокку саны менен ойнотулат. Дисплейде динамиктер музыканы ойнотуп жаткан учурда нота көрсөтүлөт. Музыканы ойнотууну токтотуу үчүн, жөн гана оң баскычты басыңыз, ошондо музыка ойнобой калат жана дисплейде тыныгуу символу пайда болот. Оң баскычты кайра басуу ойнотууну улантат.

2 -кадам: Техникалык маалымат

Техникалык маалымат
Техникалык маалымат

Биздин синтезатор көптөгөн санарип компоненттерди колдонот. Чектелген мамлекеттик машиналар, регистрлер, мультиплексорлор, саат бөлгүчтөр жана башкалар камтылган. Биздин синтезаторду куруу үчүн 10 уникалдуу модулдук файлды колдондук. Ар бир модулду компонент кылуунун ордуна, биз модулдук файлдарды функциясы боюнча талкаладык. Көпчүлүк модулдар, натыйжада, бир нече компоненттен турат. Көңүл бургула, жогорудагы сүрөттө ар бир блок биздин эң мыкты дизайнда бириктирилген.

Биз ар бир модулду кириштер менен чыгууларды сүрөттөө, анын компоненттерин бузуу жана жалпы дизайндагы максатын түшүндүрүп талкуулайбыз. Долбоордо колдонулган ар бир VHDL кодунун файлын камтыган нускаманын ылдый жагында ZIP файлы камтылган.

Кириштер

  • Clk (жергиликтүү саат сигналы)
  • PP (ойнотуу/тындыруу)
  • Sel (синтезаторду тандоо режимине коюу)
  • Дайындоо (чайырга бир кадам дайындоо)
  • Кадам (позициялык ноталар)
  • Freq (керектүү кадамды жаратуучу которгучтар)

Чыгуулар

  • Анод (7 сегменттүү аноддор)
  • Катод (7 сегменттүү катод)
  • DAC (DACти башкаруучу 4 бит)

3 -кадам: Техникалык маалымат

Техникалык маалымат
Техникалык маалымат

4-кадам: 7 сегменттүү Саатты бөлүүчү

7 сегменттүү саат бөлүүчү
7 сегменттүү саат бөлүүчү

Биздин синтезатор үч саат бөлгүчтү колдонот, алардын баары биздин долбоордо башка максатта кызмат кылган сигналдарды чыгарат. Саатты бөлүүчү жергиликтүү сааттык сигналды алат жана жыштыгынын баштапкы саат сигналынан азыраак болгон өзгөртүлгөн сигналын чыгарат. Basys 3тун жергиликтүү сааты 100 МГц. Бул биздин саат бөлгүчтөр колдонгон жыштык. Эгерде сиз башка FPGA тактасын башка жергиликтүү жыштыкта колдонуп жатсаңыз, анда кодду өзгөртүүгө туура келиши мүмкүн.

7 сегменттүү саат бөлүүчү seg_display файлын айдаган сигнал чыгарат. Биз бул файлдын кантип иштээрин анын бөлүмүнө келгенде кененирээк түшүндүрөбүз. Негизи, бул саат бөлүштүргүч 240 Гц сигналын чыгарат, ал дисплейдеги аноддор менен катоддорду алмаштырууга колдонулат. Сигнал 240 Гц, анткени адамдын көзүнүн жарыктын жоктугун тааный албаган жыштыгы 60 Гц. Биз эки цифраны колдонуп жатабыз, андыктан бул жыштыкты эки эсе көбөйтүү менен ар бир сан 60 Гц термелет. Андан кийин биз 240 Гцке жетүүнү эки эсе көбөйтөбүз, анткени система төмөн түшкөндө эмес, сигнал жогору кеткенде гана өзгөрөт.

Бул максатка жетүү үчүн, бөлүүчү эне 100 МГц сигналын алат жана ар бир өсүп жаткан четинде эсептейт. Эсептегич 416667ге жеткенде, өндүрүм төмөндөн жогоруга барат же тескерисинче.

Кириштер

Clk (жергиликтүү саат сигналы)

Чыгуулар

Clk_7seg (seg_displayге)

Компоненттер

  • D каттоо
  • MUX
  • Inverter
  • Adder

5 -кадам: Саат бөлүүчү мүнөтүнө сокку

Минут сайын Саат Бөлүүчү
Минут сайын Саат Бөлүүчү

BPM саат бөлүүчүсү ушундай эле жол менен иштейт. Бул бөлүштүрүүчү ойноо абалында обондорду чыгарууда төрт баскычтын ортосунда өтүүнү козгогон саат жыштыгын чыгарат. Биз 100 BPMде ноталарды алмаштырууну чечтик. 100 BPMде, ар бир нота секундасынын 3/5 бөлүгүндө ойнотулат. Натыйжада сигнал 1.67 Гц жыштыгына ээ болмок.

Бул жыштыктын сигналын чыгаруу үчүн биз кайра эсептөө системасын колдондук, бирок бул жолу 60 миллион болду. Эсептегич 60 миллионго жеткен сайын, чыгуу сигналы жогору же төмөн которулат.

Кириштер

Clk (жергиликтүү саат жыштыгы)

Чыгуулар

Clk_BPM (output_FSMге)

Компоненттер

  • D каттоо
  • MUX
  • Inverter
  • Adder

6 -кадам: Pitch Clock Divider

Pitch Clock Divider
Pitch Clock Divider

Pitch Clock Divider биздин саат бөлгүчтөрдүн эң чоңу. Бул бөлүүчү биздин синтезатор ойной ала турган 12 ар кандай ноталарга туура келген 12 түрдүү сигналды чыгарат. Музыкалык теория боюнча негизги билимдерди колдонуп, биз бит же автобус музыкалык ноталардын жыштыгына туура келүүчү ылдамдыкта термелээрин аныктадык. Биз колдонгон жыштыктарды көрүү үчүн бул жерди караңыз. Биз төртүнчү октаваны колдондук.

Ушул эле жерде эсептөө системасы колдонулат. Биз эсептеген конкреттүү баалуулуктар үчүн Clk_div_pitches деп аталган файлды караңыз.

Кириштер

Clk (жергиликтүү саат жыштыгы)

Чыгуулар

C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B (output_select үчүн)

Компоненттер

  • D каттоо
  • MUX
  • Inverter
  • Adder

7 -кадам: ойнотуу/тындыруу/мамлекеттик машинаны тандоо

Мамлекеттик машинаны ойнотуу/тындыруу/тандоо
Мамлекеттик машинаны ойнотуу/тындыруу/тандоо

Биздин долбоордо эки чектүү мамлекеттик машина (FSM) бар. FSM - бул чектелген штаттардын ичинен бир гана абалда боло турган логикалык түзүлүш. FSMди колдонуп, санариптик схема киргизүүлөрдүн айкалышына негизделген жаңы абалга өтүшү мүмкүн. Кирүү логикасын колдонуп, FSMдин абалы сааттын чети көтөрүлгөндө өзгөрөт. Штаттан жана схемага киргизүүлөрдөн, сиз FSM белгилүү бир абалда болгон учурда гана чыгуучу логиканы түзө аласыз.

PPS мамлекеттик машинасы биздин схемада биринчи FSM болуп саналат. Бул FSMде үч мамлекет бар; Ойнотуу, Тындыруу жана Тандоо режими. Ар кандай штаттарда өтүү үчүн, биз PP жана тандоо баскычтарын колдондук. Мамлекеттердин ортосундагы өткөөлдөр кантип пайда болгонун көрүү үчүн жогорудагы мамлекеттик диаграмманы караңыз. Биз бул FSM өтүүсүн жергиликтүү 100 МГц сааттын өсүп жаткан четинде жасадык, ошондуктан машинанын баскычтардын бири басылганда өтө кыска убакытка да өтпөй калышы мүмкүн эмес эле. Учурдагы абал (P_state) бул модулдан чыккан жалгыз жыйынтык.

Кириштер

  • Clk (жергиликтүү саат жыштыгы)
  • Сел (сол баскыч)
  • PP (оң баскыч)

Чыгуулар

P_state (азыркы абал, output_FSMге, note_assign, seg_dsiplay, final_select)

Компоненттер

  • MUX
  • D каттоо

8 -кадам: ойнотуу/тындыруу/мамлекеттик машинаны тандоо

Мамлекеттик машинаны ойнотуу/тындыруу/тандоо
Мамлекеттик машинаны ойнотуу/тындыруу/тандоо

9 -кадам: FSM чыгаруу

Чыгуу FSM
Чыгуу FSM

Бул мурунку бөлүмдө айтылган экинчи FSM. Бул FSM башка функцияны аткарат, бирок анын негизи негизинен бирдей.

Биринчи FSM учурдагы абалы "01" (ойноо абалы) болгон учурда гана FSM иштейт. Негизи, бул модуль үчүн иштетүү. Эгерде абал "01" болсо, анда FSM BPM саат сигналынын көтөрүлүүчү четиндеги штаттардын ортосунда өтөт. Биз муну жасайбыз, анткени output_FSM тандалган кадамдын кайсы бинардык номери output_select жана seg_display модулдарына жөнөтүлөрүн көзөмөлдөйт. FSMде нота тапшыруу модулунан келген 16 биттик киргизүү бар, ал кийинкиде каралат. Output_FSM үчүн "00" абалында, модуль дайындалган биринчи эскертүү үчүн "xxxx" чыгарат. Андан кийин "01де", ал экинчи нотага "yyyy" чыгарат жана ошону менен бирге ар бир нотага кайра биринчи нотага өтөт. Жогорудагы мамлекеттик диаграмманы караңыз.

Бул FSM биринчисинен айырмаланат, анткени штаттардын ортосунда которулууну башкаруу үчүн эч кандай логика жок. Анын ордуна, FSM биринчи FSMдеги абал "01" болгондо гана иштей баштайт, андан кийин бул FSM штаттардын ортосунда саат сигналынын өйдө жагында гана өтөт. Дагы бир айырмачылык, бул модулда чыгаруу логикасы бар, башкача айтканда, ал азыркы абалды чыгарбайт, ошол абалда кадамдын экилик санын чыгарат.

Кириштер

  • Clk_BPM (BPM саат сигналынан саат бөлүштүргүч)
  • FSM1_state (PPS FSMден PS)
  • Pitch_in (note_assign'деги кадамдар)

Чыгуулар

Pitch_out (бир убакта бир кадам, output_select жана seg_display үчүн)

Компоненттер

  • MUX
  • D каттоо

10 -кадам: FSM чыгаруу

Чыгуу FSM
Чыгуу FSM

11 -кадам: Эскертүү дайындоо

Эскертүү дайындоо
Эскертүү дайындоо

Эскертүүнү дайындоо модулу позициялык нотага же кадамга иш жүзүндө дайындоо үчүн жооптуу. Бул модуль чындыгында абдан жөнөкөй. Ал адегенде схема "тандоо" абалында жана тепкич которгуч (эң сол жакта) жогору экендигин текшерет. Эгерде бул чын болсо жана тапшырма баскычы басылса, модулдун чыгышы жыштык алмаштыргычтар менен көрсөтүлгөн экилик санга барабар болот (эң оң жакта).

Башында, биз чыны саат сигналдарынын бирин өндүрүшкө сактап кала турган модуль жасоого аракет кылганбыз, бирок биз кирүү саат сигналдарын ээрчүү менен өндүрүштүн өзгөрүшү менен көйгөйлөргө туш болдук. Бул акыркы дизайнда бир нече жолу колдонулган жалгыз модуль. Ар бир кадамда аны менен байланышкан note_assign модулу бар жана ошондон улам, модулдун ар бир нускасы Step шинасынын бир азын алат.

Кириштер

  • P_state (азыркы абал PPS FSMден)
  • Сел (сол баскыч)
  • Которуу (бир баскычтуу которуу)
  • Freq (ыргытуу үчүн эң оңго которулат)
  • Дайындоо (астынкы баскыч, эскертме дайындоо)

Чыгуулар

Pitch (бинардык сан, output_FSMге)

Компоненттер

  • MUX
  • D resgister

12 -кадам: Чыгууну тандоо

Чыгуу тандоо
Чыгуу тандоо

Чыгуу тандоосу экилик номерди алуу үчүн жооптуу жана аны тиешелүү саат сигналына туташтырат. Көлөмүнө карабастан, бул дагы салыштырмалуу жөнөкөй модуль. Output_select негизинен экилик декодер, белгилүү бир сааттык сигналга кадам үчүн экилик санды декоддоо. Чыгууну чындыгында саат жыштыгына дайындоо бул жерде note_assign модулуна караганда жакшыраак иштеди, анткени бул модулдун баары башкаруу сигналын көрсөтүүчү экилик номери бар саат сигналдарын MUX кылышы керек болчу.

Биз таң калыштуу маршрут үчүн кечирим сурайбыз, Vivado clk_div_pitches файлы үчүн сигналдарды алфавиттик тартипте уюштурган, бирок бул файл үчүн аларды экилик санга көтөрүү менен уюштурган, бул чайырлардын башка тартипте болушуна себеп болгон. Ошондой эле, эгер output_FSMден бинардык номер "0000" же "1100" ден чоңураак болсо, анда MUX жалпак "0" сигналы аркылуу жөнөтүлөт.

Киргизүү

  • Чайыр (output_FSM тартып);
  • C, Db, D, Eb, E, F, Gb, G, Ab, A, Bb, B (саат сигналдары)

Output

Обон (тандалган саат сигналына дал келген бир бит, square_wave үчүн)

Компоненттер

MUX

13 -кадам: Square Wave Gen

Square Wave Gen
Square Wave Gen

Module square_wave - бул DAC тактасынан чыгарылган квадрат толкунунун генератору. Мурунку файлдагы обон сигналын колдонуп, бул square_wave Тондун көтөрүлүүчү четиндеги "0000" менен "1111" ортосундагы 4 биттик номерди айландырат. Тон - бул белгилүү бир жыштык, андыктан square_wave output_FSM башка абалга өткөндө башка жыштыктагы толкунду пайда кылат. Бул модулдан 4-бит чыгаруу fin_sel модулуна барат, бул жерде логика бул автобус PPS FSMдин абалына жараша чыгарылабы же жокпу чечет.

Бул төрт бурчтуу толкун генераторуна альтернатива синус толкунун пайда кылат. Бул, кыязы, жакшыраак акыркы обонду жаратса да, аны ишке ашыруу кыйла татаал, ошондуктан биз жөн эле төрт бурчтуу толкунду чыгарууну чечтик.

Кириштер

Тон (output_selectтен термелүүчү бит)

Чыгуулар

DAC_input (тонустун бирдей жыштыгында өзгөрүүчү термелүү 4-бит шинасы)

Компоненттер

  • Inverter
  • D каттоо

14-кадам: 7 сегменттүү дисплей

7 сегменттүү дисплей
7 сегменттүү дисплей

Seg_display модулу биздин басс тактабыздагы 7 сегменттүү дисплейди көзөмөлдөйт. Модулдун ичинде эки процесс болот. Биринчи процесс "тандоо" абалында же "ойноо" режиминде болгондо Pitchтин кодун чечет. "Пауза" режиминде, модуль декодирование тыныгуу символун көрсөтөт. VHDL кодун карасаңыз, экилик декодер чынында кирүүнү эки башка сигналга, cathode1 жана cathode2 деп чечет. Катод1 көрсөтүлүүчү кадамга туура келген тамганы билдирет, ал эми катод2 болсо жалпак символду (b) билдирет. Мунун себеби seg_display модулу тарабынан жасалган экинчи процесске байланыштуу.

Basys3 тактасында сегменттин дисплейинде жалпы катоддор бар. Аноддор кайсы цифранын күйгүзүлгөнүн көзөмөлдөп турушса, катоддор кайсы сегменттердин күйүп турганын көзөмөлдөйт. Дисплейде жалпы катоддор болгондуктан, сиз бир убакта сегменттердин бир гана топтомун көрсөтө аласыз. Бул долбоордун көйгөйүн жаратат, анткени биз тамганы биринчи цифрада жана жалпак символду, керек болсо, ошол эле учурда көрсөтүүнү каалайбыз. Эми 7seg саатынын сигналын эстейсизби? Бул маселени чечүү үчүн, биз 7seg саат сигналында аноддорду жана катоддорду алдыга жана артка алмаштырабыз. Сааттын сигналы 240 Гц жана биз эки цифраны колдонуп жаткандыктан, ар бир сан 60 Гцте термелет. Адамдын көзүнө, цифралар эч кандай термелбегендей көрүнөт.

Ошондой эле basys3 тактасынын дисплейи терс логиканы колдонорун эске алыңыз. Бул эгер анод же катод "0" деп коюлса, анда ал сан же сегмент күйгүзүлөт жана тескерисинче.

Кириштер

  • Чайыр (нота үчүн экилик номер, ойноо абалында колдонулат)
  • Freq (жыштык которгучтар, тандоо абалында колдонулат)
  • P_state (азыркы абал PPS FSMден)
  • Clk_240Hz (Clk_div_7segден сааттын сигналы, эки эселенген 120, анткени биз көтөрүлүүчү четин гана колдонуп жатабыз)

Чыгуулар

  • Катод (дисплейдеги сегменттерди көзөмөлдөгөн автобус, акыркы чыгаруу)
  • Анод (дисплейдеги цифраларды көзөмөлдөгөн автобус, акыркы чыгаруу)

Компоненттер

  • Latch
  • MUX
  • D каттоо

15 -кадам: Акыркы тандоо

Акыркы тандоо
Акыркы тандоо

Акыркы тандоо - бул долбоордо колдонулган акыркы модуль. Дагы бир жөнөкөй модуль, бул модуль DACка бара турган акыркы өндүрүштү көзөмөлдөйт. Качан "тандоо" же "пауза" абалында, модуль статикалык "0000" чыгарат, ошондо динамиктерден эч кандай музыка ойнолбойт. "Ойнотуу" абалында, модуль square_wave тарабынан аныкталган термелүүчү 4 битти чыгарат.

Кириштер

  • P_state (азыркы абал PPS FSMден)
  • DAC_input (square_waveден термелүүчү 4 бит)

Чыгуулар

DAC (ойноо абалында DAC_input барабар, акыркы чыгаруу)

Компоненттер

MUX

16 -кадам: Тышкы түзмөктөр: DAC

Тышкы түзмөктөр: DAC
Тышкы түзмөктөр: DAC

Санариптен аналогдук которгуч (DAC) дискреттик сигналды алат жана аны үзгүлтүксүз сигналга айлантат. Биздин DAC төрт битке ээ жана жыйынды күчөткүчтөн жасалган. Жеткирүү жана кайтарым байланыш циклиндеги резисторлордун катышын колдонуу менен биз ар бир тармактын "жыйындысы" аркылуу 16 түрдүү деңгээлде чыгаруучу системаны түзө алдык. Bit0, жогорку бутак, эң аз салмакты көтөрөт жана эң жогорку потенциалга салым кошот, анткени бул бутактар жогорку каршылыкка ээ. Бутактан түшкөн сайын салмагы жогорулайт. Эгерде сиз бинардык эсептөөлөрдү өйдө көтөрүп, анан кайра артка кетире турган болсоңуз, анда чыңалуу бир кадам синус толкунуна окшош болмок. DACке кирүү 4-бит сигналды берүү үчүн борттогу PMODлардын бирине туташкан.

DAC башында Электротехника сабагы үчүн чогултулган жана биз тарабынан иштелип чыккан жана дүкөндөн сатып алынган эмес. Жогоруда басма схемасын түзүү үчүн дизайн файлынын сүрөтү бар.

17 -кадам: Тышкы түзмөктөр: Динамик

Тышкы түзмөктөр: Динамик
Тышкы түзмөктөр: Динамик

Бул долбоор үчүн сиз супер сонун динамиктерди сатып алгыңыз келбейт. Сиз айтып тургандай, үн абдан жөнөкөй. Биз барып, Best Buy компаниясынан 8 долларлык компьютердик динамиктерди сатып алдык. Гарнитура уячасы бар нерсенин баары жакшы иштейт. Монотон жакшы иштейт. Сиз гарнитураны колдоно аласыз, бирок аларды жардырып жиберишиңиз мүмкүн!

DACтин үнүн динамиктерге туташтыруу үчүн, биз секирүүчү кабелдерди колдонуп, андан кийин чыгуучу кабелди гарнитуранын уячасынын учуна жана жерге кабелди базага карматтык. Кабелдерди кармап туруу үчүн электр лентасын колдонууга аракет кылдык, бирок ал көп тоскоолдуктарды жаратты. Башка стилдеги лентаны колдонуу бул маселени чечиши мүмкүн.

Биздин спикерлер үчүн биз аларды эң жогорку деңгээлге бурдук жана татыктуу катуу үндү алдык.

Бул FPGA тактасынан санарип секвенерди түзүү үчүн акыркы кадам! Кийинки эки бөлүмгө өтүңүз, биздин бардык VHDL кодубузду жүктөп алыңыз жана секвенердин иш -аракетин көрүңүз.

18 -кадам: Video Demo

Бул видео иштөөчү долбоордун акыркы версиясын, анын ичинде которгучтарды 4 башка чайырга дайындоо процессин жана спикерлерди тиешелүү ноталарды ойнотууну көрсөтөт.

19 -кадам: VHDL коду

Бул жерде секвенорду түзүүдө колдонулган чектөө жана сим файлдарын кошкондо, бүтүндөй долбоордун коду. Эске алыңыз, колдонулбаган дизайн файлдары архитектурада ушундай деп айтылат.

Сунушталууда: