Агуулгын хүснэгт:

Тааруулагч: 9 алхам
Тааруулагч: 9 алхам

Видео: Тааруулагч: 9 алхам

Видео: Тааруулагч: 9 алхам
Видео: Том толгойт: Цахим хичээл 2024, Долдугаар сарын
Anonim
Image
Image
Тоног төхөөрөмжийн жагсаалт (Удирдах зөвлөлийн зураг болон Кевиний компийг авах)
Тоног төхөөрөмжийн жагсаалт (Удирдах зөвлөлийн зураг болон Кевиний компийг авах)

Энэхүү төсөл нь Vivado болон 7 сегментийн дэлгэц ашиглан гитар тааруулагч хийх зорилготой юм. Оруулагч дууны давтамжийг олж авсны дараа тааруулагч энэ утгыг тэмдэглэлийн зөв давтамжийн стандарт давтамж гэж нэрлэдэг яг давтамжийн хувьд хатуу кодлогдсон утгуудын жагсаалттай харьцуулах болно. Дараа нь тааруулагч таны оруулсан дуу таны хүссэн тэмдэглэлээс хэр ойр эсвэл хол байгааг харуулах болно. Сонирхолтой нь дууны долгион нь бодит ба төсөөллийн бүрэлдэхүүн хэсгүүдтэй олон синусоид долгионы хослол юм. Энэ нь танил бус хүмүүстэй ажиллахад хэцүү мэт санагдаж болох ч бодит болон төсөөллийн үнэ цэнэтэй долгионыг шинжлэх хэд хэдэн арга байдаг.

Демо:

Алхам 1: Тоног төхөөрөмжийн жагсаалт (Удирдах зөвлөлийн зураг болон Кевиний компийг авах)

Эхлээд бидэнд Basys 3 самбар болон дараах програмуудыг дэмждэг компьютер хэрэгтэй болно.

Python - дээж авах болон fft хийхэд pylab болон scipy ашиглах боломжтой

Vivado - Basys 3 самбартай холбогдож үр дүнг нүдээр үзэх

Алхам 2: Тойм

Тойм
Тойм

Тааруулагч нь хэд хэдэн чухал бүрэлдэхүүн хэсгүүдээс бүрддэг: микрофон, дээж авагч, FFT (Fast Fourier Transform), харьцуулагч, декодер, дэлгэц. Микрофоны зорилго нь оролтын долгионы хэлбэрийг авах явдал юм. Дээж авагч нь микрофоны гаралтын дохиог хүлээн авдаг бөгөөд FFT -ийг ашиглан дохиог давтамжийн хэмжээгээр гаралт болгон хувиргадаг. Дараа нь FFT -ийн гаралтыг ашиглан хамгийн их хэмжээ ба түүнтэй холбоотой давтамжийг 2 -т хувааж долгионы хэлбэртэй холбоотой давтамжийг олж болно. Дараа нь энэ утгыг харьцуулагч руу оруулах боломжтой. Үүнийг дараа нь бүх тэмдэглэлийн төгс давтамжийн давтамжийн утгыг тогтоосон хайлтын хүснэгттэй харьцуулж үзнэ. Харьцуулагч нь хүссэн тэмдэглэлийнхээ оролтыг өгдөг бөгөөд үүнийг хүссэн хүснэгтээс хүссэн давтамжтай нь тааруулах боломжтой. Дараа нь харьцуулагч хамгийн их давтамжтай хамгийн ойр давтамжтай тэмдэглэлийг сонгоно. Харьцуулагч нь хоёр утгыг харьцуулж үзээд давтамжийн утгыг хүссэн утгатай ойртуулж, өгөгдлийг дохио болгоно. Харьцуулагч нь энэ дохиог декодер руу илгээх бөгөөд декодер нь тэмдэглэлийн нарийвчлалыг харуулахын тулд 7 сегментийн дэлгэцийн анодын оролтыг сонгох болно.

Алхам 3: Wav файл

Wav файл
Wav файл

Энэ алхамд бид давирхайн файлыг авч, давтамжийг гаргахыг хичээх болно.

Эхлээд танд wav тэмдэглэлийн файл хэрэгтэй болно. Энэ жишээнд бид 44.1 кГц -ийн түүвэрлэлтийн хурдтай 16 бит стерео wav файлыг ашиглах болно. Үүнийг Garageband гэх мэт DAW -д үүсгэх эсвэл татаж авах боломжтой. Энэ жишээний хувьд Garageband дээр бидний үүсгэсэн A4 440Hz синус долгионыг эндээс татаж авах боломжтой.

Алхам 4: Python- Pylab ба Scipy-ийн хэрэглээ

Python- Pylab ба Scipy-ийн хэрэглээ
Python- Pylab ба Scipy-ийн хэрэглээ

Бид "Хурдан Фурьегийн хувиргалт" хийхэд Python номын санг ашигласан. Онлайн нөөц нь дуурайж, pylab болон scipy -д хэрэгтэй зүйлүүдийг харах боломжийг бидэнд олгосон.

1. Хэрэв та pylab эсвэл scipy суулгаагүй бол үүнийг хийх хэрэгтэй. Эсвэл Pycharm нь маш сайн шинж чанартай байдаг, хэрэв та pylab эсвэл scipy импортлох гэж оролдвол номын санг хараахан суулгаагүй байгаа гэж хэлдэг. Дараа нь та улаан чийдэнг дарж шууд суулгаж болно (курсороо доогуур зураасны дэргэд байрлуулах үед гарч ирнэ).

2. scipy.io.wavfile.read функцийг ашиглан wav дээж файлаас өгөгдлийг уншаад гаргаж аваарай. Өгөгдлийг pylab.fft ашиглан гүйлгэж үзвэл энэ нь танд хүч чадлын хэмжээг харуулах болно.

3. Дараа нь жагсаалтаас ялгарах хамгийн их хүчийг олоорой. Энэ давтамжтай ямар давтамжтай холбогдож байгааг хурдан олох арга нь хамгийн их хүч гардаг жагсаалтын индексийг хайж олоорой. Эцэст нь хамгийн их давтамжийг буцаана. Хожим нь бид хоёртын давтамжийн дохиог VHDL код руу оруулах шаардлагатай болсон тул бид хөвөх давтамжийг хоёртын формат руу хөрвүүлж, буцааж өгөх боломжтой.

Алхам 5: Python-Sampling and FFT (Код болон түүний үр дүнг харуулах)

Энэ алхамд дээж авах болон FFT -ийг авахын тулд доорх линкээр орж бүтэн кредитийг авна уу.

samcarcagno.altervista.org/blog/basic-sound… Манай код:

Pylab болон scipy суулгасны дараа wav файлуудыг импортлох, унших боломжтой болно.

pylab импортоос*scipy.io -аас импорт wavfile

sampFreq, snd = wavfile.read ('440_sine.wav')

Дараа нь snd.shape нь түүврийн цэгүүд болон сувгийн тоог илэрхийлнэ. Манай тохиолдолд түүврийн цэгүүд нь стерео учраас wavfile хэр удаан байх, сувгийн тоо 2 байхаас хамаарна.

Дараа нь snd = snd / (2. ** 15) …… xlabel ('Цаг (ms)')

цагийн дохиог массив болгон зохион байгуулдаг.

Дараа нь FFT нь давтамж ба хэмжээгээр массив үүсгэдэг (хүч)

Дараа нь хэсэг хугацааны давталтаар хамгийн их хэмжигдэхүүн ба түүнтэй холбоотой давтамжийг олдог.

Дараа нь өөрийн кодыг ашиглан давтамжийг илэрхийлсэн бүхэл тоог 12 битийн хоёртын тоо болгон хөрвүүлж, дотор нь энэ дугаарыг агуулсан текст файл үүсгэв.

Алхам 6: Вивадо (харьцуулагч)

Вивадо (харьцуулагч)
Вивадо (харьцуулагч)

Процессийн энэ хэсэгт бидэнд хоёр оролтын давтамжийг харьцуулах харьцуулагч хэрэгтэй болно.

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

Б | 0010

If хэд хэдэн мэдэгдлийг ашиглан тэдгээрийг ангилж, долоон сегментийн декодер хийхэд шаардлагатай зүйлд кодчилно.

Алхам 7: BASYS -ийн ЗУРАГ 3 самбар

BASYS -ийн ЗУРАГ 3 самбар
BASYS -ийн ЗУРАГ 3 самбар

Алхам 8: Vivado (Multiplexing бүхий 7 сегментийн декодер)

Vivado (Multiplexing бүхий 7 сегментийн декодер)
Vivado (Multiplexing бүхий 7 сегментийн декодер)

Бүх зүйлд дэлгэц хэрэгтэй. Энэ нь дизайны үнэ цэнийг тодорхойлох чухал хүчин зүйл юм. Тиймээс бид долоон сегментийн декодер ашиглан дэлгэц бүтээх хэрэгтэй бөгөөд энэ нь B самбар дээр тааруулагч зохион бүтээх чадвараа харуулах боломжийг олгоно. Түүнчлэн, энэ нь тест хийх, дибаг хийхэд бидэнд туслах болно.

Долоон сегментийн декодер нь бага, өндөр, CLK гэсэн нэртэй оролтыг агуулдаг бол SSEG, AN, Fiz_Hz гаргадаг. Дизайныг ойлгоход туслах блок диаграмын зураг дээр байна.

Бага ба өндөр оролттой хоёр тусдаа оролтын зорилго нь харьцуулагчийг зохион бүтээгчид дууны (долгионы) давтамж нь хэрэглэгчийн харьцуулахыг хүсч буй оролтын давтамжаас (Fix_Hz) өндөр эсвэл бага байгаа эсэхийг удирдах эрх чөлөөг олгох явдал юм. Нэмж дурдахад SSEG гаралт нь долоон сегментийн дэлгэц ба дараагийн цэгийг илэрхийлдэг бол AN нь долоон сегментийн багцыг асаах анодуудыг илэрхийлдэг.

Энэхүү долоон сегментийн декодерт цаг (CLK) нь хоёр ба түүнээс дээш өөр анод дээр хоёр өөр утгыг харуулахад чухал үүрэг гүйцэтгэдэг. Удирдах зөвлөл нь хоёр өөр утгыг нэгэн зэрэг харуулахыг зөвшөөрдөггүй тул бид олон талт байдлыг ашиглан утгыг нэг нэгээр нь харуулах ёстой бөгөөд өөр утга руу хурдан шилжиж, бидний нүд үүнийг барьж чаддаггүй. Эндээс CLK оролт ажиллах болно.

Дэлгэрэнгүй мэдээллийг эх кодоос авна уу.

Алхам 9: Vivado (бүрэлдэхүүн хэсгүүдийг нэгтгэх)

Модуль бүрийг (питон хүлээн авагч, харьцуулагч, долоон сегментийн декодер гэх мэт) дуусгасны дараа бид том модулийг ашиглан нэгтгэв. Яг л "Overview" хэсгийн доорх зураг шиг бид дохио бүрийг зохих ёсоор нь холбодог. Лавлахын тулд манай "SW_Hz.vhd" эх кодыг шалгана уу.

Баярлалаа. Танд таалагдана гэж найдаж байна.

Зөвлөмж болгож буй: