Mündəricat:

Spartalı Səs dəyişdirən Dəbilqə: 14 Addım (Şəkillərlə birlikdə)
Spartalı Səs dəyişdirən Dəbilqə: 14 Addım (Şəkillərlə birlikdə)

Video: Spartalı Səs dəyişdirən Dəbilqə: 14 Addım (Şəkillərlə birlikdə)

Video: Spartalı Səs dəyişdirən Dəbilqə: 14 Addım (Şəkillərlə birlikdə)
Video: HALO INFINITE, MANTIS & EVA SPARTAN REVIEW !! 2024, Noyabr
Anonim
Spartalı səs dəyişdirici dəbilqə
Spartalı səs dəyişdirici dəbilqə
Spartalı səs dəyişdirici dəbilqə
Spartalı səs dəyişdirici dəbilqə

Salam! Sorbonna Universitetinin Politexnik Məktəbindən 4 tələbədən ibarət bir komandayıq:

  • Louis Buchert
  • Bilal Melehi
  • Bao Tinh Piot
  • Marko Longépé

Bu layihə tədqiqatlarımızın bir hissəsi olaraq həyata keçirilir və nəzəri nailiyyətlərimizi nümayiş etdirməklə yanaşı, bir çox vasitələri ələ almağı hədəfləyir.

Məşhur obyekt, adı itiriləcək müəyyən bir video oyunun qəhrəmanına bənzəyən bir dəbilqə görünüşü alır. Dizayn tərəfi üçün dinamikdən gələn səs siqnalının Fourier çevrilməsini göstərən bir ekrana sahibik. Bu qulaqlığın məqsədi bir sıra seçilmiş effektlərdən istifadə edərək daşıyıcının səsini real vaxtda dəyişdirməkdir.

Təhsil məqsədləri:

  • Səsi mikrofondan çəkin
  • Siqnalı gücləndirin, süzün, rəqəmləşdirin
  • Bir siqnalın FFT -ni həyata keçirin
  • Bu FFT -ni ekranda göstərin
  • Siqnal sintezi
  • Dinamikdən bir səs çıxarın
  • Səs effektlərini həyata keçirin (yankı, əks -səda və s.)

İndi arxa plana qoyduq və layihəni təqdim etdik, əllərinizi çəkməyin vaxtı gəldi!

Addım 1: Tələblər 1/3 - Avadanlıq

Tələblər 1/3 - Avadanlıq
Tələblər 1/3 - Avadanlıq

Dəbilqənizi uğurla düzəltmək üçün cihazı işə salmaq üçün bəzi avadanlıqlara ehtiyacımız olacaq.

  • Terasic + Adafruit TFT LCD Ekranı (Arduino) tərəfindən DE0-Nano-SoC İnkişaf Şurası
  • Dəbilqə etmək üçün 3D printerə giriş (Bir universitet tələbəsisinizsə universitetinizə yaxınlaşırsınızsa, bəzilərində tələbələr üçün əlçatan laboratoriyalar var)
  • Minimum internet bağlantısı olan bir kompüter (USB, Ethernet). Kompüterinizin güclü bir prosessora da ehtiyacı var, çünki Qsys -də proqram tərtib etmək çox vaxt aparır.
  • (Lazım deyil) Komponentləri PCB -yə yerləşdirmək üçün dövrə ölçüsünü kiçiltmək üçün + bir lehimləmə dəmiri üçün Gerber fayllarından Çaplı Devre Kartları (PCB) edən bir printer.
  • (Tövsiyə olunur): Təlimatçımızla işinizdən zövq almaq üçün yaxşı bir qəhvə:)

Addım 2: Tələblər 2/3 - Dövrəniz üçün Komponentlər

Tələblər 2/3 - Dövrəniz üçün Komponentlər
Tələblər 2/3 - Dövrəniz üçün Komponentlər
Tələblər 2/3 - Dövrəniz üçün Komponentlər
Tələblər 2/3 - Dövrəniz üçün Komponentlər
Tələblər 2/3 - Dövrəniz üçün Komponentlər
Tələblər 2/3 - Dövrəniz üçün Komponentlər

Dövrünüz üçün lazım olan komponentlər:

  • Texas Instrument LM386 AB sinifli səs gücləndiricisi
  • Çörək lövhəsi
  • Kişi-Kişi, Kişi-Dişi kabellər dəsti
  • LM358P Rəqəmsal-Analoh çeviricisi (DAC)
  • Dinamik
  • Analoq dövrədə istifadə olunan kiçik mikrofon
  • 1kOhm -dan 220kOhm -ə qədər olan bir rezistor dəsti
  • Kondansatör 1.5nF
  • Kondansatör 50nF
  • Kondansatör 100nF
  • Kondansatör 100 uF
  • Kondansatör 220 uF
  • x4 Kondansatörler 10 uF

Addım 3: Tələblər 3/3 - Proqram təminatı

Tələblər 3/3 - Proqram təminatı
Tələblər 3/3 - Proqram təminatı
Tələblər 3/3 - Proqram təminatı
Tələblər 3/3 - Proqram təminatı

Nəhayət, proqram təminatına ehtiyacınız olacaq:

  • Quartus 15.1: Lite versiyası
  • C tərtibçisi (məsələn, gcc)
  • PCB Dizaynı üçün Altium
  • Altera'nın SoC kartı SoC xəritəsi ilə ünsiyyət qurmaq üçün quraşdırılmış dəstidir

  • Macun

Addım 4: Giriş dövrəsi

Giriş dövrəsi
Giriş dövrəsi
Giriş dövrəsi
Giriş dövrəsi
Giriş dövrəsi
Giriş dövrəsi
Giriş dövrəsi
Giriş dövrəsi

Dövr quraq. Çörək taxtanıza yığmaq üçün yuxarıdakı sxemdən istifadə edin. Pimlərin necə bağlandığını görmək üçün BreadBoard şəklini və içindəki dövrə də görəcəksiniz. Bütün dövrə 5V birbaşa cərəyan (DC) ilə təchiz edilmişdir. Bunun üçün USB-B çeviricisi və ya funksiya generatoru olan 5V batareyadan istifadə edə bilərsiniz.

Bəzi xatırlatmalar:

  • 5V enerji təchizatı və torpaq çörək taxtasının ayrı -ayrı üfüqi xətləri ilə bağlıdır
  • Paralel olaraq 2 komponenti birləşdirmək istəyirsinizsə, onları çörək taxtasının ümumi xəttinə qoyun
  • 2 serial komponenti bağlamaq istəyirsinizsə, komponentlər çörək panelinin ümumi xəttində yalnız bir pin olmalıdır.

Çörək taxtasının necə istifadə ediləcəyi ilə bağlı xüsusi bir təlimatı izləməkdən çəkinməyin. LM358P Audio Gücləndiricinin pin mövqeyini də diqqətlə oxumağı unutmayın (yuxarıdakı şəklə baxın)

Addım 5: Çıxış Devresi

Çıxış Dövrü
Çıxış Dövrü
Çıxış Dövrü
Çıxış Dövrü
Çıxış Dövrü
Çıxış Dövrü
Çıxış Dövrü
Çıxış Dövrü

Adım 4 ilə eyni təlimatlar. Dörd giriş: SDI, CS deyil, SCK, LDAC DE0-Nano-Soc Boardunuzdan deyil. Bunların necə yaradılacağını daha sonra görəcəyik.

LM386 Audio Gücləndiricinin pin mövqelərini diqqətlə oxumağı unutmayın (yuxarıdakı şəklə baxın)

Addım 6: [İSTEĞE BAĞLI] Çaplı Dövrə Borad və Lehim Komponentləri Yaratmaq

[İSTEĞE BAĞLI] Çaplı Dövrə Borad və Lehim Komponentləri Yaratmaq
[İSTEĞE BAĞLI] Çaplı Dövrə Borad və Lehim Komponentləri Yaratmaq
[İSTEĞE BAĞLI] Çaplı Dövrə Borad və Lehim Komponentləri Yaratmaq
[İSTEĞE BAĞLI] Çaplı Dövrə Borad və Lehim Komponentləri Yaratmaq
[İSTEĞE BAĞLI] Çaplı Dövrə Borad və Lehim Komponentləri Yaratmaq
[İSTEĞE BAĞLI] Çaplı Dövrə Borad və Lehim Komponentləri Yaratmaq

Bir Devre Yazıcıya sahib olmaq şansınız varsa və ya istifadə edə bilsəniz, öz Çaplı Devre Kartımızı (PCB) yaradacağıq. Qeyd edək ki, bu addım isteğe bağlıdır. Bu addım yalnız dövrənizi çörək taxtasından PCB -yə köçürməkdən ibarətdir.

Bu 2 GERBER sənədinə ehtiyacınız olacaq.

Bu sənədlər Altiumda hazırlanmışdır. PCB -ni çap etmək üçün onları PCB printer proqramınızda istifadə edin. PCB -ni əldə etdikdən sonra, PCB -nin təmiz olduğundan və parçaların düzgün çap olunduğundan əmin olun.

İndi burada əsl anlaşma gəlir: Lehimləmə. Yuxarıdakı 2 şəkil, PCB üzərindəki dövrə xəritəsidir. Hər bir komponentin adları var (R6, C4, MK1 və s.). Addım 4 və 5 -dəki şəkillər komponentlərin parametrlərini (Müqavimət, keçiricilik..) göstərir. Çörək taxtanızdan hər bir komponenti adlarına uyğun olaraq PCB -yə yerləşdirin.

Hər şeyi lehimləmə dəmirinizlə lehimlədikdən sonra hər bir komponenti bir voltmetre ilə yoxlayın və qısa qapanma olub olmadığını yoxlayın.

Addım 7: SoC Quraşdırması

SoC Quraşdırması
SoC Quraşdırması
SoC Quraşdırması
SoC Quraşdırması

SoC quraşdırma ilə əlaqədar olaraq, bir terminal daxilində SoC quraşdırılmış dəstinə daxil olan bəzi əmrləri və skriptləri işə salmalı olacaqsınız. Bunu etmək üçün bir az $ PATH əlavə etməlisiniz. PATH, bir əmr işləyərkən yolun verdiyi qovluqlarda bir fayl axtarmaq üçün bir terminalda istifadə olunur. Bunu etmək üçün aşağıdakı əmr satırını yazın:

ixrac PATH =/cygdrive/c/altera_lite/15.1/quartus/sopc_builder/bin: $ PATH

Sonra bir sof faylından başlıqlar yaratmaq üçün əmr satırını yazın. Layihənizi Quartus -da tərtib edərək sof faylını əldə edirsiniz. Bunu etmək üçün:./generate_header yazın.

Addım 8: C HPS -in proqramlaşdırılması

C HPS proqramlaşdırılması
C HPS proqramlaşdırılması

Bu hissədə 2 şeyi həyata keçirməliyik, yəni ADC -nin dəyərini oxuyun və SPI -də yazın.

1. ADC dəyərini oxuyun

ADC -nin olduğu yaddaş ünvanı birbaşa əldə edilə bilməz, əslində kartda olan linux sistemi yaddaşın soyutlanmasını qurur. ADC ünvanına həqiqətən daxil olmaq üçün mmap funksiyasından istifadə edəcəyik.

"h2p_lw_spi_addr = virtual_base + ((işarəsiz uzun) (ALT_LWFPGASLVS_OFST + SPI_0_BASE) & (imzasız uzun) (HW_REGS_MASK));"

Bu təlimat, ADC üçün ayrılmış yaddaşın ünvanına çatmaq və yaranan ünvanda bir məntiq VƏ maskelemeyi nəzərə almaq üçün əsas ünvanın əvvəlinə bir ofset əlavə etməyə imkan verir.

Bundan sonra, dəyərini əldə etmək üçün proqramdakı göstəricini ləğv etmək kifayətdir.

2. ADİ -nin dəyərini SPI -də yazın

Manipulyasiya eynidır, bu dəfə mmapa SPI tərəfindən ayrılan ünvana enmək üçün ofset veririk. SPI -də yazarkən texniki sənədlər + 1 ünvanına adc dəyərini yazmalı olduğunuzu göstərir.

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

Bu təlimat SPI -yə yazmağa imkan verir. Həqiqətən bit 4, buna görə də 1 << 12, SPI -ni aktivləşdirməyə imkan verən bitdir. Məntiqli bir OR ilə, buna görə də həm aktivləşdirmə bitini, həm də ADC -nin dəyərini SPI -yə veririk.

Addım 9: Kartdan ADC -nin Rəqəmsal Alınması

Kartdan ADC -nin Rəqəmsal Alınması
Kartdan ADC -nin Rəqəmsal Alınması
Kartdan ADC -nin Rəqəmsal Alınması
Kartdan ADC -nin Rəqəmsal Alınması
Kartdan ADC -nin Rəqəmsal Alınması
Kartdan ADC -nin Rəqəmsal Alınması
Kartdan ADC -nin Rəqəmsal Alınması
Kartdan ADC -nin Rəqəmsal Alınması

Əvvəlcə İdarəetmə Paneli -> Şəbəkə -> Kart Paralları vasitəsilə kompüterinizin Ethernet IP ünvanını təyin etməlisiniz. Kartın ethernet interfeysini, xüsusiyyətini, ipv4 ünvanını seçin və sabit bir IP, maska və s. Daxil edin …

Sonra, kartı USB yuvası tərəfindən mikro USB kabeli ilə bağlayın. Quartus proqramçısını açın və ixracı başladın. Kartın hər söndürülməsindən sonra bu manipulyasiya yenidən ediləcək.

Bu dəfə Ethernet jakının yanına qoşulmaq üçün mikro USB fiş kabelini dəyişdirin. İndi Putty ilə birlikdə karta serial keçidlə qoşulmaq lazım gələcək. Konfiqurasiya fotoşəkillərdə görünür, COM5 -in yerini COM ilə əvəz etmək, sonra cihaz menecerinizdə tapa biləcəyiniz nömrə (onu açmaq üçün Windows loqotipinə sağ vurun).

Enter düyməsini basın, bağlısınız.

Layihəni yenidən başlatmaq üçün məlumat: - Karta uyğun olan Ethernet IP -ni düzəldin - Kartı yandırın, hər dəfə gücünü açanda, kartda tərtib edilmiş layihəni kvartusun altına "proqram" ilə qoymaq lazımdır. Bu mikro USB portu vasitəsi ilə edilir - Proqramın nəticəsini göstərmək üçün daha çox mikro USB istifadə edirik, lakin UART - Seriya COM5 (və ya 6 saatlıq gestinnaire perif) üçün konfiqurasiya edilmiş macunla birlikdə karta qoşun. - Şifrə təyin edin (passwd) - Ifconfig ethxx IPchoice IP ünvanını təyin edin (IP etiketi PC -nin etikası üçün bundan uzaq deyil) - Qsys -ə uyğun olaraq başlığı yaradılmış terminalla (PATH -ı ixrac edin) - make - scp l exec xəritə - proqramı macun altında icra edin

Addım 10: FFT hesablanması

FFT hesablanması
FFT hesablanması

C proqramımızda Fast Fourier Transformunu əldə etmək üçün Mark Borgerding: Kiss FFT tərəfindən yazılmış kitabxanadan istifadə edəcəyik. Kitabxananı buradan yükləyə bilərsiniz: https://kissfft.sourceforge.net/. Siqnal effektlərini dəyişdirmək və tətbiq etmək üçün bir FFT tətbiq etmək lazımdır. Həm də bir siqnal spektrini göstərməyə xidmət edə bilər.

C proqramınızda ilk addım, FFT nəticəsini saxlamaq üçün yaddaş ayırmaqdır. Yaddaşın ölçüsü FFT -ni hesablamaq üçün istifadə olunan nöqtə sayından asılıdır. Xallarınız nə qədər çox olarsa, FFT bir o qədər çox alacaq. Bununla birlikdə, proqram daha yavaş işləyəcək və daha çox yaddaş istifadə edəcək. Qeyd edək ki, kiss_fft funksiyasından iki sıra alacaqsınız: funksiyanın girişi və çıxışı (cx_in və cx_out)

Arrayımız yeni FFT dəyərləri ilə doldurulduqda, yəni r = Win - 1 olduqda, FFT -ni emal edirik. Mənfi hissə ilə müsbət hissə arasında bir simmetriya olduğu üçün ekrana gəldikdə, biz yalnız spektrin müsbət hissəsini göstəririk.

Üfüqi oxla əlaqədar olaraq, əsas tezliklərin zirvələrini ayırd etmək üçün pik dəyərlərini 100*boy/(hündürlük²) azaldırıq.

ADC dəyərlərinin oxunma tezliyini təyin etmək üçün usleep sistem zəngindən istifadə edirik. Bu tezlik hal -hazırda 1, 5 Hz olaraq təyin edilmişdir.

Addım 11: FFT -nin göstərilməsi

FFT göstərilir
FFT göstərilir
FFT göstərilir
FFT göstərilir

Burada mövcud olan Adafruit TFT LCD Ekranındakı bir nümunəyə əsaslanaraq: https://www.terasic.com/downloads/cd-rom/de0-nano-s… İdarə Heyətimizin NIOS-u proqramlaşdırdıq ki, oxuya bilsin. ADC dəyəri.

ADC reyestri NIOS və HPS arasında paylaşılır, çünki ADC dəyərləri NIOS ekranında FFT -ni göstərmək üçün istifadə ediləcək və eyni dəyərlər lövhədən çıxarmaq və nəhayət çevrilmək üçün SPI -də yazılacaq. analoji siqnal almaq üçün DAC tərəfindən.

Addım 12: Quraşdırma

Məclis
Məclis

Demək olar ki, bitirdik! Layihənin hər bir hissəsini (giriş dövrəsi, çıxış dövrəsi və lövhə) yığmalısınız. Parçaları Quartus Layihəsinə uyğun olaraq sancaqlar ilə bağladığınızdan əmin olun.

  1. Giriş dövrəsi mikrofon tərəfindən çəkilmiş, gücləndirilmiş, süzülmüş və ofset edilmiş səs siqnalını göndərəcəkdir.
  2. Kartda mövcud olan C proqramı, əvvəlcədən gördüyümüz kimi ADC dəyərlərini oxuyacaq və kartın GPIO -dakı dəyərini bərpa edə biləcəyimiz üçün SPI -də yazacaq.
  3. Daha sonra SPI -nin GPIO çıxışı, DAC -dan şifrələnəcək və dinamikə çatmaq üçün qaçaraq gücləndiriləcək məlumatları ötürəcək.

Addım 13: Səs effektləri

Səs effektləri
Səs effektləri
Səs effektləri
Səs effektləri

Qalan tək addım səs effektləridir.

Mümkün təsirlər bunlardır:

  • Yüksək Tezlik Filtri
  • Aşağı Tezlik Filtri

Bir düymə sayəsində effektlər arasında keçid edə bilərsiniz. Bu düymə C proqramımızdakı bir dəyişəni dəyişdirəcək, buna görə də düzgün effekti tətbiq edə bilər.

Addım 14: [İSTEĞE BAĞLI] Dəbilqə hazırlamaq

[İSTEĞE BAĞLI] Dəbilqə hazırlamaq
[İSTEĞE BAĞLI] Dəbilqə hazırlamaq
[İSTEĞE BAĞLI] Dəbilqə hazırlamaq
[İSTEĞE BAĞLI] Dəbilqə hazırlamaq
[İSTEĞE BAĞLI] Dəbilqə hazırlamaq
[İSTEĞE BAĞLI] Dəbilqə hazırlamaq

İşdə layihənin ən əl ilə addımını atırıq:

  1. Əvvəlcə dəbilqənin müxtəlif 3D çaplı hissələrini yapışdırdıq.
  2. Yapışqan parçalar arasındakı boşluqları doldurmaq üçün 3D qələm istifadə edərək son qat əlavə etdik.
  3. Qələm və dəbilqə ilə doldurulmuş boşluqları daha da cilaladıq ki, rəsm sonradan yaxşı keçsin.
  4. Dəbilqəni 2 təbəqə ilə boyadıq: Birincisi antrasit qara rəngdə, yaxından və bir qədər sonra daha yaşıl rəngli, daha tünd yaşıl çalarlar verir.
  5. Nəhayət, dəbilqə tərəfində məktəbimizin loqotipini çap etdik

Tövsiyə: