Dijital Signal Processors (DSP) yüksek hızlı sayısal hesaplamalar için tasarlanmış özel mikroişmanlar, özellikle ses, video ve iletişim gibi sinyal işleme görevleri için tasarlanmıştır. Bu işlemciler, mimarlık ve montaj dilinin optimum performans için kullanılmasını etkin bir şekilde gerektirir.
DSP Mimarisini Anlamak
Assembly programlamasına girmeden önce, DSP'lerin mimarisini anlamak önemlidir. Çoğu DSP'ler genel amaçlı CPU'lardan ayrı olarak onları alan özel bileşenlere sahiptir, sürekli veri akışlarının gerçek zamanlı işlenmesine olanak sağlar.
Harvard Architecture ve Multi Bus
von Neumann makinelerinin aksine, DSP'ler genellikle üç veya daha fazla iç otobüsler kullanıyor: programlı bir Harvard mimarisi). Bu tasarım, tek bir döngüde birden fazla otobüslere ve verilere tam olarak erişim sağlar.
Çok fazla -Accumulate (MAC) Birimler
Herhangi bir DSP kalbi onun içindir:0) Çok basitleştirilmiş bir bağlantı ([DSPT:1) Bu birimlerin etkin şekilde kullanılmasını sağlamak için birçok MAC birimini içerir.
Geometrik Buffers ve Modulo Adres
Signal processing algoritmaları sıklıkla verinin kaydırıcı pencerelerinde çalışır. DSPs şu noktaya kadar donanıma ulaşır:0)Mancircular tamponlar[Döneticileri tarafından desteklenen modüllo adresi ile desteklenen ve uzun süre ayarlandığında otomatik olarak donanıma ulaşır.
Özelleştirilmiş Adresi Modes
DSP'ler standart doğrudan ve dolaylı ötesinde birkaç adresleme modlarını destekliyor: [[Dönetici:0)[Döncükler # 1 ) FFT reordering için, [[DFLT:2|sad|) Bahsettiğiniz belirli DSP aileniz için kılavuzluk (DSPT:0) kayıt dışı adresleme/decrement) için sıfırdan gelen veri erişim kalıplarına izin veriyor.
DSPs için Assembly Dili Temelleri
Assembly dili, DSP donanımını düşük seviyeli bir kontrol sağlar. Yüksek seviyeli derleyiciler geliştirilmiş olsa da, sinyal işlemedeki kritik içsel döngüler hala montajda maksimum bağlantıya ulaşmak için el kodlanır. Anahtar kavramlar şunlardır:
- [FONT:0)Yöneticiler:[Döneticiler: DSP'ler genellikle özel kayıt dosyalarına sahiptir: genel amaçlı veri kayıtları, cumulator kayıtları (toplamaları önlemek için veri kayıtlarından daha geniş), adresleme ve kontrol /status kayıtları için notlar. Örneğin, Texas Instruments TMS320C55x dört cumulator kaydı vardır (AC0-AC3) her biri 40 bit.
- [FONT:0)Instructions:[[Dönler:[Dönler: · 1 ) Ortak talimatlar aşağıdaki bir sonraki öğretimle paralel olarak gerçekleştirilebilir, örneğin, [[Döneticiler, [[Döneticiler, [[Döneticiler, [[Döneticiler, s.
- [FONT=0)Instruction Formats:[DFLT:1] DSP Öğretim kelimeleri genellikle kod boyutunu azaltmak için değişken uzunlukta talimatlar kullanır. Bazı aileler kod boyutunu azaltmak için değişken uzunlukta talimatlar kullanır.
- [FONT:0)Delay Slots:[Dönetici:[Dönetici:0)Delay Slots:[Dönetici:0))Delay Slots:[Döneticiler:[D)[Döneticiler, bu yuvaları yararlı işlerle doldurmalıdır (branch gecikme slot optimizasyonu).
- [FONT=0)Loop Yapıları: [Döngeler: [Döngeler:0)[[değiştir | kaynağı değiştir], yazılım döngüsü olmadan belirli bir süre yürütmeye izin verir.
Bu temelleri ustalaştırma, DSP uygulamaları için verimli montaj rutinleri yazmak için gereklidir. İyi bir başlangıç noktası, resmi DSP veri sayfası veya programcının seçilmiş mimariniz için rehberi aracılığıyla çalışmaktır.
DSP Development Environment'ı kurmak
DSP montaj programları geliştirmek özel araçlar gerektirir. Çoğu üretici, iş akışını kolaylaştıran entegre gelişim ortamları (IDEs) sağlar.
Assembler ve Linker
Kombinasyon kaynağı dosyaları nesne koduna dönüştürür. Anahtar özellikleri, [[FONTD:0) Yönlendirici yönergeler[Döneticiler[Döneticiler, ►DÜSÜŞÜNCÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜN
Simdi ve Emulator
Gerçek donanıma dağıtmadan önce, bir öğretim seti simülatörü kullanarak kod. Simulators teklif döngüsü-accurate execution and profiling yetenekleri, performans şişelerini ölçmek için izin verin. Bir emülatör (JTAG tabanlı) gerçek zamanlı olarak şarj ünitesine sahiptir, donanım mola noktaları ve iz tamponları gibi özellikler.
Popüler DSP Aileleri ve Araçları
- [FONT=0)Texas Instruments TMS320C6000/C5000: Kodu Kompatör Stüdyosu (CCS) IDE ile C6000 veya C5000 derr / out. Extensive Document is available atTELFLT:2TI's DSP portal).
- [FONT=0)Analog Cihazları ŞAM[[DÜT 1:2) veya [[Dönetici: [Dönetici:0) Kurul programlama için CrossCore Gömülü Studio (CCES) kullanın. SeeurPCT: 4 )Analog Cihazları DSP ürünleri).
- [FONT=0)NXP StarCore[[DÜT:1) veya [[Dönetici:2) .
- [FONT:0)CEVA XC/TL: Simülasyon ve debug araçları CEVA'nın geliştirme ortamında mevcut.
Uygulamanızın performansına, gücüne ve maliyet kısıtlamalarına dayanan bir DSP ailesi seçin. Öğrenme için TI TMS320C5515 Değerlendirme Modül (EVM) düşük maliyet ve yazılım kütüphanesi nedeniyle popüler bir seçimdir.
DSP Assembly'de optimizasyon teknikleri
Etkili DSP assembly programlama, gerçek zamanlı performansı doğrudan etkileyen birkaç teknik içerir. Aşağıdaki yöntemler endüstride yaygın olarak kullanılır.
Software Pipelining
Yazılım boru hatları yeniden ayarlandığında, böylece birden çok iterasyonlar infazda çakılmaktadır.Eleter prolog, çekirdek ve epilog her döngüyü meşgul etmek için inşa edilmiştir. Örneğin, bir FIR filtre döngüsünde, bir önceki MAC tamamlandıktan sonra bir sonraki kata yüklenebilir.Bu teknik özellikle VLIW (Very Long Word) DSPs üzerinde etkilidir.
Link Unrolling
Kayıtsız döngü yükünü azaltır (branches and pointer update) döngüyü birden fazla kez çoğaltmak için. Donanım döngüsü ile kayıt altına alınması da daha iyi talimat paketlemesine izin verebilir. Ancak, kayıt olmayan artışlar kod boyutunu artırmak için, bu yüzden sadece programın küçük bir kısmını işgal eden kritik iç döngülere uygulanmalıdır.
Verimli Veri Hareketi
Kayıtlarda sık sık kullanılan verileri depolayarak yükleme/kap talimatları. DSP'ler genellikle sınırlı sayıda kayıt defterine sahiptir, bu nedenle kayıt tahsisi hayati önem taşır.UseENFLT:0) kayıt rotasyonu) veya dairesel kayıt dosyaları mevcuttur. ek olarak, mevcut olan sürümler.(DMA))) CPU müdahalesi olmadan veri ve periferikler arasında veri transferi için kontrol edilir.
MAC Birimleri
Filtreleme, konvolution, korelasyon ve hızlı Fourier dönüşümleri için çoğaltma talimatları kullanın. Veriler ve katsayıların her döngüyü doğru şekilde belirtilmesi için MAC'un bir çift yük veya mağaza ile aynı öğretimde eşleştirilmesi, döngü başına iki sonuç elde etmesi için MAC'un uygun şekilde ayarlanabilir.
Geometrik Buffers kullanarak
Süreç verileri yayınlayan algoritmaları için (örneğin, uyarlayıcı filtreler, faz kilitlenmiş döngüler), donanım modüllo adresi ile bellekte dairesel tamponlar oluşturuyor. Bu açık sınır kontrollerini ortadan kaldırır ve döngüyü daha hızlı ve daha öngörülebilir hale getirir.Buffer başlangıç adresini ve uzun süre özel adres nesil ünitesinde yapılandırır (AGU) kayıtlar.
Öğretim Programı ve Bundling
VLIW ve süperscalar DSP'ler, talimatlar siparişler siparişi önemli ölçüde. veri bağımlıları nedeniyle boru hatlarının durdurulmasından kaçınma talimatları. Birçok montaj cihazı, örneğin TMS320C6000 toplantısındaki belirteçlere açık paralel uygulama sağlar:
LDW .D1T1 *A0++, A1 ; load data into A1 || MPY .M1 A1, A2, A3 ; multiply A1 and A2 into A3 (parallel issue)
Bundling bağımsız operasyonlar aynı uygulama paketi, bağlantı üzerinden en üst düzeylere sahiptir.
Pratik Örnek: Bir FIR Filtresini Uygulamayın
Bir Finite Impulse Response (FIR) filtresini montajda kullanmayı düşünün. Bu, klasik DSP öğretim örneğidir.
- Giriş örneği tarihi için bir dairesel tampon kurmak (delay line).
- Kayıtlara giriş örneklerini ve filtre katlarını yükler.
- Her örnek için çarpık işlemleri gerçekleştirir.
- Filtrelenmiş çıktıyı hafızaya geri bırakın.
Bir TMS320C55x FIR Filtresi (N musluklar) için Pseudo-Assembly for a TMS320C55x FIR Filtresi (N musluklar)
Uzun N, kat katalizi|düşükümlülük/kürüm) ve yeni bir örnek olarak, “
- Başlangıç noktası (örneğin, s.) olarak, s.........................
- Mevcut pozisyonda tampon almak için yeni örnek yazın (modulo adresileme handles sarma).
- Set loop count to N-1 (hardware döngü).
- Her iterasyonda: bir veri örneği ve bir katorum yükleyin, sonra MAC'u gerçekleştirin.
- döngüden sonra, cumulator'u çıktı ve güncel noktaya getirmek için.
C55x'te, bu tek bir (RPT) veya blok- ⁇ (RPTB) inşa edilebilir. Anahtar talimatlar: [[ŞUygun adresi ile, [[ŞUygunT:21) ve [[Dönetici|seçmişler için gerçek kod, operaya veya 32-bitliğe bağlı olarak değişebilir.
Optimizasyon Notları
Bir MAC döngüsüne ulaşmak için, verilerin ve kat erişimlerinin iç otobüslerde çatışma yapmadığından emin olun. DSP'nin iki veri bellek alanı (örneğin, katlar ve veriler için ayrı bellek), onları paralel yüklere izin vermek için farklı hafıza bloklarında yerleştirin.
Daha yüksek sipariş filtreleri için, filtreyi paralel bölümlere (polifak uygulamaları) veya dağıtılmış aritik kullanarak dikkate alın.Her optimizasyon kod büyüklüğü ve geliştirme süresi ile dengeli olmalıdır.
Gelişmiş Uygulamalar: IIR Filtreler ve FFT
Sonsuz Impulse Yanıtı (IIR)
IIR filtreler, IIR filtreler için veri bağımlısı oluşturan önceki çıktıların geri bildirimlerini gerektirir:
- Doğrudan form kullanarak I veya transposed doğrudan form II yapıları en aza indirmek için.
- Biquad bölümlerinde MAC işlemlerinin birleşimi.
- Geçin azaltılması için kısmi özetler.
Çünkü istikrar sabit nokta DSP'lerde endişe vericidir, aşırı akış işleme (saturasyon veya ölçeklendirme) montaj koduna dikkatle entegre edilmelidir.
Hızlı Fourier Dönüşüm (FFT)
FFT, FFT için yapılan analizin arka kemiğidir ve OFDM modemler.FFT için Assembly optimizasyonu şunları içerir:
- [[Dönemli adresleme[Döncümler)]]
- Robotik çekirdeği borular.
- Ayrı bir hafıza bankasında saklanan twiddle faktör masalarını kullanarak.
- DSP'ye özgü talimatları (örneğin, [[DFLT:23) veya [[DSPT:24) karmaşık sayılarla çoğaltın.
Bir radix-2 decimation-in-time FFT kelebek, modern bir VLIW DSP üzerinde 10 öğretim döngüsünde daha az yazılabilir. Bu, boru hattının ve dikkatli kayıt atamasının samimi bilgi gerektirir. Birçok üretici FFT kütüphanesi rutinlerini optimize eder; gelişmiş kodlama tekniklerini öğrenmek için mükemmel bir yoldur.
Ortak Pitfalls ve Debugging Tips
Deneyimli geliştiriciler DSP assembly'de ince böceklerle karşılaşmakta bile. İşte ortak konular ve onlardan nasıl kaçınılması:
- [FONT:0)Pipeline tehlikeler:[Dönem:[Dönem: 1] Sadece gerekli olduğunda NOP'leri ayarlar; tezgahları ortadan kaldırmak için yazılım borularını kullanın.
- [FONT:0)Incorrect dairesel tampon yapılandırma:) Çift kontrol, tampon boyutu, donanım modüllo adresi tarafından gerekli olan iki güçtir.
- [FONT:0)Overflow:[DÜDÜDÜDÜDÜDÜDÜDÜ:0) DSP'ler, cumulator muhafızları için biraz fazla tutar, ancak hala aşırı durumlarda aşırı uçabilir.
- [FONT=0)Memory hizası:[D)[DSP'ler 32-bit veya 64-bit erişimleri doğal sınırlarına uyumlu hale getirmek için gereklidir. Yanlış erişimler istisna veya performans cezalarına neden olur.
- [FONT:0) Yönelme:[Dönetici:[Dönetici:0)) Sürekli olarak yapılan tüm kayıtları geri yükleyin ve iade edinilebilir gerçek zamanlı yanıt elde etmek için en az sayıda talimatları kullanın.
- [FONT:0)Debugging araçları:[Dönetici:0) Belirli kayıt değerlerinin tuzağına düşmesi için IDE'de (Dönetici) bir araya gelmenin gerekli makine kodunu doğrulaması için.UseENFLT:4).
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
DSP işlemcileri montaj dili, sinyal işleme görevleri için eşsiz bir kontrol ve verimlilik sunar. Mimarlık, mastering assembly talimatlarını anlamak ve optimizasyon tekniklerini uygulamak yüksek performanslı uygulamalar için hayati önem taşır. Doğru araçlar ve bilgi ile - Harvard mimarisi ile ilgili, MAC birimleri, dairesel tamponlar ve yazılım boruları ile ilgili -students ve eğitimciler DSP teknolojisinin tam potansiyelini, ses kodlama geliştiricileri gibi çeşitli gerçek dünya uygulamaları için kullanabilir.