Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

eZdsp F2808

Başlatan ArifAhmet, 03 Eylül 2016, 17:41:13

ArifAhmet

Elimde linkteki kit var; http://www.spectrumdigital.com/ezdsp-f2808-for-tms320f2808-dsp-in-socket-power-supply-code-composer-studio-for-c28xx/

Uzun zamandir DSP işlerine girmek istiyordum, bu kitle beraber bu fırsat elime geçti. Fakat aklımda birkaç soru var.

Öncelikle DSP hakkında kafamda tam oturmuş bir şey yok. Kitin özelliklerine baktığımda normal bir mikrodenetleyiciden öne cıkan bir ozellığını görmedim? Yani bu denetleyicinin olayı nedir? FPGA'in öne çıkan özelliklerinden biri palalel işlem yeteneğidir mesela, ama DSP ne yapıyor anlamış değilim, onca matematik işlemini stm32f7 serisisinden birşey yapamıyorda bu Texas'ın F2808'i nasıl yapıyor? Üstelik bu kitin üzerindeki DSP 100MHz. Birde bu arm cortex-m4 serisinden sonra galiba, artık DSP modülleride içinde bulunuyor bu denetleyicilerin, FPU'lar var. .

Ayrıca birde C2000 serisi var. Bunlar DSP midir? Çünkü MCU diye geçiyor fakat içinde bayağı karmaşık matematik modülleri var. Trigonometri modülleri var vs.
Yaşasın Open Source!

Firzen

Tek diyebileceğim cümle KİTİN SAĞLAMMIŞ. Güç elektronikçiler için genelce MCU yerine DSP kullanırlar birçok sebebi trigonometri vs Discrete time işlemlerinden kaynaklı.
Kararsız...

z

#2
DSP'yi anlamadan önce Z dönüşümlerini ve fark denklemini iyi anlamak lazım. Bir de kodlamayı ASM ile yapmanız lazım.

Eğer C ile kodluyorsan DSP mi kullanıyorsun yoksa MCU mu kullanıyorsun farkına bile varmazsın. Zira DSP komutlarında ayrık zaman işlemleri çok belirgin belli.
Mesela, saturasyon işlemleri, veriyi kaydırıp okuma, kaydırıp yazma, carp ve topla/çıkart, çarp ve sonucu kaydır, ramda veriyi bir sonraki adrese yaz.
Memory erişimleri dahil her komutun çoğunlukla 1 cycle sürmesi, aynı cycleda memorynin iki ayrı bölgesine erişmeye imkan tanıyan Dual Access Ram olması hız artırıcı özellikleri de var.

TI DSP lere çevre birimleri ekledi ve adına DSC dedi. Böylece MCU gibi oldular. (Timer capture ve timerle ilişkilendirilmiş ADCler, Quadrature encoder interface, 3 faz pwm modülü, acil koruma düzeneği vs)

Zamanında TMS320F24xx serisi ile çok çalıştım şimdilerde CM3 kullanıyorum..  Ghz hızında DSP kullanmayacaksan günümüzdeki ARM çiplerindan sonra DSC'lere pek ihtiyaç kalmadı.

DSC ADCleri genellikle Cortex serisindeki ADClerden daha hızlı.

16 bitlerden sonra 32 bit çalışırım düşüncesiyle 28xxx series kit alıp çalışmaya başlamıştım ve hemen bıraktım. Zira bu seri CM3lerdeki gibi tek komutla 32bit veri okuyup yazamıyor. Peşpeşe 16 16 olmak üzere iki komutla erişim yapman gerekiyor. Bir de Ramın tamamına tek sayfadan erişemiyorsun 24xxx serisindeki gibi pagelere bölünmüş. Böyle olunca da ASM yazım işkence oluyor.
32 bitlik ana işlemciden ayrı olarak int rutinlerini koşturması için ikinci bir işlemciye sahip olması beni çok cezbetmişti halbuki.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Firzen

Hocam ayrık zaman yapmak için direk komut sistemi getirdiler. Birde normal C dili ile değil iki farklı metod ile yazım var ya. ADDR tipinde direk dediğiniz gibi RAM bloklarına ekleme kaydırma yapabiliyorsunuz.
Kararsız...

z

#4
C'de sorun yok. ASM'de page değiştirmeyi  unutursan hata ayıklamak zaman alabiliyor.

Program yazımında yaptığım hataların %90'ı hep page değiştirmeyi unuttuğum tipte hatalardı.
CM3 çıktı kurtuldum.
Radar, görüntü vs işlerinde bayağı avantajlıdır ama DSP komutları görece olarak Radara kıyasla yavaş kalan motor, UPS kontrolda falan çok da cazip değil zira işlemciler artık çok hızlı.

Ben kodlarımı sadece asm ile yazıyordum. İki farklı yazımı bilmiyorum. O nasıl bir şeymiş?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

F493

Selam,

  Bu işlemcinin en büyük özelliği 3 FAZ INVERTER, RECTIFIER, MOTOR CONTROL VS. özellikleri için 3 faz complementary PWM olması Yani, HighSide ve LowSide half, full bridge sistemler için on numara. TI'ı bu konuda tek geçerim. Aynı zamanda CCP modülü ile 3 faz sıfır geçiş vs yapabilirsiniz. Her pwm kanalının deadline özelliği yazılımsal ayarlanabiliyor. Güçlü ama eski bir işlemci. . Ben uzun yıllar TMS320F2806 kullandım onda Floating Point bile yoktu ona ragmen çok çetin işler yapılabiliyordu.

Yukarıdaki işlemci eski nesil hem az özellik hem pahalıdır.

Önerim TMS320F28069 kullanın. Nedeni şu. Bu tip işlemciler genelde güç elektroniğinde kontrol amaçlı kullanıyor ve Kontrol sistemleri devreye giriyor. Bu işlemcinin içinde CLA diye bir donanım var, bu donanım işlemcinin CPU suna paralel çalışıyor. Dsp ye işlem yükü getirmiyor. Yani siz kontrol sistemi için atıyorum 3 faz resonans kontrol sistemi yazıyorsunuz bunu CLA ya atıyorsunuz böylece dsp PWM üretme koruma, sıfır geçiş, haberleşme, paralelleme vs ile uğraşıyor. Kontrol sistemlerinde Sistemin kararlı çalışması için kontrol kısmının periyodik çalışması hayati. Ti DSP de çok sağlam, gürültü, emc vs hak getire taş gibi.

Esen kalın.

Firzen

Kararsız...

z

#7
Bahsettiğim, Direct Register Access Model yada Software Driver Model değil.  C ya da C++ yazım da değil di.

Mesela  a=(a*b)>>3 + a;

İşlemi herhangi bir işlemci ile yapılabilir.

Gene aynı şekilde aşağıdaki gibi saturasyon işlemleri

    a=a+b;
    if (a>n)  (a=n);
    if (a<-n) (a=-n);

   komutları DSP'de a=a+b de otomatik yapılabiliyor. (n=2^31)

DSP kullandığın zaman bu işlemler sadece tek komutla halledilebiliyor. Yukarıdaki yazım şekillerine bakınca DSC ye mi kod yazıyorsun MCU'ya mı hiç belli olmuyor.

Dolayısı ile haklı olarak kod örneklerine bakan kişi DSP/DSC ile CPU/MCU arasında ne fark var sorusu sorabiliyor.

Halbuki asm kod örneklerine bakınca MCU ya mı yoksa DSC yemi yazılmış derhal anlaşılıyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

DEno_12

Alıntı yapılan: Firzen - 04 Eylül 2016, 20:08:36
@z hocam http://www.egr.msu.edu/classes/ece480/capstone/fall14/group08/Documents/Daniel's%20Application%20Note.pdf burada kısaca anlatıyor ikisi arasındaki farkı da gösteriyor.

Bu hocaya uymaz. İçinde ASM yok. :)

Derken açıklamışsınız bile hocam.

z

Kırmızıyla yazmayaydın iyiydi.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ArifAhmet

Merhabalar,

Öncelikle Bülent hocamın ilk mesajını tam olarak anlayamadım.

Alıntı yapılan: z - 04 Eylül 2016, 13:33:55

Eğer C ile kodluyorsan DSP mi kullanıyorsun yoksa MCU mu kullanıyorsun farkına bile varmazsın.

Burada kast ettiğiniz verimlilik mi? Yani C ile yazarsam üretilen asm kodu verimsiz mi olacak?

Ayrıca anladığım şey şu; elimde bol bol matematik işlemi olan bir denklem var, DSP bunu bir clock cycle'da yapacak, MCU ise 5 clock cycle'da yapacak. O zaman clock speed'i DSP'den kat kat fazla olan bir MCU ile hiçbir farkı kalmayacak. Tamam DSP'lerin içinde bunun için özel şeyler de var fakat stm32f7'nin içinde de DSP modülleri var. Yani kısacası çok spesifik bir ihtiyaç olmazsa bu tür DSP'leri kullanmak mantıklı değil. Ben bunu anladım.
Yaşasın Open Source!

z

#11
Radar,  sonar, video,  digital radyo, ses sinyali gibi sinyaller yüksek frekanslı yani yüksek hızda sample almayı gerektiren sinyaller. Bunları DSPlerle işleyebiliyoruz yada FPGA lerle hız sorununu aşıyoruz.

Bunların dışında kalan daha düşük frekanslı sinyaller ise daha düşük hızda sample alarak işlenebildiğinden DSP yada FPGA ihtiyacı kalmıyor.

Örneğin sıcaklık regülatörü yapmak için DSP kullanmaya gerek yok.

-----------

Alıntı YapBurada kast ettiğiniz verimlilik mi? Yani C ile yazarsam üretilen asm kodu verimsiz mi olacak?

O anlamda bir şey demedim. Örnek kodlar vermiştim.

C'de   a=(a+5)>>3; satırına bakınca bu DSP için yazılmış bir koddur ya da MCU için yazılmış koddur diyemezsin.

Fakat   atıyorum  ADD A,#5, ASR #3  komutunu görünce yahu bu DSP komutu diyebilirsin demek istedim.

--------------

İyi bir DSP de Barrel Shifter denilen bir ünite bulunur ve bu math komutlarla ilişkilendirilebilir. Böylece yapılan bir işlem sonucu aynı cycle içinde saga yada sola kaydırılabilir.

Örneğin registerdeki veriyi rama kaydırarak yaz dediğimizde bu 1 cycle sürer. Klasik MCU larda register içeriğini önce kaydırır ardından rma yazarız bu da en az 2 cycle demektir.

Buna benzer kombine çalışan komutlarından dolayı DSPler aynı hızdaki CPUlardan daha hızlı çalışır.

Atıyorum 100 MHZ DSP kullanmak yerine 800MhzCPU kullanırsın güç harcaması önemli değil dersin ve aynı işi MCU ile de yaparsın.

Fakat  GHz hızlarda çalışan DSPleri düşünürsek rakip olacak CPUların çok baba çipler olması gerektiği anlaşılacaktır.

Peki o zaman neden PC'lerde CPU yerine DSP kullanmıyoruz sorusu sorulabilir.

Malesef DSPlerin adresleme yetenekleri çok iyi değil. Adresleme aralığı düşük. Asıl amaçları kısa algoritmaları koşturmak. Fakat 100 küsür KBtye kod yazacaksan da sorun değil.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan


z

#13
M3de var ama  komutlara çokentegre değil. SAdece 2 kullanımı var.

Mesela Rn registerini 4 bit sola kaydır derken   LSL Rn,#4 

yada Rn registerine Rm register değerini sola 2 kaydırıp ekle ve bulduğun adresteki veriyi  Ra registerine oku derken  LDR Ra, [Rn, Rm LSL #2] diyebiliyoruz o kadar.

Halbuki DSP Barrel Shifter komutlara fazlaca entegre edilmiş. Mesela  ACC içeriğini rama yazarken 3 bit kaydır öyle yaz yada
Ramdaki verinin 4 bit kaydırılmış halini oku yada
ACC ile ramdaki verinin 5 bit kaydırılmış halini topla gibi daha komplike işlemler yapılabiliyor.

CM3 deki barel shifterin tek espirisi tek cycleda 31 bite kadar kaydırma yapabilmesi ve kaydırma operatörlü adresleme yapabilmesi.
DSP deki Barrel Shifter ise diğer komutlara bayağı bir entegre olmuş durumda.

M4 DSP komutlarıyla hiç ilgilenmedim fakat TI DSClerindeki komutlar Q notasyonunda işlem yapmaya çok müsait. M4 bu kadar yetenekli değil gibi.

Sadece çarp ve topla tipi komutlar MCUnun DSP olmasına yetmiyor. Zaten MCU'muz bir DSP demiyorlar sadece MCU'muzun DSP komutları da var deniyor.

 
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#14
Sadece Q15 ya da Q31 tipi verilerle işlem yapıyorsan MAC yeterli. Fakat illede bunlar kullanılacak değil. İşte bu aşamada Barrel shifter ve saturasyon aritmetiği işin içine giriyor.

Karşılaştırmalı test sonuçlarını boşver. Her firma karşılaştırmada kendi işlemcisini 1 numara yapacak örnek verebiliyor.

M3 saturasyon flağına sahip mesela ama hikayeden bir özellik. DSPlerdeki saturasyon özelliği ile alakası yok. Dediğim gibi alıcı gözüyle M4 ü C2000 ile mukayese etmedim. Kaldı ki C2000 daha asıl C30 serisi var. MAC komutlar DSP olmaya yetmez.

Daha işin içinde Z komutu var.

Fakat bir DSP'nin olmazsa olmazı elbetteki MAC komutları.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com