Spartan Voice Changer սաղավարտ. 14 քայլ (նկարներով)
Spartan Voice Changer սաղավարտ. 14 քայլ (նկարներով)
Anonim
Spartan Voice Changer սաղավարտ
Spartan Voice Changer սաղավարտ
Spartan Voice Changer սաղավարտ
Spartan Voice Changer սաղավարտ

Բարեւ Ձեզ! Մենք Սորբոնի համալսարանի պոլիտեխնիկական դպրոցի 4 ուսանողներից բաղկացած թիմ ենք.

  • Լուի Բուխերտ
  • Բիլալ Մելեհի
  • Բաո Թին Պիոտ
  • Մարկո Լոնգեպե

Այս նախագիծն իրականացվում է մեր ուսումնասիրությունների շրջանակներում և նպատակ ունի ձեռք բերել մի շարք գործիքներ, ինչպես նաև ցուցադրել մեր տեսական նվաճումները:

Հայտնի առարկան ստանում է սաղավարտի տեսք, որը նման է որոշակի տեսախաղի հերոսի, որի անունը կկորչի: Դիզայնի համար մենք ունենք նաև էկրան, որը ցուցադրում է բարձրախոսից դուրս եկող աուդիո ազդանշանի Ֆուրյեի փոխակերպումը: Այս ականջակալի նպատակն է իրական ժամանակում փոխել օպերատորի ձայնը `օգտագործելով մի շարք ընտրելի էֆեկտներ:

Կրթական նպատակներ.

  • Ձայնագրեք ձայնը խոսափողից
  • Ուժեղացնել, զտել, թվայնացնել ազդանշանը
  • Իրականացնել ազդանշանի FFT- ը
  • Fույց տվեք այս FFT- ը էկրանին
  • Ազդանշանի սինթեզ
  • Բարձրախոսից ձայն հանեք
  • Իրականացրեք էֆեկտներ աուդիո ձայնի վրա (արձագանք, արձագանք և այլն …)

Այժմ, երբ մենք դրեցինք նախապատմությունը և ներկայացրինք նախագիծը, ժամանակն է ձեռքը վերցնել դրան:

Քայլ 1: Պահանջներ 1/3 - Սարքավորումներ

Պահանջներ 1/3 - Սարքավորումներ
Պահանջներ 1/3 - Սարքավորումներ

Ձեր սաղավարտը հաջողությամբ կառուցելու համար մեզ անհրաժեշտ կլինի սարքավորում սարքը գործարկելու համար:

  • DE0-Nano-SoC զարգացման խորհուրդ Terasic + Adafruit TFT LCD էկրանով (Arduino)
  • Մատչելիություն սաղավարտ պատրաստելու համար 3D տպիչին (եթե համալսարանի ուսանող եք, մոտենալով ձեր համալսարանին, ոմանք լաբորատորիաներ ունեն ուսանողների համար մատչելի)
  • Ինտերնետ կապով և նվազագույն կապով համակարգիչ (USB, Ethernet): Ձեր համակարգիչը նույնպես պետք է ունենա հզոր պրոցեսոր, քանի որ Qsys- ում ծրագրեր կազմելը շատ ժամանակ է պահանջում:
  • (Պարտադիր չէ) Տպիչ, որը տպագիր տպատախտակները (PCB) պատրաստում է Gerber ֆայլերից `միացման չափը նվազեցնելու համար + զոդման սարք` PCB- ի բաղադրիչները տեղադրելու համար:
  • (Խստորեն խորհուրդ է տրվում). Լավ սուրճ `վայելելու ձեր աշխատանքը մեր Instructable- ի հետ:)

Քայլ 2. Պահանջներ 2/3 - բաղադրիչներ ձեր շղթայի համար

Պահանջներ 2/3 - բաղադրիչներ ձեր շրջանի համար
Պահանջներ 2/3 - բաղադրիչներ ձեր շրջանի համար
Պահանջներ 2/3 - բաղադրիչներ ձեր շրջանի համար
Պահանջներ 2/3 - բաղադրիչներ ձեր շրջանի համար
Պահանջներ 2/3 - բաղադրիչներ ձեր շրջանի համար
Պահանջներ 2/3 - բաղադրիչներ ձեր շրջանի համար

Ահա ձեր միացման համար անհրաժեշտ բաղադրիչները.

  • Texas Instrument LM386 AB դասի աուդիո ուժեղացուցիչ
  • Հացի տախտակ
  • Արական-Արական, Արական-իգական մալուխների հավաքածու
  • LM358P Թվային-անալոգի փոխարկիչ (DAC)
  • Խոսնակ
  • Փոքր խոսափող, որն օգտագործվում է անալոգային շղթայում
  • 1kOhm- ից 220kOhm դիմադրիչների խաղային հավաքածու
  • Կոնդենսատոր 1.5nF
  • Կոնդենսատոր 50nF
  • Կոնդենսատոր 100nF
  • Կոնդենսատոր 100uF
  • Կոնդենսատոր 220f
  • x4 Կոնդենսատորներ 10uF

Քայլ 3. Պահանջներ 3/3 - Softwareրագրակազմ

Պահանջներ 3/3 - Softwareրագրային ապահովում
Պահանջներ 3/3 - Softwareրագրային ապահովում
Պահանջներ 3/3 - Softwareրագրային ապահովում
Պահանջներ 3/3 - Softwareրագրային ապահովում

Վերջին, բայց ոչ պակաս կարևոր, ձեզ հարկավոր է ծրագրակազմ.

  • Quartus 15.1: Lite տարբերակ
  • A C կոմպիլյատոր (օրինակ ՝ gcc)
  • Altium PCB դիզայնի համար
  • Altera- ի SoC- ն ներկառուցված փաթեթ է ՝ SoC քարտեզի հետ հաղորդակցվելու համար
  • Մածիկ

Քայլ 4: Մուտքային միացում

Մուտքային միացում
Մուտքային միացում
Մուտքային միացում
Մուտքային միացում
Մուտքային միացում
Մուտքային միացում
Մուտքային միացում
Մուտքային միացում

Եկեք կառուցենք շրջանը: Օգտագործեք սխեմայի վերը նկարը, որպեսզի այն հավաքեք ձեր տախտակի վրա: Դուք նաև կտեսնեք BreadBoard- ի նկարը և ներսում գտնվող միացումը `տեսնելու, թե ինչպես են կապում կապերը: Ամբողջ միացումը սնուցվում է 5 Վ ուղղակի հոսանքով (DC): Դրա համար կարող եք օգտագործել 5V մարտկոց ՝ USB-B փոխարկիչով կամ գործառույթի գեներատորով:

Որոշ հիշեցումներ.

  • 5 Վ էլեկտրամատակարարումը և գետինը միացված են տախտակի առանձին հորիզոնական գծերի վրա
  • Եթե ցանկանում եք զուգահեռաբար միացնել 2 բաղադրիչ, դրանք դրեք տախտակի ընդհանուր գծի մեջ
  • Եթե ցանկանում եք միացնել 2 սերիական բաղադրիչ, բաղադրիչները պետք է միայն մեկ կապում տախտակի ընդհանուր տողում:

Մի հապաղեք դիտել նվիրված ձեռնարկը, թե ինչպես օգտագործել հացահատիկը և դրա վրա միացում միացնել: Նաև մի մոռացեք ուշադիր կարդալ LM358P աուդիո ուժեղացուցիչի քորոցային դիրքը (տես վերևի նկարը)

Քայլ 5: Ելքային շղթա

Ելքային շղթա
Ելքային շղթա
Ելքային շղթա
Ելքային շղթա
Ելքային շղթա
Ելքային շղթա
Ելքային շղթա
Ելքային շղթա

Մոտավորապես նույն հրահանգները, ինչ Քայլ 4. Չորս մուտքագրումները ՝ SDI, ոչ CS, SCK, ոչ LDAC ձեր DE0-Nano-Soc Board- ից են: Հետագայում կտեսնենք, թե ինչպես են դրանք ստեղծվում:

Մի մոռացեք ուշադիր կարդալ LM386 Աուդիո ուժեղացուցիչի քորոցների դիրքերը (տես վերը նկարը)

Քայլ 6

[ԸՆՏՐՈԹՅՈ]Ն] Տպագիր շղթայի բորադի և զոդման բաղադրիչների ստեղծում
[ԸՆՏՐՈԹՅՈ]Ն] Տպագիր շղթայի բորադի և զոդման բաղադրիչների ստեղծում
[ԸՆՏՐՈԹՅՈ]Ն] Տպագիր շղթայի բորադի և զոդման բաղադրիչների ստեղծում
[ԸՆՏՐՈԹՅՈ]Ն] Տպագիր շղթայի բորադի և զոդման բաղադրիչների ստեղծում
[ԸՆՏՐՈԹՅՈ]Ն] Տպագիր շղթայի բորադի և զոդման բաղադրիչների ստեղծում
[ԸՆՏՐՈԹՅՈ]Ն] Տպագիր շղթայի բորադի և զոդման բաղադրիչների ստեղծում

Եթե դուք բախտավոր եք, որ ունեք տպատախտակների տպիչ կամ կարող եք օգտագործել այն, մենք պատրաստվում ենք ստեղծել մեր տպագիր տպատախտակները (PCB): Նշենք, որ այս քայլը պարտադիր չէ: Այս քայլը բաղկացած է միայն ձեր սխեման հացաթղթից PCB տեղափոխելու համար:

Ձեզ հարկավոր կլինեն այս 2 GERBER ֆայլերը:

Այս ֆայլերը պատրաստված են Altium- ի վրա: Օգտագործեք դրանք ձեր PCB տպիչի ծրագրակազմում `ձեր PCB տպելու համար: Ձեր PCB- ն ստանալուց հետո համոզվեք, որ ձեր PCB- ն մաքուր է և հետքերը ճիշտ տպված են:

