Мазмуну:
- 1 -кадам: Жабдуулардын тизмеси (Башкарманын сүрөтүн жана Кевиндин компын алыңыз)
- 2 -кадам: Обзор
- 3 -кадам: Wav File
- 4-кадам: Python- Pylab жана Scipyдин колдонулушу
- 5-кадам: Python-Sampling жана FFT (Кодду жана анын жыйынтыктарын көрсөтүү)
- 6 -кадам: Vivado (Салыштыруучу)
- 7 -кадам: BASYS 3 ТАЛКАСЫНЫН СҮРӨТТӨРҮ
- 8 -кадам: Vivado (Multiplexing менен 7 сегменттин декодери)
- 9 -кадам: Vivado (Компоненттерди бириктирүү)
Video: Тюнер: 9 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:42
Бул долбоор Vivado жана 7 сегменттүү дисплейдин жардамы менен гитара тюнерин жасоо үчүн иштелип чыккан. Тюнер киргизилген үндүн жыштыгын тапкандан кийин, тюнер бул маанини нотанын туура үнү үчүн стандарттуу жыштык деп аталган так жыштыктар үчүн катуу коддолгон маанилердин тизмеси менен салыштырат. Андан кийин тюнер сиздин каалаган үнүңүзгө канчалык жакын же алыс экенин көрсөтөт. Кызыктуусу, үн толкуну реалдуу жана элестүү компоненттери бар көптөгөн синусоидалык толкундардын айкалышы. Бул бейтааныш адамдар менен иштөө кыйын болуп көрүнгөнү менен, биз реалдуу жана элестүү баалуулуктарга ээ болгон толкунду анализдөөнүн бир нече жолдору бар.
Демо:
1 -кадам: Жабдуулардын тизмеси (Башкарманын сүрөтүн жана Кевиндин компын алыңыз)
Алгач бизге Basys 3 тактасы жана төмөнкү программаларды колдогон компьютер керек. Garageband/Audacity же башка DAW - микрофон аркылуу жаздыруу жана wavfiles экспорттоо үчүн.
Python - үлгү жана fft үчүн pylab жана scipy колдоно алат
Vivado - Basys 3 тактасына туташуу жана жыйынтыгын көрүү үчүн
2 -кадам: Обзор
Тюнер бир нече маанилүү компоненттерден турат: микрофон, үлгү алуучу, FFT (Fast Fourier Transform), салыштыргыч, декодер жана дисплей. Микрофондун максаты - кирүүчү толкун формасын тартуу. Тандоочу микрофондун чыгуу сигналын алат жана сигналды жыштыкта чоңдуктун чыгышына айландыруу үчүн FFTти колдонот. Андан кийин FFTдин чыгымын колдонуп, максималдуу чоңдукту жана аны менен байланышкан жыштыкты 2ге бөлүп, толкун формасынын чайырына байланышкан жыштыкты табууга болот. Бул баа андан кийин компараторго кире алат. Андан кийин ал бардык ноталардын кемчиликсиз кадамдары үчүн жыштык маанилерин койгон таблицага салыштырылат. Салыштыргычка керектүү нота үчүн кирүү берилет, ал каалаган столго туура келген жыштыкка дал келиши мүмкүн. Андан кийин компаратор максималдуу жыштыкка эң жакын жыштыгы бар нотаны тандайт. Салыштыруучу эки маанини салыштырып көрүп, жыштыктын мааниси каалаганына жакын экенин көрүп, анан бул маалыматты сигналга киргизет. Салыштыргыч ал сигналды декодерге жөнөтөт, мында декодер нотанын тактыгын көрсөтүү үчүн 7 сегменттүү дисплейдин аноддоруна кириштерди тандайт.
3 -кадам: Wav File
Бул кадамда биз wav файлын алып, ошол кадамдын жыштыгын чыгарууга аракет кылабыз.
Адегенде сизге wav файлынын нотасы керек. Бул мисалда биз 44.1 кГц ылдамдык менен 16 бит стерео wav файлын колдонобуз. Бул Garageband сыяктуу DAWте түзүлүшү же жүктөлүшү мүмкүн. Бул мисал үчүн, Garagebandда биз жараткан A4 440Hz синус толкуну бул жерден жүктөлүп алынышы мүмкүн.
4-кадам: Python- Pylab жана Scipyдин колдонулушу
Биз Python китепканасын "Fast Fourier transform" кылуу үчүн колдондук. Интернет булагы бизге туурап, pylab жана scipyде эмне пайдалуу экенин көрүүгө мүмкүнчүлүк берди.
1. Эгерде сиз pylab же scipy орното элек болсоңуз, анда муну жасашыңыз керек. Же, Pycharmдын абдан жакшы өзгөчөлүгү бар, pylab же scipy импорттоого аракет кылганда, сиз китепкананы али орното электигиңизди белгилеп, астын сызып коюңуз. Сиз аларды кызыл лампочканы басуу менен түз орното аласыз (курсорду астын сызуунун жанына койгондо пайда болот).
2. scipy.io.wavfile.read функциясын колдонуп, wav файлынын үлгүсүндөгү маалыматтарды окуп, сууруп алыңыз. Pylab.fft аркылуу берилмелерди иштетүү, ал сизге күчтүн тизмесин кайтарып берет.
3. Андан кийин тизмеден чыгарылган күчтүн максимумун табыңыз. Максималдуу күч пайда болгон тизмектин индексин издеңиз, анткени бул күч менен кандай жыштыктагы байланышты табуунун тез жолу. Акыры максималдуу жыштыкты кайтарыңыз. Кийинчерээк биз VHDL кодуна бинардык жыштык сигналын киргизишибиз керек болгондуктан, биз жыштыкты экиликке айландырып, аны кайтарып бере алабыз.
5-кадам: Python-Sampling жана FFT (Кодду жана анын жыйынтыктарын көрсөтүү)
Бул кадамда, толук кредиттер тандоо жана FFT үчүн төмөнкү шилтемеге өтөт.
samcarcagno.altervista.org/blog/basic-sound… Биздин код:
Pylab жана scipy орнотулгандан кийин, wav файлдарын импорттоого жана окууга болот.
pylab import*дан scipy.io import wavfile
sampFreq, snd = wavfile.read ('440_sine.wav')
Андан кийин snd.shape үлгү чекиттерин жана каналдардын санын билдирет. Биздин учурда, үлгү чекиттери wavfile канча убакытка көз каранды жана каналдар # 2 стерео болгондуктан.
Андан кийин snd = snd / (2. ** 15) …… xlabel ('Убакыт (мс)')
убакыт сигналын массивге уюштурат.
Андан кийин FFT жыштыктагы жана чоңдуктагы массивди түзөт (Power)
Кийинчерээк цикл аркылуу максималдуу чоңдук жана аны менен байланышкан жыштык табылат. Бул жыштык/2 wavfile чайырын билдирет.
Андан кийин өзүбүздүн кодду колдонуп, жыштыктагы бүтүн сан 12 биттик экилик санга айландырылды жана ошол номер менен текст файлы түзүлдү.
6 -кадам: Vivado (Салыштыруучу)
Процестин бул бөлүгүндө бизге эки киргизүү жыштыгын салыштыруу үчүн компаратор керек.
1. Киргизүү (кабыл алуучу) жыштыгы жогору, төмөн же 2 Гц маржа диапазонунда аныкталган нотада болорун салыштыруу үчүн салыштыргыч түзүлдү. (типтүү гитара тюнери e2ден g5ке чейин, 82 Гцтен 784 Гцке чейин).
2. 2 Гц маржа түзүүдө биз RCAны колдонуп, кабыл алуучу жыштыгына "000000000010" кошуп, колдонуучу киргизүү үчүн ал дагы өтө төмөн экенин текшерип көрдүк. Андай болсо, бир бит сигнал "жогорку" <= "0", "төмөн" <= "1". Андан кийин, колдонуучунун киришине "000000000010" кошобуз, алуучунун кириши андан да жогору экенин көрүңүз. Эгер ушундай болсо, "жогорку" <= '1', "төмөн" <= '0'. Эч нерсе экөө тең "0" кайтарбайт.
3. Модулдун кийинки бөлүгүндө кабыл алуучу нотанын эмне экенин айтуу үчүн конкреттүү 4-бит маалыматы керек болгондуктан, 2 салыштырмалуу жыйынтыкты гана кайтарбастан (төмөн жана жогорку), биз коддун өнөктөшүн белгилеши керек. жыштыгы. Сураныч, төмөнкү диаграммага кайрылыңыз:
C | 0011
C# | 1011
D | 0100
D# | 1100
E | 0101
F | 0110
F# | 1110
G | 0111
G# | 1111
A | 0001
A# | 1001
B | 0010
Аларды бир нече if коддоруна бөлүү жана жети сегменттеги декодерге керектүү нерселерди коддоо үчүн колдонуу.
7 -кадам: BASYS 3 ТАЛКАСЫНЫН СҮРӨТТӨРҮ
8 -кадам: Vivado (Multiplexing менен 7 сегменттин декодери)
Баарына дисплей керек. Бул долбоордун баалуулугун аныктоочу маанилүү фактор. Ошондуктан, биз жети сегменттердин декодеринин жардамы менен дисплей түзүшүбүз керек, бул бизге B тактасында тюнерди жасоо жөндөмдүүлүгүн көрсөтүүгө мүмкүндүк берет. Ошондой эле, бул тестирлөөдө жана мүчүлүштүктөрдү оңдоодо бизге жардам берет.
Жети сегменттен турган декодерде SSEG, AN жана Fiz_Hz чыгарууда Note, low, high жана CLK деген материалдар бар. Дизайнды түшүнүүгө жардам берүү үчүн жогорудагы блок -схеманын сүрөтү бар.
Төмөн жана жогорку кирүүлөрдүн экиге ээ болушунун максаты - компаратордун дизайнерине колдонуучу салыштыргысы келген үн (толкун) жыштыгы кирүү жыштыгынан (Fix_Hz) жогору же төмөн экендигин башкаруу эркиндигин берүү. Мындан тышкары, SSEG чыгаруу жети сегменттин дисплейин жана кийинки чекитти билдирет, ал эми AN жети сегменттин топтому күйүп турган аноддорду билдирет.
Бул жети сегменттен турган декодерде саат (CLK) эки же андан көп башка аноддордо эки башка маанини көрсөтүүдө маанилүү роль ойнойт. Башкаруу бизге бир эле учурда эки башка баалуулукту көрсөтүүгө уруксат бербегендиктен, биз бир убакта баалуулукту көрсөтүү үчүн мультиплекстөөнү колдонушубуз керек, ошол эле учурда башка баалуулукка өтө тез көзүбүз түшө албайт. Бул жерде CLK киргизүү ойнойт.
Көбүрөөк маалымат алуу үчүн, баштапкы кодго кайрылыңыз.
9 -кадам: Vivado (Компоненттерди бириктирүү)
Ар бир модулдар (питон алгыч, компаратор, жети сегменттеги декодер ж. Б.) Бүткөндөн кийин, биз чоңураак модулду колдонуп чогулттук. "Кароо" бөлүмүнүн астындагы сүрөттө көрсөтүлгөндөй, биз ар бир сигналды ошого жараша туташтырабыз. Маалымат үчүн, "SW_Hz.vhd" булак кодубузду текшериңиз.
Рахмат. Сизге жагат деп үмүттөнөбүз.
Сунушталууда:
Кантип кадам эсептегич жасоо керек?: 3 кадам (сүрөттөр менен)
Step Counter кантип жасалат ?: Мен көптөгөн спортто жакшы аткарчумун: жөө басуу, чуркоо, велосипед тебүү, бадминтон ойноо ж.б. Мейли, менин ичимди карачы ……. Ооба, баары бир мен машыгуу үчүн кайра баштоону чечтим. Мен кандай жабдыктарды даярдашым керек?
IPodдо Doomду 5 жеңил кадам менен ойноңуз !: 5 кадам
Doom'ду IPodдо 5 жеңил кадам менен ойноңуз!: Doom жана башка ондогон оюндарды ойноо үчүн iPod'уңузда Rockboxту кантип кош жүктөө керектиги боюнча этап-этабы менен көрсөтмө. Бул чындыгында оңой нерсе, бирок менин iPodдо кыйроо ойноп жатканымды көргөндөрдүн көбү дагы эле таң калышат жана көрсөтмө менен чаташып кетишет
WordPressке плагиндерди 3 кадам менен кантип орнотсо болот: 3 кадам
WordPressке плагиндерди 3 этапта кантип орнотуу керек: Бул үйрөткүчтө мен сизге веб -сайтыңызга WordPress плагинин орнотуу үчүн эң маанилүү кадамдарды көрсөтөм. Негизи плагиндерди эки башка жол менен орнотсоңуз болот. Биринчи ыкма ftp же cpanel аркылуу болот. Бирок мен аны тизмектебейм, анткени бул чындыгында нааразы
Кадам моторун айдоо үчүн 556 таймерди колдонуу: 5 кадам
Step моторун айдоо үчүн 556 таймерди колдонуу: Бул инструкция 556 таймердин кантип тепкичтүү моторду айдай аларын түшүндүрүп берет
Акустикалык левитация Arduino Uno менен кадам-кадам (8-кадам): 8 кадам
Акустикалык левитация менен Arduino Uno Step-by-Step (8-кадам): ультрадыбыштуу үн өткөргүчтөр L298N Dc аял адаптеринин электр энергиясы менен камсыздоосу эркек токту Arduino UNOBreadboard Бул кантип иштейт: Биринчиден, сиз Arduino Uno кодун жүктөп бересиз (бул санарип менен жабдылган микроконтроллер) жана аналогдук порттор кодду айландыруу үчүн (C ++)