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

Spartan Voice Changer дуулга: 14 алхам (зурагтай)
Spartan Voice Changer дуулга: 14 алхам (зурагтай)

Видео: Spartan Voice Changer дуулга: 14 алхам (зурагтай)

Видео: Spartan Voice Changer дуулга: 14 алхам (зурагтай)
Видео: Как устроена IT-столица мира / Russian Silicon Valley (English subs) 2024, Арваннэгдүгээр
Anonim
Спартан дуу хоолой солигч дуулга
Спартан дуу хоолой солигч дуулга
Спартан дуу хоолой солигч дуулга
Спартан дуу хоолой солигч дуулга

Сайн уу? Бид бол Сорбонна их сургуулийн Политехникийн сургуулийн 4 оюутнаас бүрдсэн баг юм.

  • Louis Buchert
  • Билал Мелехи
  • Бао Тин Пиот
  • Марко Лонгепе

Энэхүү төсөл нь бидний судалгааны ажлын хүрээнд хэрэгжиж байгаа бөгөөд олон тооны хэрэгслүүдийг гартаа авахаас гадна онолын ололт амжилтаа харуулах зорилготой юм.

Алдарт объект нь нэрээ алдах тодорхой видео тоглоомын баатартай төстэй дуулга өмсдөг. Загварын хувьд бас чанга яригчаас гарч буй аудио дохионы Фурье хувиргалтыг харуулдаг дэлгэцтэй. Энэхүү чихэвчний зорилго нь хэд хэдэн сонгосон эффект ашиглан тээвэрлэгчийн дуу хоолойг бодит цаг хугацаанд өөрчлөх явдал юм.

Боловсролын зорилго:

  • Дууг микрофоноос авах
  • Дохиог нэмэгдүүлэх, шүүж, тоон хэлбэрт оруулах
  • Дохионы FFT -ийг ойлгоорой
  • Энэ FFT -ийг дэлгэц дээр харуул
  • Дохионы синтез
  • Чанга яригчаас дуу чимээ гарга
  • Аудио дууны эффектийг мэдрэх (цуурай, цуурай гэх мэт …)

Одоо бид арын дэвсгэрийг тавьж, төслийг танилцууллаа, үүнийг гартаа авах цаг боллоо!

Алхам 1: Шаардлага 1/3 - Техник хангамж

Тавигдах шаардлага 1/3 - Техник хангамж
Тавигдах шаардлага 1/3 - Техник хангамж

Дуулгаа амжилттай бүтээхийн тулд төхөөрөмжийг ажиллуулахын тулд бидэнд зарим тоног төхөөрөмж хэрэгтэй болно.

  • Terasic + Adafruit TFT LCD дэлгэцтэй DE0-Nano-SoC хөгжлийн самбар (Arduino)
  • Дуулга хийх 3D принтер ашиглах
  • Интернет холболт, хамгийн бага холболттой компьютер (USB, Ethernet). Qsys дээр програм хөрвүүлэхэд маш их цаг хугацаа шаардагддаг тул таны компьютер бас хүчтэй процессортой байх ёстой.
  • (Шаардлагагүй) Бүрэлдэхүүн хэсгүүдийг ПХБ -д оруулахын тулд хэлхээний хэмжээг багасгахын тулд + гагнуурын төмрийг Gerber файлуудаас хэвлэсэн хэлхээний самбар (ПХБ) хийдэг принтер.
  • (Зөвлөмж болгож байна): Манай зааварчилгаагаар ажилдаа сэтгэл хангалуун байх сайхан кофе:)

Алхам 2: Шаардлага 2/3 - Таны хэлхээний бүрэлдэхүүн хэсгүүд

Шаардлага 2/3 - Таны тойргийн бүрэлдэхүүн хэсгүүд
Шаардлага 2/3 - Таны тойргийн бүрэлдэхүүн хэсгүүд
Шаардлага 2/3 - Таны тойргийн бүрэлдэхүүн хэсгүүд
Шаардлага 2/3 - Таны тойргийн бүрэлдэхүүн хэсгүүд
Шаардлага 2/3 - Таны тойргийн бүрэлдэхүүн хэсгүүд
Шаардлага 2/3 - Таны тойргийн бүрэлдэхүүн хэсгүүд

Таны хэлхээнд шаардлагатай бүрэлдэхүүн хэсгүүдийг энд оруулав.

  • Texas Instrument LM386 AB ангиллын аудио өсгөгч
  • BreadBoard
  • Эрэгтэй-Эр, Эр-Эмэгтэй кабелийн багц
  • LM358P Дижитал-Аналох хөрвүүлэгч (DAC)
  • Илтгэгч
  • Аналог хэлхээнд ашигладаг жижиг микрофон
  • Тоглоомын резисторуудын 1kOhm -аас 220kOhm хүртэл
  • Конденсатор 1.5nF
  • Конденсатор 50nF
  • 100nF конденсатор
  • 100 кФ конденсатор
  • Конденсатор 220uF
  • x4 конденсатор 10uF

Алхам 3: Шаардлага 3/3 - Програм хангамж

Шаардлага 3/3 - Програм хангамж
Шаардлага 3/3 - Програм хангамж
Шаардлага 3/3 - Програм хангамж
Шаардлага 3/3 - Програм хангамж

Эцэст нь хэлэхэд танд дараах програм хангамж хэрэгтэй болно.

  • Quartus 15.1: Lite хувилбар
  • C хөрвүүлэгч (жишээ нь gcc)
  • ПХБ -ийн дизайны хувьд алтиум
  • Altera -ийн SoC суулгагдсан багц нь SoC газрын зурагтай холбогдох боломжтой

  • Шаваас

Алхам 4: Оролтын хэлхээ

Оролтын хэлхээ
Оролтын хэлхээ
Оролтын хэлхээ
Оролтын хэлхээ
Оролтын хэлхээ
Оролтын хэлхээ
Оролтын хэлхээ
Оролтын хэлхээ

Хэлхээ байгуулъя. Дээрх хэлхээний зургийг талхны тавцан дээрээ угсрахын тулд ашиглана уу. Та мөн BreadBoard болон доторх хэлхээний зургийг харж зүү хэрхэн холбогдож байгааг харах болно. Бүх хэлхээ нь 5V шууд гүйдэл (DC) -ээр тэжээгддэг. Үүнийг хийхийн тулд та USB-B хөрвүүлэгч эсвэл функц генератор бүхий 5V батерей ашиглаж болно.

Зарим сануулга:

  • 5V цахилгаан хангамж ба газардуулга нь талхны хавтангийн тусдаа хэвтээ шугам дээр холбогддог
  • Хэрэв та 2 бүрэлдэхүүн хэсгийг зэрэгцээ холбохыг хүсвэл тэдгээрийг талхны нийтлэг мөрөнд оруулна уу
  • Хэрэв та 2 цуваа бүрэлдэхүүн хэсгүүдийг холбохыг хүсвэл compoments нь талхны самбарын нийтлэг мөрөнд зөвхөн нэг зүү байх ёстой.

Талхны хавтанг хэрхэн ашиглах талаар тусгай заавар үзэхээс бүү эргэлзээрэй. LM358P аудио өсгөгчийн зүү байрлалыг анхааралтай уншихаа бүү мартаарай (дээрх зургийг үзнэ үү).

Алхам 5: Гаралтын хэлхээ

Гаралтын хэлхээ
Гаралтын хэлхээ
Гаралтын хэлхээ
Гаралтын хэлхээ
Гаралтын хэлхээ
Гаралтын хэлхээ
Гаралтын хэлхээ
Гаралтын хэлхээ

Алхам 4-тэй яг ижилхэн зааварчилгаа өгсөн байна. Дөрвөн оролт: CSI биш, SCK, LDAC биш бол таны DE0-Nano-Soc Удирдах Зөвлөлөөс гарна. Тэднийг хэрхэн бий болгохыг бид дараа нь харах болно.

LM386 аудио өсгөгчийн зүү байрлалыг анхааралтай уншихаа бүү мартаарай (дээрх зургийг үзнэ үү).

Алхам 6: [Нэмэлт] Хэвлэсэн хэлхээний бород ба гагнуурын бүрэлдэхүүн хэсгүүдийг бий болгох

[Нэмэлт] Хэвлэсэн хэлхээний бород ба гагнуурын эд ангиудыг бий болгох
[Нэмэлт] Хэвлэсэн хэлхээний бород ба гагнуурын эд ангиудыг бий болгох
[Нэмэлт] Хэвлэсэн хэлхээний бород ба гагнуурын эд ангиудыг бий болгох
[Нэмэлт] Хэвлэсэн хэлхээний бород ба гагнуурын эд ангиудыг бий болгох
[Нэмэлт] Хэвлэсэн хэлхээний бород ба гагнуурын эд ангиудыг бий болгох
[Нэмэлт] Хэвлэсэн хэлхээний бород ба гагнуурын эд ангиудыг бий болгох

Хэрэв та азтай бол хэлхээний самбар хэвлэгчийг эзэмших эсвэл ашиглах боломжтой бол бид өөрсдийн хэвлэмэл хэлхээний самбар (ПХБ) бүтээх гэж байна. Энэ алхам нь заавал биш гэдгийг анхаарна уу. Энэ алхам нь зөвхөн хэлхээгээ талхны самбараас ПХБ руу шилжүүлэхэд оршино.

Танд эдгээр 2 GERBER файл хэрэгтэй болно.

Эдгээр файлуудыг Altium дээр хийсэн болно. ПХБ -ийг хэвлэхийн тулд тэдгээрийг ПХБ -ийн хэвлэгчийн програм хангамж дээр ашиглаарай. ПХБ -ээ авсны дараа ПХБ -ийн цэвэрхэн, мөр зөв хэвлэгдсэн эсэхийг шалгаарай.

Одоо жинхэнэ наймаа энд байна: Гагнах. Дээрх 2 зураг нь ПХБ дээрх хэлхээний зураг юм. Бүрэлдэхүүн хэсэг бүр өөрийн гэсэн нэртэй байдаг (R6, C4, MK1 гэх мэт). Алхам 4 ба 5 дахь зургууд нь бүрэлдэхүүн хэсгүүдийн параметрүүдийг (эсэргүүцэл, дамжуулалт..) харуулав. Бүрэлдэхүүн хэсэг бүрийг талхны самбараас ПХБ -д нэрийнх нь дагуу байрлуулна.

Гагнуурын төмрөөр бүх зүйлийг гагнаж дууссаны дараа богино холболт байгаа эсэхийг шалгахын тулд бүх бүрэлдэхүүн хэсгүүдийг вольтметрээр шалгаарай.

Алхам 7: SoC тохиргоо

SoC тохиргоо
SoC тохиргоо
SoC тохиргоо
SoC тохиргоо

SoC -ийн тохиргооны хувьд та терминал дотор SoC суулгагдсан багцад багтсан зарим команд, скриптүүдийг ажиллуулах шаардлагатай болно. Үүнийг хийхийн тулд та зарим $ PATH нэмэх шаардлагатай болно. PATH нь командыг ажиллуулах явцад зам өгсөн директороос файл хайхын тулд терминал дотор ашиглагддаг. Үүнийг хийхийн тулд дараах командын мөрийг бичнэ үү.

PATH экспортлох =/cygdrive/c/altera_lite/15.1/quartus/sopc_builder/bin: $ PATH

Дараа нь соф файлаас толгой үүсгэхийн тулд командын мөрийг бичнэ үү. Та Quartus дээрх төслөө эмхэтгэн соф файлыг олж авна. Үүнийг хийхийн тулд:./generate_header гэж бичнэ үү.

Алхам 8: С ДЦС -ийг програмчлах

C HPS -ийг програмчлах
C HPS -ийг програмчлах

Энэ хэсэгт бид ADC -ийн үнэ цэнийг уншиж, SPI -д бичих гэсэн 2 зүйлийг ойлгох хэрэгтэй.

1. ADC -ийн утгыг уншина уу

ADC агуулсан санах ойн хаягийг шууд олж авах боломжгүй, үнэндээ картанд байгаа линукс систем нь санах ойн хийсвэрлэлийг тохируулдаг. ADC хаяг руу үнэхээр нэвтрэхийн тулд бид mmap функцийг ашиглах болно.

"h2p_lw_spi_addr = virtual_base + ((гарын үсэг зураагүй урт) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (гарын үсэг зураагүй урт) (HW_REGS_MASK));"

Энэхүү заавар нь ADC -д хуваарилагдсан санах ойн хаягийг олж авахын тулд үндсэн хаягийн эхэнд офсет нэмэх боломжийг олгож, үүссэн хаяг дээр логик хийж, маскыг харгалзан үзэх боломжийг олгодог.

Үүний дараа түүний утгыг олж авахын тулд програм дээрх заагчийг хасах шаардлагатай болно.

2. ADC -ийн утгыг SPI -д бичнэ үү

Манипуляци нь адилхан бөгөөд энэ удаад бид ТМХ -аас хуваарилсан хаягаар буухын тулд mmap -ийг хасах болно. SPI -д бичихдээ техникийн баримт бичигт adc -ийн утгыг +1 хаягаар бичих ёстойг зааж өгсөн болно.

"*(h2p_lw_spi_addr+1) = ((0x1 << 12) | *h2p_lw_adc_addr);"

Энэхүү заавар нь SPI -д бичих боломжийг танд олгоно. Үнэхээр бит 4, тэгэхээр 1 << 12 бол SPI -ийг идэвхжүүлэх боломжийг олгодог бит юм. Логик OR -ийн тусламжтайгаар бид идэвхжүүлэх бит болон ADC -ийн утгыг SPI -д өгдөг.

Алхам 9: Картнаас ADC -ийг дижитал хэлбэрээр олж авах

Картнаас ADC -ийг дижитал хэлбэрээр олж авах
Картнаас ADC -ийг дижитал хэлбэрээр олж авах
Картнаас ADC -ийг дижитал хэлбэрээр олж авах
Картнаас ADC -ийг дижитал хэлбэрээр олж авах
Картнаас ADC -ийг дижитал хэлбэрээр олж авах
Картнаас ADC -ийг дижитал хэлбэрээр олж авах
Картнаас ADC -ийг дижитал хэлбэрээр олж авах
Картнаас ADC -ийг дижитал хэлбэрээр олж авах

Юуны өмнө та компьютерынхаа Ethernet IP хаягийг Control Panel -> Network -> Card Parmesals ашиглан тохируулах хэрэгтэй болно. Картны интерфэйс, өмч, ipv4 хаягийг сонгоод тогтмол IP, маск гэх мэтийг оруулна уу.

Дараа нь картыг цахилгаан залгуур талаас микро USB кабелиар холбоно уу. Quartus програмистыг нээж, экспортыг эхлүүлнэ үү. Картыг унтраасны дараа энэхүү залилан хийх болно.

Энэ удаад Ethernet үүрний хажууд холбогдохын тулд микро USB залгуур кабелийг солино уу. Одоо Putty -ийн тусламжтайгаар картанд цуваа холбоосоор холбогдох шаардлагатай болно. Тохиргоо нь зурган дээр харагдаж байгаа бөгөөд COM5 -ийг COM -ээр сольж, дараа нь төхөөрөмжийн менежерээс олж болох дугаарыг (цонхны лого дээр хулганы баруун товчийг дарж нээнэ үү) гэсэн санаа байна.

Enter дарна уу, та холбогдсон байна.

Төслийг дахин эхлүүлэх мэдээлэл: - Карттай тохирох ethernet ip -ийг засах - Картыг асаах, асаах бүрдээ картанд оруулсан төслийг квартусын доор "програм" -тай хамт оруулах шаардлагатай. Үүнийг микро USB портоор хийдэг - Хөтөлбөрийн үр дүнг харуулахын тулд бид илүү их USB ашигладаг боловч UART - Цуврал COM5 (эсвэл 6 цагны gestinnaire периф) тохируулсан шаваасаар карт руу холбогдоно уу. - Нууц үг тохируулах (passwd) - Ifconfig ethxx IPchoice -ийн IP хаягийг тохируулах (IP -ийн хувьд PC -ийн хувьд) - Qsys -ийн дагуу толгойг терминал суулгасан (PATH экспортлох) үүсгэ - make - scp l exec газрын зураг - програмыг шаваас дор гүйцэтгэнэ

Алхам 10: FFT тооцоо

FFT тооцоо
FFT тооцоо

C програмдаа Fast Fourier Transform -ийг авахын тулд бид Mark Borgerding: Kiss FFT -ийн бичсэн номын санг ашиглах болно. Та номын санг эндээс татаж авах боломжтой: https://kissfft.sourceforge.net/. Дохионы эффектийг өөрчлөх, ашиглахын тулд дохио дээр FFT ашиглах шаардлагатай. Энэ нь дохионы спектрийг харуулах үүргийг гүйцэтгэдэг.

Таны C програмын эхний алхам бол FFT -ийн үр дүнг хадгалахын тулд санах ой хуваарилах явдал юм. Санах ойн хэмжээ нь FFT -ийг тооцоолох цэгийн тооноос хамаарна. Илүү их оноо авах тусам FFT илүү ихийг хийх болно. Гэсэн хэдий ч програм удаан ажиллах бөгөөд илүү их санах ой ашиглах болно. Та kiss_fft функцээс функцийн оролт ба гаралт (cx_in ба cx_out) гэсэн хоёр массивыг авах болно гэдгийг анхаарна уу.

Манай массив FFT -ийн шинэ утгуудаар дүүрсэний дараа, өөрөөр хэлбэл r = Win - 1 байхад бид FFT -ийг боловсруулж байна. Сөрөг хэсэг ба эерэг хэсгийн хооронд тэгш хэм байдаг тул дэлгэцийн хувьд бид зөвхөн спектрийн эерэг хэсгийг л харуулдаг.

Хэвтээ тэнхлэгийн хувьд үндсэн давтамжийн оргилуудыг ялгахын тулд оргил утгуудыг 100*өндөр/(өндөр²) -ээр бууруулж байна.

Бид ADC утгыг унших давтамжийг тодорхойлохын тулд usleep системийн дуудлагыг ашиглаж байна. Энэ давтамжийг одоогоор 1, 5 Гц давтамжтайгаар тохируулсан байна.

Алхам 11: FFT -ийг харуулах

FFT -ийг харуулж байна
FFT -ийг харуулж байна
FFT -ийг харуулж байна
FFT -ийг харуулж байна

Adafruit TFT LCD дэлгэц дээрх жишээн дээр үндэслэн эндээс үзнэ үү: https://www.terasic.com/downloads/cd-rom/de0-nano-s… бид удирдах зөвлөлийнхөө NIOS-ийг програмчилсан бөгөөд ингэснээр тэр унших боломжтой болно. ADC утга.

ADC бүртгэлийг NIOS ба HPS хооронд хуваалцдаг, учир нь ADC утгыг NIOS дэлгэц дээр FFT -ийг харуулах бөгөөд ижил утгуудыг SPI дээр бичээд самбараас гаргаад эцэст нь хөрвүүлэх болно. ижил төстэй дохио авахын тулд DAC -ээс авна уу.

Алхам 12: Чуулган

Чуулган
Чуулган

Бид бараг дуусч байна! Төслийн хэсэг бүрийг (оролтын хэлхээ, гаралтын хэлхээ ба самбар) угсрах шаардлагатай болно. Quartus төслийн дагуу зүү засах хэсгүүдийг холбох хэрэгтэй.

  1. Оролтын хэлхээ нь микрофоноор авсан аудио дохиог олшруулж, шүүж, солино.
  2. Карт дээр байгаа С програм нь өмнө нь үзсэн шиг ADC -ийн утгыг уншиж, үүнийг ТХХ дээр бичих бөгөөд ингэснээр бид картын GPIO дээрх утгыг сэргээх боломжтой болно.
  3. Дараа нь SPI -ийн GPIO гаралт нь манай DAC -ийн декодчилсон мэдээллийг дамжуулж, чанга яригч руу очихын тулд гүйлгэж олшруулна.

Алхам 13: Дууны эффектүүд

Дууны эффект
Дууны эффект
Дууны эффект
Дууны эффект

Үлдэх цорын ганц алхам бол дууны эффект юм.

Боломжит үр нөлөө нь:

  • Өндөр давтамжийн шүүлтүүр
  • Бага давтамжийн шүүлтүүр

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

Алхам 14: [Нэмэлт] Дуулга хийх

[Нэмэлт] Дуулга хийх
[Нэмэлт] Дуулга хийх
[Нэмэлт] Дуулга хийх
[Нэмэлт] Дуулга хийх
[СОНГОЛТТОЙ] Дуулга хийх
[СОНГОЛТТОЙ] Дуулга хийх

Энд бид төслийн хамгийн гарын авлагын үе шатанд байна.

  1. Эхлээд бид малгайны 3D хэвлэсэн өөр өөр хэсгүүдийг наажээ.
  2. Наалдамхай хэсгүүдийн хоорондох зайг нөхөхийн тулд 3D үзэг ашиглан өнгөлгөө нэмэв.
  3. Бид үзэг болон малгайгаар дүүргэсэн хөндлөн огтлолыг илүү өнгөлсөн бөгөөд ингэснээр зураг дараа нь сайн хадгалагдана.
  4. Бид дуулгыг 2 давхаргаар будсан: Эхнийх нь антрацитын хар өнгөтэй, ойрхон, хоёрдугаарт нь ногоон өнгөтэй, дараа нь бараан ногоон өнгөтэй болно.
  5. Эцэст нь бид дуулганы хажуу талд сургуулийнхаа логог хэвлэв

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