Мазмұны:
- 1 -қадам: цифрлық тізбекті қолданушының қолдануы
- 2 -қадам: Техникалық мәліметтер
- 3 -қадам: Техникалық мәліметтер
- 4-қадам: 7 сегментті сағат бөлгіш
- 5 -қадам: минуттық соққылар
- 6 -қадам: сағатты бөлгішті қосады
- 7 -қадам: күй машинасын ойнату/кідірту/таңдау
- 8 -қадам: ойнату/кідірту/күй машинасын таңдау
- 9 -қадам: FSM шығысы
- 10 -қадам: FSM шығысы
- 11 -қадам: Ескерту тағайындау
- 12 -қадам: Шығуды таңдау
- 13 -қадам: шаршы толқын генералы
- 14-қадам: 7 сегментті дисплей
- 15 -қадам: соңғы таңдау
- 16 -қадам: Сыртқы құрылғылар: DAC
- 17 -қадам: Сыртқы құрылғылар: динамик
- 18 -қадам: Бейне демо
- 19 -қадам: VHDL коды
Бейне: 4 қадамдық цифрлық реттегіш: 19 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:27
CPE 133, Cal Poly San Luis Obispo
Жоба авторлары: Джейсон Джонстон мен Бьорн Нельсон
Қазіргі музыка индустриясында ең жиі қолданылатын «құралдардың» бірі - цифрлық синтезатор. Музыканың барлық жанры, хип-хоптан попқа және тіпті елге дейін, студияда цифрлық синтезаторды қолданады, олар өз музыкасын өмірге келтіру үшін қажет ырғақтар мен дыбыстарды жасайды. Бұл оқулықта біз Basys 3 FPGA тақтасы бар өте қарапайым синтезатор жасаймыз.
Синтезатор таңдалған төрт тоқсан нотаны минутына тұрақты жиілікте ойнай алады. Пайдаланушылар әр тоқсан нотасын музыкалық пейзажға тағайындау үшін қосқыштарды пайдаланады. Бұл жоба үшін біз 4 биттік цифрлық аналогты түрлендіргішті қолданамыз (DAC), оны тақтадан шығару және оны аналогтық сигналға түрлендіру. Содан кейін DAC шығысы компьютердің стандартты динамигіне беріледі, бұл біздің музыканы жасайды. Он алты дискретті қадам жасауға болады. Біз синтезаторды С ортасынан (261,6 Гц) және В4 -тен (493,9 Гц) тұратын 12 нотадан тұратын бір октавамен шектейміз. Сондай -ақ, пайдаланушыға бір мезгілде бірнеше жазбаларды тағайындау мүмкіндігі бар, сонымен қатар ауысымдардың ешқайсысы жоғары қарай жылжытылмаған кезде тағайындауды басу арқылы демалыс тағайындау мүмкіндігі болады. Әр нота таңдалып, ойнатылып жатқанда, әріптік нота 7 сегментті дисплейде көрсетіледі. Біз сондай -ақ тақтадағы үш түймені қолданамыз, біреуі музыканы ойнауға және кідіртуге, екіншісі синтезаторды қалпына келтіруге және оны «таңдау» режиміне қоюға, үшіншісін таңдау режимінде әр нотаға дыбыс беруге арналған.
Пайдаланушы жазбаларды таңдағанына қанағаттанғаннан кейін және ойнату түймесін басқаннан кейін синтезатор әр жазбаны пайдаланушы кідірту немесе таңдау түймесін басқанша қайталап ойнатады.
Міне, қажетті жабдықтардың тізімі:
- Vivado (немесе кез келген VHDL жұмыс кеңістігі)
- Basys 3 немесе ұқсас FPGA тақтасы
- Сандық-аналогтық түрлендіргіш (мин. 4-бит)
- Құлаққап ұясы бар динамик
- Сым сымдары
1 -қадам: цифрлық тізбекті қолданушының қолдануы
Келесі қадамдар цифрлық секвенсерді басқару болып табылады. Сандық секвенер 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 бірегей модульдік файлды қолдандық. Әр модульді компонентке айналдырудың орнына, біз модульдік файлдарды функция бойынша бөлдік. Көптеген модульдер нәтижесінде бірнеше компоненттерден тұрады. Назар аударыңыз, жоғарыдағы суретте біздің жоғарғы дизайндағы әр блок бір -бірімен байланысты.
Біз әр модульді кірістер мен шығуларды сипаттау, оның компоненттерін бөлшектеу және жалпы дизайндағы мақсатын түсіндіру арқылы талқылайтын боламыз. Нұсқаудың төменгі жағында ZIP файлы бар, онда жобада қолданылатын әрбір VHDL кодтық файл бар.
Кірістер
- Clk (жергілікті сағат сигналы)
- PP (ойнату/кідірту)
- Sel (синтезаторды таңдау режиміне қою)
- Тағайындау (қадамға қадам тағайындау)
- Қадам (позициялық жазбалар)
- Freq (қалаған қадамды жасайтын қосқыштар)
Шығарулар
- Анод (7 сегментті анодтар)
- Катод (7 сегментті катодтар)
- DAC (DAC басқаратын 4 бит)
3 -қадам: Техникалық мәліметтер
4-қадам: 7 сегментті сағат бөлгіш
Біздің синтезатор үш сағаттық бөлгішті қолданады, олардың барлығы біздің жобада басқа мақсатқа қызмет ететін сигналдар шығарады. Сағат бөлгіш жергілікті сағат сигналын қабылдайды және бастапқы сигналға қарағанда жиілігі бар өзгертілген сигнал шығарады. Basys 3 -тің жергілікті сағаты - 100 МГц. Бұл біздің сағат бөлгіштер қолданатын жиілік. Егер сіз басқа жергілікті жиілік жиілігі бар басқа FPGA тақтасын қолдансаңыз, сізге кодты өзгерту қажет болуы мүмкін.
7 сегментті сағат бөлгіш seg_display файлын басқаратын сигнал шығарады. Біз бұл файлдың қалай жұмыс істейтінін толығырақ оның бөліміне жеткенде түсіндіреміз. Негізінде, бұл сағат бөлгіш дисплейде анодтар мен катодтар арасында ауысу үшін қолданылатын 240 Гц сигнал шығарады. Сигнал 240 Гц, өйткені жарықтың жоқтығын адам көзі тани алмайтын жиілік 60 Гц. Біз екі цифрды қолданамыз, сондықтан бұл жиілікті екі есе көбейту арқылы әр цифр 60 Гц тербеліс жасайды. Содан кейін біз оны екі есе арттырамыз, ол 240 Гц -ке жетеді, себебі жүйе төмендегенде емес, сигнал жоғары көтерілгенде ғана өзгереді.
Бұған қол жеткізу үшін бөлгіш 100 МГц жиілік сигналын қабылдайды және әрбір көтерілетін жиекте есептейді. Есептегіш 416667 -ге жеткенде, шығыс төменнен жоғарыға ауысады немесе керісінше.
Кірістер
Clk (жергілікті сағат сигналы)
Шығарулар
Clk_7seg (seg_display үшін)
Компоненттер
- D тіркеу
- MUX
- Инвертор
- Аддер
5 -қадам: минуттық соққылар
BPM сағаттарын бөлгіш дәл осылай жұмыс істейді. Бұл бөлгіш ойнату күйінде дыбыстарды шығару кезінде төрт қадамның ауысуын басқаратын сағат жиілігін шығарады. Біз 100 BPM кезінде ноталар арасында ауысуды шештік. 100 BPM кезінде әр нота 3/5 секунд ойналады. Алынған сигнал 1,67 Гц жиілікте болады.
Бұл жиіліктің сигналын шығару үшін біз қайтадан санау жүйесін қолдандық, бірақ бұл жолы санау 60 млн. Есептегіш 60 миллионға жеткен сайын, шығыс сигналы жоғары немесе төмен ауысады.
Кірістер
Clk (жергілікті сағат жиілігі)
Шығарулар
Clk_BPM (output_FSM үшін)
Компоненттер
- D тіркеу
- MUX
- Инвертор
- Аддер
6 -қадам: сағатты бөлгішті қосады
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
- Инвертор
- Аддер
7 -қадам: күй машинасын ойнату/кідірту/таңдау
Біздің жобада екі соңғы мемлекеттік машина (FSM) бар. FSM - бұл шектеулі күйлердің бір ғана күйінде бола алатын логикалық құрылғы. FSM көмегімен цифрлық схема кірістердің тіркесімі негізінде жаңа күйге ауыса алады. Кіріс логикасын қолдана отырып, FSM күйі сағаттың жиегі көтерілгенде өзгереді. Күйден және схемаға кірулерден сіз FSM белгілі бір күйде болған жағдайда ғана шығатын шығыс логикасын жасай аласыз.
PPS мемлекеттік машинасы - біздің тізбектегі бірінші FSM. Бұл FSM -де үш күй бар; Ойнату, кідірту және таңдау режимі. Әр түрлі күйлерден өту үшін біз PP және Таңдау түймелерін қолдандық. Күйлер арасындағы ауысулар қалай болатынын білу үшін жоғарыдағы күй диаграммасын қараңыз. Біз бұл FSM ауысуын 100 МГц жиілігіндегі сағаттардың көтерілетін жиегінде жасадық, сондықтан түйменің бірі басылған кезде, тіпті өте қысқа уақыт ішінде, машинаның ауыспауы мүмкін болмас еді. Ағымдағы күй (P_state) - бұл модульден шығатын жалғыз нәтиже.
Кірістер
- Clk (жергілікті сағат жиілігі)
- Sel (сол жақ түймешік)
- PP (оң жақ түймешік)
Шығарулар
P_state (қазіргі күйі, output_FSM, note_assign, seg_dsiplay, final_select)
Компоненттер
- MUX
- D тіркеу
8 -қадам: ойнату/кідірту/күй машинасын таңдау
9 -қадам: FSM шығысы
Бұл алдыңғы бөлімде көрсетілген екінші FSM. Бұл FSM екіншісінен басқа функция атқарады, бірақ оның негізі іс жүзінде бірдей.
FSM шығысы тек бірінші FSM -ден ағымдағы күй «01» (ойнату күйі) болған жағдайда ғана жұмыс істейді. Негізінде бұл модульді қосуға мүмкіндік береді. Егер күй «01» болса, онда FSM BPM сағаттық сигналының көтерілу жиегіндегі күйлер арасында ауысады. Біз мұны жасаймыз, себебі output_FSM таңдалған қадам үшін екілік санның output_select және seg_display модульдеріне жіберілуін бақылайды. FSM нота тағайындау модулінен келетін 16 биттік кіріске ие, ол келесіде қарастырылады. Output_FSM үшін «00» күйінде модуль тағайындалған бірінші жазба үшін «xxxx» шығарады. Содан кейін «01» -де ол бірінші нотаға оралмас бұрын екінші нота үшін «иә» дегенді шығарады және әр нота үшін. Жоғарыдағы күй диаграммасын қараңыз.
Бұл FSM біріншіден ерекшеленеді, себебі күйлер арасында ауысуды басқаратын кіріс логикасы жоқ. Оның орнына, FSM тек бірінші FSM күйі «01» болған кезде ғана жұмыс істейді, содан кейін бұл FSM тек қана сағат сигналының көтерілу жиегінде күйлер арасында ауысады. Тағы бір айырмашылық - бұл модульде шығыс логикасы бар, яғни ол қазіргі күйді шығармайды, ол сол күйдегі қадам үшін екілік санды шығарады.
Кірістер
- Clk_BPM (сағат бөлгіштен BPM сағат сигналы)
- FSM1_state (PPS FSM PS)
- Pitch_in (note_assign ұсыныстары)
Шығарулар
Pitch_out (бір мезгілде, шығыс -таңдау және сегментті көрсету үшін)
Компоненттер
- MUX
- D тіркеу
10 -қадам: FSM шығысы
11 -қадам: Ескерту тағайындау
Нотаны тағайындау модулі позициялық нотаға немесе қадамға нақты қадамды тағайындауға жауап береді. Бұл модуль іс жүзінде өте қарапайым. Ол алдымен тізбектің «таңдау» күйінде екенін және қадамдық қосқыштың (сол жақта) жоғары екенін тексереді. Егер бұл рас болса және тағайындау түймесі басылса, модульдің шығысы жиілік қосқыштарымен көрсетілген екілік санға тең болады (оң жақта).
Бастапқыда біз сигналдың біреуін шығысқа сақтай алатын модуль жасауға тырыстық, бірақ кіріс сигналына сәйкес шығудың өзгеруіне байланысты мәселелер туындады. Бұл соңғы дизайнда бірнеше рет қолданылатын жалғыз модуль. Әр қадамда note_assign модулі бар, сондықтан модульдің әрбір данасы Step шинасының бір битін алады.
Кірістер
- P_state (қазіргі күй PPS FSM)
- Sel (сол жақ түймешік)
- Коммутатор (бір сатылы қосқыш)
- Жиілік (оң жақ шетке ауысу)
- Тағайындау (төменгі түйме, жазбаны тағайындайды)
Шығарулар
Қадам (екілік сан, output_FSM үшін)
Компоненттер
- MUX
- D қайта тіркеу
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 (сағаттық сигналдар)
Шығу
Тон (таңдалған сағат сигналына сәйкес келетін бір бит, square_wave)
Компоненттер
MUX
13 -қадам: шаршы толқын генералы
Square_wave модулі - бұл тақтадан DAC -қа шығарылатын шаршы толқынның генераторы. Алдыңғы файлдағы дыбыстық сигналды қолдана отырып, бұл square_wave 4 биттік нөмірді «0000» мен «1111» арасындағы үннің көтерілетін жиегіне аударады. Тон - бұл белгілі бір жиілік, сондықтан square_wave output_FSM басқа күйге ауысқанда басқа жиіліктегі толқын шығарады. Бұл модульден 4 разрядты шығару фин_сел модуліне өтеді, мұнда логика бұл шинаның PPS FSM күйіне байланысты шығарылатынын анықтайды.
Бұл квадрат толқынды генераторға балама синусонды шығарады. Бұл, ең алдымен, жақсы дыбыс шығаратын болса да, оны іске асыру әлдеқайда қиын, сондықтан біз жай ғана шаршы толқын жасауды жөн көрдік.
Кірістер
Дыбыс (output_select параметрінен тербелмелі бит)
Шығарулар
DAC_input (тербелмелі 4 биттік шина, ол бірдей тон жиілігінде өзгереді)
Компоненттер
- Инвертор
- D тіркеу
14-қадам: 7 сегментті дисплей
Seg_display модулі біздің базалық тақтадағы 7 сегментті дисплейді басқарады. Модуль ішінде екі процесс жүреді. Бірінші процесс «таңдау» күйінде немесе «ойнату» режимінде болғанда Pitch кодының кодын шешеді. «Кідірту» режимінде модуль кодты тоқтатып, үзіліс белгісін көрсетеді. VHDL кодына қарап, екілік дешифратор кірісті екі түрлі сигналға, катод1 мен катодқа 2 шешетінін көруге болады. Катод1 - көрсетілетін қадамға сәйкес келетін әріпті білдіреді, ал катод2 - жазық символды білдіреді (b). Мұның себебі seg_display модулінің екінші процесіне қатысты.
Basys3 тақтасында сегменттің дисплейінде жалпы катодтар бар. Анодтар қандай цифр қосылатынын басқарса, катодтар қай сегменттер қосулы екенін басқарады. Дисплейде жалпы катодтар болғандықтан, бұл бір уақытта тек сегменттер жиынтығын көрсетуге болатынын білдіреді. Бұл жоба үшін мәселе туғызады, себебі біз әріпті бірінші цифрда және қажет болған жағдайда жалпақ символда көрсеткіміз келеді. Енді 7seg сағаттық сигнал есіңізде ме? Бұл мәселені шешу үшін біз анодтар мен катодтарды 7сег сағаттық сигналда алға -артқа өзгертеміз. Сағат сигналы 240 Гц болғандықтан және біз екі цифрды қолданамыз, әр цифр 60 Гц -те тербеледі. Адам көзіне сандар мүлдем тербелмейтін сияқты болады.
Сондай -ақ, basys3 тақтасының дисплейі теріс логиканы қолданады. Бұл егер анод немесе катод '0' мәніне орнатылса, онда бұл сан немесе сегмент қосулы болады және керісінше.
Кірістер
- Қадам (нота үшін екілік сан, ойын күйінде қолданылады)
- Жиілік (жиілік қосқыштары, таңдау күйінде пайдаланылады)
- P_state (қазіргі күй PPS FSM)
- Clk_240Hz (Clk_div_7seg сағаттық сигналы, екі есе 120, себебі біз тек көтерілу жиегін қолданамыз)
Шығарулар
- Катод (дисплейдегі сегменттерді басқаратын шина, соңғы шығыс)
- Анод (дисплейдегі сандарды басқаратын шина, соңғы шығыс)
Компоненттер
- Бекіткіш
- MUX
- D тіркеу
15 -қадам: соңғы таңдау
Соңғы таңдау - бұл жобада қолданылатын соңғы модуль. Тағы бір қарапайым модуль, бұл модуль DAC -қа түсетін соңғы шығуды басқарады. «Таңдау» немесе «кідірту» күйінде болғанда, модуль динамиктерден музыка ойнатылмайтындай статикалық «0000» шығарады. «Ойнату» күйінде модуль square_wave анықтайтын тербелмелі 4 битті шығарады.
Кірістер
- P_state (қазіргі күй PPS FSM)
- DAC_input (square_wave-ден тербелмелі 4 бит)
Шығарулар
DAC (ойын күйінде DAC_кірісімен тең, соңғы шығарылым)
Компоненттер
MUX
16 -қадам: Сыртқы құрылғылар: DAC
Сандық -аналогты түрлендіргіш (DAC) дискретті сигналды қабылдайды және оны үздіксіз сигналға түрлендіреді. Біздің DAC төрт биті бар және жиынтық күшейткіштен жасалған. Жеткізу мен кері байланыс циклінде резисторлардың қатынасын қолдана отырып, біз әр тармақтың «қосындысы» арқылы 16 түрлі деңгейде шығатын жүйе құра алдық. Bit0, жоғарғы тармағы, ең аз салмақты көтереді және ең жоғары потенциалды қосады, себебі бұтақтар жоғары қарсылыққа ие. Бұтақтардан төмен түскен сайын салмақ артады. Егер сіз биттік енгізулерді пайдаланып, екілік санау кезінде сосын артқа шегінетін болсаңыз, шығыс кернеулері синусондыға ұқсас болады. 4-разрядты сигналды беру үшін DAC кірісі тақтадағы PMOD-дің біріне қосылды.
DAC бастапқыда электротехника сыныбына жиналды және оны біз дүкеннен сатып алған жоқпыз және құрастырдық. Жоғарыда баспа тақтасын құруға арналған дизайн файлының суреті.
17 -қадам: Сыртқы құрылғылар: динамик
Бұл жоба үшін сіз керемет динамиктер жұбын сатып алғыңыз келмейді. Сіз түсінетіндей, дыбыс өте қарапайым. Біз барып, Best Buy компаниясынан 8 доллар тұратын компьютерлік динамиктер жиынтығын сатып алдық. Құлаққап ұясы бар кез келген нәрсе жақсы жұмыс істейді. Монотон жақсы жұмыс істейді. Сіз тіпті құлаққапты қолдана аласыз, бірақ оларды жарып жіберуіңіз мүмкін!
DAC шығысын динамиктерге қосу үшін біз өтпелі кабельдерді қолдандық, содан кейін шығыс кабелін құлақаспап ұясының ұшына және жерге қосу кабелін негізге жалғадық. Біз кабельдерді орнында ұстау үшін электрлік таспаны қолдануға тырыстық, бірақ бұл үлкен кедергі келтірді. Басқа стильдегі лентаны қолдану бұл мәселені шешуі мүмкін.
Біздің спикерлер үшін біз оларды ең жоғары деңгейге бұрдық және лайықты қатты дыбыс алдық.
Бұл FPGA тақтасынан цифрлық секвенсер құрудың соңғы қадамы! Біздің барлық VHDL кодты жүктеу үшін келесі екі бөлімге өтіңіз және секвенцердің әрекетін көріңіз.
18 -қадам: Бейне демо
Бұл бейнеде жұмыс жобасының соңғы нұсқасы көрсетілген, оның ішінде ажыратқыштарды 4 бөлек алаңға тағайындау процесі және тиісті ноталарды ойнайтын динамиктер.
19 -қадам: VHDL коды
Мұнда барлық жобаның коды, оның ішінде тізбекті құруда қолданылатын шектеулер мен сим файлдар. Назар аударыңыз, пайдаланылмаған дизайн файлдары архитектурада осылай дейді.
Ұсынылған:
Микроконтроллерсіз қадамдық мотор басқарылатын қадамдық қозғалтқыш!: 6 қадам
Микроконтроллерсіз қадамдық мотор басқарылатын қадамдық қозғалтқыш! Бұл жоба күрделі схеманы немесе микроконтроллерді қажет етпейді. Сондықтан көп созбай, бастайық
Қадамдық мотор микроконтроллерсіз басқарылатын қадамдық қозғалтқыш (V2): 9 қадам (суреттермен)
Микроконтроллерсіз қадамдық мотормен басқарылатын қадамдық қозғалтқыш (V2): Мен алдыңғы нұсқаулықтардың бірінде микроконтроллерсіз сатылы қозғалтқышты пайдаланып, қадамдық қозғалтқышты қалай басқаруға болатынын көрсеттім. Бұл тез әрі қызықты жоба болды, бірақ ол осы нұсқаулықта шешілетін екі мәселемен келді. Сонымен, ақылды
Қадамдық мотормен басқарылатын тепловоз моделі - Қадамдық мотор айналмалы кодер ретінде: 11 қадам (суреттермен)
Қадамдық мотормен басқарылатын тепловоз моделі | Қадамдық қозғалтқыш айналмалы кодер ретінде: Алдыңғы нұсқаулықтардың бірінде біз айналмалы кодер ретінде қадамдық қозғалтқышты қалай қолдану керектігін білдік. Бұл жобада біз Arduino микроконтроллерінің көмегімен локомотивті басқару үшін айналмалы кодты айналдыратын моторды қолданамыз. Сонымен, фу жоқ
Қадамдық мотор басқарылатын қадамдық мотор - Қадамдық мотор айналмалы кодер ретінде: 11 қадам (суреттермен)
Қадамдық мотор басқарылатын қадамдық мотор | Қадамдық мотор айналмалы кодер ретінде: Бірнеше қадамдық қозғалтқыштар жатып, бірдеңе жасағысы келеді ме? Бұл нұсқаулықта Arduino микроконтроллерінің көмегімен басқа қадамдық қозғалтқыштың орнын басқару үшін айналмалы кодер ретінде қадамдық қозғалтқышты қолданайық. Сонымен, көп созбай, келейік
Қадамдық қозғалтқыш (қадамдық қозғалтқыш): Microstep (5 қадам)
التحكم بالمحرك الخطوي (Stepper Motor) بطريقة (Microstep): في هذه المدونة اتحدث عن كيف نقوم بالتحكم بماتور خطوي عن طلق الله