Այժմ գալիս է իրական գործարքը. Oldոդում: Վերոնշյալ 2 նկարները PCB- ի սխեմայի քարտեզն են: Յուրաքանչյուր բաղադրիչ ունի անուններ (R6, C4, MK1 և այլն): 4 -րդ և 5 -րդ քայլերի նկարները ցույց են տալիս բաղադրիչների պարամետրերը (Դիմադրություն, հաղորդունակություն..): Տեղադրեք յուրաքանչյուր բաղադրիչ ձեր տախտակից մինչև PCB ՝ ըստ դրանց անունների:

Երբ ամեն ինչ կպցրեք ձեր եռակցման երկաթով, յուրաքանչյուր բաղադրիչ փորձարկեք վոլտմետրով `ստուգելու համար, արդյոք առկա է կարճ միացում:

Քայլ 7: SoC- ի կարգավորում

SoC կարգավորում
SoC կարգավորում
SoC կարգավորում
SoC կարգավորում

Ինչ վերաբերում է SoC- ի կարգավորմանը, ապա ձեզ հարկավոր է տերմինալում գործարկել SoC- ի ներկառուցված փաթեթում ներառված որոշ հրամաններ և սցենարներ: Դա անելու համար ձեզ հարկավոր է ավելացնել $ PATH: PATH- ն օգտագործվում է տերմինալի ներսում ՝ հրամանը գործարկելիս ֆայլ որոնել ճանապարհով տրված գրացուցակներում: Դա անելու համար մուտքագրեք հետևյալ հրամանի տողը.

արտահանել PATH =/cygdrive/c/altera_lite/15.1/quartus/sopc_builder/bin: $ PATH

Այնուհետև մուտքագրեք հրամանի տողը ՝ sof ֆայլից վերնագրեր ստեղծելու համար: Դուք ստանում եք sof ֆայլը ՝ կազմելով ձեր նախագիծը Quartus- ում: Դա անելու համար մուտքագրեք ՝./generate_header:

Քայլ 8. Cրագրավորում C HPS

Hրագրավորում C HPS
Hրագրավորում C HPS

Այս մասում մենք պետք է 2 բան գիտակցենք, այն է `կարդալ ADC- ի արժեքը և գրել SPI- ում:

1. Կարդացեք ADC- ի արժեքը

Հիշողության հասցեն, որում ADC- ն է պարունակվում, ուղղակիորեն հասանելի չէ, իրականում քարտի վրա առկա linux համակարգը ստեղծում է հիշողության վերացականություն: ADC հասցեն իսկապես մուտք գործելու համար մենք կօգտագործենք mmap գործառույթը:

"h2p_lw_spi_addr = վիրտուալ_բազա + ((երկար չստորագրված) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (երկար չստորագրված) (HW_REGS_MASK));"

Այս հրահանգը թույլ է տալիս բազային հասցեի սկզբում ավելացնել օֆսեթ, որը կհասնի ADC- ի համար հատկացված հիշողության հասցեին և ստացված հասցեում կատարել տրամաբանություն ԵՎ հաշվի առնել քողարկումը:

Դրանից հետո միայն անհրաժեշտ կլինի ծրագրի ցուցիչն ուղղորդել դրա արժեքը ստանալու համար:

2. Գրեք ADC- ի արժեքը SPI- ում

Մանիպուլյացիան նույնական է, այս անգամ մենք mmap- ին տալիս ենք փոխհատուցում SPI- ի կողմից հատկացված հասցեով վայրէջք կատարելու համար: SPI- ում գրելիս տեխնիկական փաստաթղթերը սահմանում են, որ դուք պետք է +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 հասցեի ethernet ինտերֆեյսը և մուտքագրեք ֆիքսված IP, դիմակ և այլն…

Հաջորդը, միացրեք քարտը հոսանքի վարդակից միկրո USB մալուխի հետ: Բացեք Quartus ծրագրավորողը և գործարկեք արտահանումը: Այս մանիպուլյացիան կվերականգնվի քարտի յուրաքանչյուր անջատումից հետո:

Փոխեք միկրո USB միակցիչի մալուխը ՝ այս անգամ Ethernet վարդակի կողքին միանալու համար: Այժմ, Putty- ի հետ անհրաժեշտ կլինի միանալ քարտին սերիական հղումով: Կոնֆիգուրացիան տեսանելի է լուսանկարներում, գաղափարն այն է, որ COM5- ը փոխարինվի COM- ով, որին հաջորդում է այն համարը, որը կարող եք գտնել ձեր սարքի կառավարիչում (աջ սեղմեք պատուհանների պատկերանշանի վրա `այն բացելու համար):

Սեղմեք enter, դուք միացված եք:

Projectրագրի վերագործարկման մասին տեղեկություններ. Դա արվում է միկրո- USB պորտի միջոցով. Theրագրի արդյունքը ցուցադրելու համար մենք օգտագործում ենք ավելի շատ միկրո USB, բայց UART - putեփամածիկով, որը կազմաձևված է սերիական COM5- ի համար (կամ 6 ժամացույցի հղիություն) Միացեք քարտին: - Սահմանել գաղտնաբառ (passwd) - Սահմանել IP հասցե ifconfig ethxx IPchoice (IP- ն ոչ այնքան հեռու, որքան ԱՀ -ն) - Ստեղծեք վերնագիր ըստ Qsys- ի `տեղադրված տերմինալով (արտահանման ուղի) - կատարել քարտեզ - ծեփամածիկով կատարել prog

Քայլ 10: FFT հաշվարկ

FFT հաշվարկ
FFT հաշվարկ

Մեր C ծրագրում Fast Fourier Transform- ը ստանալու համար մենք կօգտագործենք Մարկ Բորգերդինգի գրած գրադարանը ՝ Kiss FFT: Գրադարանը կարող եք ներբեռնել այստեղ ՝ https://kissfft.sourceforge.net/: Ազդանշանի վրա FFT կիրառելը անհրաժեշտ է ազդանշանային էֆեկտները փոփոխելու և կիրառելու համար: Այն կարող է ծառայել նաև ազդանշանի սպեկտրի ցուցադրմանը:

Ձեր C ծրագրի առաջին քայլը բաղկացած է FFT արդյունքը պահելու համար հիշողություն հատկացնելուց: Հիշողության չափը կախված է FFT- ի հաշվարկման համար օգտագործվող կետերի քանակից: Որքան շատ միավորներ ունենաք, այնքան ավելի ճշգրիտ կլինի FFT- ը: Այնուամենայնիվ, ծրագիրը ավելի դանդաղ կաշխատի և ավելի շատ հիշողություն կկիրառի: Նկատի ունեցեք, որ kiss_fft գործառույթից կստանաք երկու զանգված ՝ գործառույթի մուտքն ու ելքը (cx_in և cx_out)

Երբ մեր զանգվածը լցվում է նոր FFT արժեքներով, այսինքն երբ r = Win - 1, մենք մշակում ենք FFT- ը: Ինչ վերաբերում է ցուցադրմանը, մենք ցուցադրում ենք միայն սպեկտրի դրական մասը, քանի որ կա բացասական և դրական մասի համաչափություն:

Ինչ վերաբերում է հորիզոնական առանցքին, մենք նվազեցնում ենք գագաթնակետի արժեքները 100*բարձրությամբ ((բարձրություն²) `հիմնական հաճախականությունների գագաթները տարբերելու համար:

Մենք օգտագործում ենք usleep համակարգի կանչը `ADC արժեքների համար ընթերցման հաճախականություն սահմանելու համար: Այս հաճախականությունը ներկայումս սահմանվում է 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- ի արժեքները կօգտագործվեն FFT- ը NIOS- ի էկրանին ցուցադրելու համար, և այդ նույն արժեքները կգրվեն SPI- ում, որպեսզի դուրս գան տախտակից և վերջապես փոխարկվեն: DAC- ի կողմից `անալոգային ազդանշան ստանալու համար:

Քայլ 12: Հավաքում

Ժողով
Ժողով

Մենք գրեթե ավարտված ենք: Դուք պետք է հավաքեք պրոյեկտորի յուրաքանչյուր մաս (մուտքի միացում, ելքային միացում և տախտակ): Համոզվեք, որ մասերը միացրեք ուղղիչ կապումներին ՝ ըստ Quartus Project- ի:

  1. Մուտքային սխեման կուղարկի խոսափողի կողմից գրավված աուդիո ազդանշանը, ուժեղացված, զտված և անջատված:
  2. Քարտի վրա առկա C ծրագիրը կկարդա ADC- ի արժեքները, ինչպես նախկինում տեսել ենք, և այն կգրի SPI- ում, որպեսզի կարողանանք վերականգնել քարտի GPIO- ի արժեքը:
  3. Այնուհետև SPI- ի ելքային GPIO- ն կփոխանցի այն տեղեկատվությունը, որը կվերծանվի մեր DAC- ի կողմից և կամրապնդվի `աշխատելով հասնել բարձրախոսին:

Քայլ 13: Ձայնային էֆեկտներ

Ձայնային էֆեկտներ
Ձայնային էֆեկտներ
Ձայնային էֆեկտներ
Ձայնային էֆեկտներ

Մնում է միայն ձայնային էֆեկտները:

Մատչելի էֆեկտներն են.

  • Բարձր հաճախականության ֆիլտր
  • Lowածր հաճախականության ֆիլտր

Կոճակի շնորհիվ կարող եք անցնել էֆեկտների միջև: Այս կոճակը կփոխի փոփոխական մեր C ծրագրում, այնպես որ կարող է կիրառել ճիշտ էֆեկտը:

Քայլ 14: [ԸՆՏՐՈԹՅՈ]Ն] Սաղավարտ պատրաստելը

[ԸՆՏՐՈԹՅՈ]Ն] Սաղավարտ պատրաստելը
[ԸՆՏՐՈԹՅՈ]Ն] Սաղավարտ պատրաստելը
[ԸՆՏՐՈԹՅՈՆ] Սաղավարտ պատրաստելը
[ԸՆՏՐՈԹՅՈՆ] Սաղավարտ պատրաստելը
[ԸՆՏՐՈԹՅՈ]Ն] Սաղավարտ պատրաստելը
[ԸՆՏՐՈԹՅՈ]Ն] Սաղավարտ պատրաստելը

Այստեղ մենք գտնվում ենք ծրագրի առավել ձեռքով քայլում.

  1. Սկզբում մենք սոսնձեցինք սաղավարտի 3D տպված տարբեր մասերը:
  2. Սոսնձված կտորների միջև բացերը լրացնելու համար մենք ավելացրեցինք ավարտ ՝ օգտագործելով 3D գրիչ:
  3. Մենք փայլեցրինք գրիչով և սաղավարտով լցված միջանցքները ավելի ընդհանրապես, որպեսզի նկարը լավ պահի հետո:
  4. Մենք սաղավարտը ներկեցինք 2 շերտով.
  5. Վերջապես մենք տպեցինք մեր դպրոցի պատկերանշանը Սաղավարտի կողքին

Խորհուրդ ենք տալիս: