Სარჩევი:

სპარტანული ხმის ჩამცვლელი ჩაფხუტი: 14 ნაბიჯი (სურათებით)
სპარტანული ხმის ჩამცვლელი ჩაფხუტი: 14 ნაბიჯი (სურათებით)

ვიდეო: სპარტანული ხმის ჩამცვლელი ჩაფხუტი: 14 ნაბიჯი (სურათებით)

ვიდეო: სპარტანული ხმის ჩამცვლელი ჩაფხუტი: 14 ნაბიჯი (სურათებით)
ვიდეო: ქართველი სპარტანელის გამარჯვება ნიუ-ჯერსიში 2024, ნოემბერი
Anonim
სპარტანული ხმის ჩამცვლელი ჩაფხუტი
სპარტანული ხმის ჩამცვლელი ჩაფხუტი
სპარტანული ხმის ჩამცვლელი ჩაფხუტი
სპარტანული ხმის ჩამცვლელი ჩაფხუტი

გამარჯობა! ჩვენ ვართ სორბონის უნივერსიტეტის პოლიტექნიკური სკოლის 4 სტუდენტის გუნდი:

  • ლუი ბუხერტი
  • ბილალ მელეხი
  • ბაო თინ პიოტი
  • მარკო ლონგელე

ეს პროექტი ხორციელდება ჩვენი კვლევების ფარგლებში და მიზნად ისახავს მრავალი ინსტრუმენტის ხელში ჩაგდებას, ასევე ჩვენი თეორიული მიღწევების დემონსტრირებას.

ცნობილი ობიექტი იღებს მუზარადის გარეგნობას, რომელიც წააგავს გარკვეული ვიდეო თამაშის გმირს, რომლის სახელი დაიკარგება. დიზაინის მხრივ ჩვენ ასევე გვაქვს ეკრანი, რომელიც აჩვენებს დინამიკიდან გამოსული აუდიო სიგნალის ფურიეს გარდაქმნას. ამ ყურსასმენის დანიშნულებაა შეცვალოს გადამზიდავის ხმა რეალურ დროში რიგი შერჩეული ეფექტების გამოყენებით.

საგანმანათლებლო მიზნები:

  • გადაიღეთ ხმა მიკროფონიდან
  • სიგნალის გაძლიერება, გაფილტვრა, ციფრიზაცია
  • გააცნობიერე სიგნალის FFT
  • აჩვენეთ ეს FFT ეკრანზე
  • სიგნალის სინთეზი
  • ამოიღეთ ხმა დინამიკიდან
  • გააცნობიერეთ ეფექტები აუდიო ბგერაზე (რევერბერაცია, ექო და სხვა …)

ახლა, როდესაც ჩვენ დავყავით ფონი და წარმოვადგინეთ პროექტი, დროა ხელი მოკიდოთ მას!

ნაბიჯი 1: მოთხოვნები 1/3 - აპარატურა

მოთხოვნები 1/3 - აპარატურა
მოთხოვნები 1/3 - აპარატურა

იმისათვის, რომ წარმატებით ავაშენოთ თქვენი მუზარადი, ჩვენ დაგვჭირდება გარკვეული ტექნიკა მოწყობილობის გასაშვებად.

  • DE0-Nano-SoC განვითარების დაფა Terasic + Adafruit TFT LCD ეკრანზე (Arduino)
  • 3D პრინტერზე წვდომა ჩაფხუტის გასაკეთებლად (თუ თქვენ ხართ უნივერსიტეტის სტუდენტი, მიუახლოვდით თქვენს უნივერსიტეტს, ზოგს აქვს ლაბორატორიები სტუდენტებისთვის)
  • კომპიუტერი ინტერნეტით და მინიმალური კავშირით (USB, Ethernet). თქვენს კომპიუტერს ასევე უნდა ჰქონდეს ძლიერი პროცესორი, რადგან Qsys– ზე პროგრამების შედგენას დიდი დრო სჭირდება.
  • (არ არის საჭირო) პრინტერი, რომელიც ამზადებს დაბეჭდილ დაფებს (PCB) გერბერის ფაილებიდან, რათა შეამციროს მიკროსქემის ზომა + გამაგრილებელი რკინა კომპონენტების PCB- ზე დასაყენებლად.
  • (მკაცრად გირჩევთ): კარგი ყავა, რომ ისიამოვნოთ თქვენი მუშაობით ჩვენი ინსტრუქციით:)

ნაბიჯი 2: მოთხოვნები 2/3 - კომპონენტები თქვენი სქემისთვის

მოთხოვნები 2/3 - კომპონენტები თქვენი სქემისთვის
მოთხოვნები 2/3 - კომპონენტები თქვენი სქემისთვის
მოთხოვნები 2/3 - კომპონენტები თქვენი სქემისთვის
მოთხოვნები 2/3 - კომპონენტები თქვენი სქემისთვის
მოთხოვნები 2/3 - კომპონენტები თქვენი სქემისთვის
მოთხოვნები 2/3 - კომპონენტები თქვენი სქემისთვის

აქ არის კომპონენტები, რომლებიც საჭიროა თქვენი სქემისთვის:

  • Texas Instrument LM386 AB კლასის აუდიო გამაძლიერებელი
  • პურის დაფა
  • მამაკაცი-კაცი, ქალი-კაბელების ნაკრები
  • LM358P ციფრული ანალოგის გადამყვანი (DAC)
  • სპიკერი
  • მცირე მიკროფონი გამოიყენება ანალოგიურ წრეში
  • რეზისტორების ნაკრები 1 კმ -დან 220 კმ ოჰმ -მდე
  • კონდენსატორი 1.5nF
  • კონდენსატორი 50nF
  • კონდენსატორი 100nF
  • კონდენსატორი 100uF
  • კონდენსატორი 220uF
  • x4 კონდენსატორები 10uF

ნაბიჯი 3: მოთხოვნები 3/3 - პროგრამული უზრუნველყოფა

მოთხოვნები 3/3 - პროგრამული უზრუნველყოფა
მოთხოვნები 3/3 - პროგრამული უზრუნველყოფა
მოთხოვნები 3/3 - პროგრამული უზრუნველყოფა
მოთხოვნები 3/3 - პროგრამული უზრუნველყოფა

ბოლოს და ბოლოს, თქვენ დაგჭირდებათ პროგრამული უზრუნველყოფა:

  • Quartus 15.1: Lite ვერსია
  • C შემდგენელი (gcc მაგალითად)
  • ალტიუმი PCB დიზაინისთვის
  • Altera's SoC ჩამონტაჟებული კომპლექტი SoC რუქასთან კომუნიკაციისთვის

  • პუტი

ნაბიჯი 4: შეყვანის წრე

შეყვანის წრედი
შეყვანის წრედი
შეყვანის წრედი
შეყვანის წრედი
შეყვანის წრედი
შეყვანის წრედი
შეყვანის წრედი
შეყვანის წრედი

მოდით ავაშენოთ წრე. გამოიყენეთ სქემის ზემოთ მოყვანილი სურათი, რათა შეიკრიბოთ იგი თქვენს დაფაზე. თქვენ ასევე იხილავთ BreadBoard– ის სურათს და შიგნითა წრეს, რომ ნახოთ როგორ არის დაკავშირებული ქინძისთავები. მთელი წრე იკვებება 5V პირდაპირი დენით (DC). ამისათვის შეგიძლიათ გამოიყენოთ 5 ვ ბატარეა USB-B კონვერტორით ან ფუნქციის გენერატორით.

რამდენიმე შეხსენება:

  • 5V დენის წყარო და მიწა დაკავშირებულია პურის დაფის ცალკეულ ჰორიზონტალურ ხაზებზე
  • თუ გსურთ 2 კომპონენტის პარალელურად დაკავშირება, ჩადეთ ისინი პურის დაფის საერთო ხაზში
  • თუ გსურთ 2 სერიული კომპონენტის დაკავშირება, კომპონენტები უნდა იყოს მხოლოდ ერთი პინი დაფის საერთო ხაზში.

ნუ დააყოვნებთ უყუროთ ერთგულ გაკვეთილს, თუ როგორ გამოიყენოთ პურის დაფა და გააფართოვოთ წრე მასზე. ასევე არ დაგავიწყდეთ ყურადღებით წაიკითხოთ LM358P აუდიო გამაძლიერებლის პინ -პოზიცია (იხ. სურათი ზემოთ)

ნაბიჯი 5: გამოყვანის წრე

გამოყვანის წრედი
გამოყვანის წრედი
გამოყვანის წრედი
გამოყვანის წრედი
გამოყვანის წრედი
გამოყვანის წრედი
გამოყვანის წრედი
გამოყვანის წრედი

ზუსტად იგივე ინსტრუქცია, როგორც ნაბიჯი 4. ოთხი შეყვანა: SDI, არა CS, SCK, არა LDAC არის თქვენი DE0-Nano-Soc Board- დან. მოგვიანებით ვნახავთ, როგორ წარმოიქმნება ისინი.

არ დაგავიწყდეთ ყურადღებით წაიკითხოთ LM386 აუდიო გამაძლიერებლის პინ პოზიციები (იხ. სურათი ზემოთ)

ნაბიჯი 6: [სურვილისამებრ] ბეჭდური სქემის ბორადის შექმნა და შედუღების კომპონენტები

[სურვილისამებრ] ბეჭდური სქემის ბორადის შექმნა და შედუღების კომპონენტები
[სურვილისამებრ] ბეჭდური სქემის ბორადის შექმნა და შედუღების კომპონენტები
[სურვილისამებრ] ბეჭდური სქემის ბორადის შექმნა და შედუღების კომპონენტები
[სურვილისამებრ] ბეჭდური სქემის ბორადის შექმნა და შედუღების კომპონენტები
[სურვილისამებრ] ბეჭდური სქემის ბორადის შექმნა და შედუღების კომპონენტები
[სურვილისამებრ] ბეჭდური სქემის ბორადის შექმნა და შედუღების კომპონენტები

თუ გაგიმართლათ, რომ გქონდეთ მიკროსქემის პრინტერი ან შეძლოთ მისი გამოყენება, ჩვენ ვაპირებთ შევქმნათ ჩვენი საკუთარი ნაბეჭდი მიკროსქემის დაფა (PCB). გაითვალისწინეთ, რომ ეს ნაბიჯი არჩევითია. ეს ნაბიჯი მოიცავს მხოლოდ თქვენი მიკროსქემის გადატანას პურის დაფიდან PCB– ზე.

თქვენ დაგჭირდებათ ეს 2 GERBER ფაილი.

ეს ფაილები დამზადებულია Altium– ზე. გამოიყენეთ ისინი თქვენს PCB პრინტერის პროგრამულ უზრუნველყოფაზე, რათა დაბეჭდოთ თქვენი PCB. მას შემდეგ რაც მიიღებთ თქვენს PCB- ს, დარწმუნდით, რომ თქვენი PCB არის სუფთა და რომ ტრეკები სწორად არის დაბეჭდილი.

ახლა აქ მოდის ნამდვილი გარიგება: შედუღება. ზემოთ მოყვანილი 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 HPS

C HPS პროგრამირება
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- ით, ამიტომ ჩვენ SPI- ს მივცემთ როგორც აქტივაციის ბიტს, ასევე ADC- ს მნიშვნელობას.

ნაბიჯი 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– ით ჩანაცვლება, რასაც მოყვება ნომერი, რომელიც შეგიძლიათ ნახოთ თქვენი მოწყობილობის მენეჯერში (დააწკაპუნეთ მარჯვენა ღილაკით Windows– ის ლოგოზე გასახსნელად).

დააჭირეთ Enter, თქვენ დაკავშირებული ხართ.

ინფორმაცია პროექტის გადატვირთვისთვის: - ბარათის შესაბამისი ethernet ip- ის დართვა - ჩართეთ ბარათი, ყოველ ჯერზე, როდესაც ჩართავთ დენს, აუცილებელია ბარათში შედგენილი პროექტი "პროგრამით" კვარტუსის ქვეშ დააყენოთ. ეს კეთდება მიკრო USB პორტის საშუალებით - პროგრამის შედეგის ჩვენების მიზნით ჩვენ ვიყენებთ უფრო მიკრო USB- ს, მაგრამ UART- ს - სერიული COM5- ის კონფიგურაციით (ან 6 საათიანი gestinnaire periph) დაკავშირება ბარათთან. - დააყენეთ პაროლი (passwd) - დააყენეთ IP მისამართი ifconfig ethxx IPchoice (IP არ არის შორს კომპიუტერის ეთნიკურიდან) - შექმენით სათაური Qsys– ის შესაბამისად ტერმინალით (ექსპორტის გზა) - გააკეთეთ - scp l exec in რუკა - შეასრულოს putty prog

ნაბიჯი 10: FFT გამოთვლა

FFT გაანგარიშება
FFT გაანგარიშება

იმისათვის, რომ მივიღოთ სწრაფი Fourier Transform ჩვენს C პროგრამაში, ჩვენ გამოვიყენებთ მარკ ბორგერდინგის მიერ დაწერილ ბიბლიოთეკას: 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 მნიშვნელობები გამოყენებული იქნება FI– ის NIOS ეკრანზე გამოსაჩენად და იგივე მნიშვნელობები დაიწერება SPI– ში, რათა გამოვიდეს დაფაზე და საბოლოოდ გადაიყვანოს DAC– ს მიერ ანალოგიური სიგნალის მისაღებად.

ნაბიჯი 12: შეკრება

შეკრება
შეკრება

ჩვენ თითქმის დავასრულეთ! თქვენ დაგჭირდებათ პროჟეტის ყველა ნაწილის აწყობა (შესასვლელი წრე, გამომავალი წრე და დაფა). დარწმუნდით, რომ დააკავშირეთ ნაწილები Quartus პროექტის მიხედვით.

  1. შეყვანის წრე გამოგიგზავნით მიკროფონის მიერ გადაღებულ აუდიო სიგნალს, გაძლიერდება, გაფილტრული და ოფსეტურია.
  2. ბარათით წარმოდგენილი პროგრამა C წაიკითხავს ADC- ის მნიშვნელობებს, როგორც ადრე ვნახეთ და ჩაწერს SPI- ზე, რათა ჩვენ აღვადგინოთ ღირებულება ბარათის GPIO- ზე.
  3. შემდეგ SPI– ს გამომავალი GPIO გადასცემს ინფორმაციას, რომელიც გაიშიფრება ჩვენი DAC– ს მიერ და გაძლიერდება სპიკერის მისაღწევად გაშვებით.

ნაბიჯი 13: ხმოვანი ეფექტები

Ხმის ეფექტები
Ხმის ეფექტები
Ხმის ეფექტები
Ხმის ეფექტები

ერთადერთი ნაბიჯი არის ხმოვანი ეფექტები.

ხელმისაწვდომი ეფექტებია:

  • მაღალი სიხშირის ფილტრი
  • დაბალი სიხშირის ფილტრი

თქვენ შეგიძლიათ შეცვალოთ ეფექტები ღილაკის წყალობით. ეს ღილაკი ცვლის ცვლადს ჩვენს C პროგრამაში, ასე რომ მას შეუძლია გამოიყენოს სწორი ეფექტი.

ნაბიჯი 14: [სურვილისამებრ] ჩაფხუტის დამზადება

[სურვილისამებრ] ჩაფხუტის დამზადება
[სურვილისამებრ] ჩაფხუტის დამზადება
[სურვილისამებრ] ჩაფხუტის დამზადება
[სურვილისამებრ] ჩაფხუტის დამზადება
[სურვილისამებრ] ჩაფხუტის დამზადება
[სურვილისამებრ] ჩაფხუტის დამზადება

აქ ჩვენ ვართ პროექტის ყველაზე სახელმძღვანელო ეტაპზე:

  1. პირველ რიგში ჩვენ დავამაგრეთ მუზარადის სხვადასხვა 3D ბეჭდვით ნაწილები.
  2. წებოვან ნაჭრებს შორის ხარვეზების შესავსებად ჩვენ დავამატეთ დასრულება 3D კალმის გამოყენებით.
  3. ჩვენ გავაპრიალეთ კალამი და მუზარადი სავსე შუალედები უფრო ზოგადად, რომ ნახატი კარგად შემორჩეს შემდეგ.
  4. ჩვენ ჩაფხუტი დავხატეთ 2 ფენად: პირველი ანტრაციტ შავ ფერში, ახლოდან და მეორე პირველადი მწვანე მომდევნოდან, რათა მუქი მწვანე შეფერილობა მიიღოს.
  5. დაბოლოს, ჩვენ დავბეჭდეთ ჩვენი სკოლის ლოგო მუზარადის გვერდით

გირჩევთ: