TI c2000 dsp hakkında

Başlatan fractal, 09 Mayıs 2012, 14:51:27

fractal

arkadaşlar ti c2000 serisi dsp lerini kullanacağım.daha önce kullanan varsa tavsiyelerde yada görüş bildirmek isteyen varsa sevinirim....teşekkürler..
Restantum cogniscutur Quantum deligutur

z

C2000 serisi çıktığından beri kullandım. Uygulaman ARM işlemci ile yapılabiliyorsa ARM serisi ile devam etmeni öneririm.

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

fractal

c2000 serisinde arm çekirdekli işlemcilermi var yani? programlayıcı olarak ne kullanabilirim?
Restantum cogniscutur Quantum deligutur

f_machine

Alıntı yapılan: z - 09 Mayıs 2012, 15:24:34
C2000 serisi çıktığından beri kullandım. Uygulaman ARM işlemci ile yapılabiliyorsa ARM serisi ile devam etmeni öneririm.

neden c2000 serisinde bi sorunmu  var ? Bende bldc sürücü yapmayı düşünüyorum onunla da.

z

C2000 serisinin hiç bir sıkıntısı yok. Aynı paket içinde hem C2000 hem ARM içeren çift çekirdekleri saymazsak C2000 tamamen ayrı bir sınıf ARM ile alakası yok.

C2000 önermememin sebebini haklı bulmayabilirsiniz.

C2000 seçme amacınız aşırı uç noktada hız olmalı. Eğer amacınız hız ise asm kodlamalısınız. ASM kodlarken bu işlemcilerin 128 Wodluk page sınırından dolayı zırt pırt page değiştirmeniz gerekiyor. Bu da ister istemez hata yapmanıza neden oluyor. Eğer C ye geçerseniz ASM'ye kıyasla hızdan kaybedersiniz. Bu durumda ARM işlemci yüksek cpu clk dan dolayı daha avantajlı hale geliyor.

Asm ile C2000 işlemcilerde uçuyorsunuz. Çevre birimleri de çok süper. Mesela 250...500ns de ADC çevrimi.

Eğer amacınız çok çok hız değilse ARM işlemcilerdeki program yazma lüksünü C2000 de kaybedersiniz. ARM işlemciler artık bir standart oldu. C2000 kullandığınızda TI ın özel bir sınıfına bağlı kalmış olursunuz.

Bu sebeplerden dolayı ARM öneriyorum. Eğer ARM işlemciden vazgeçersem geri döneceğim işlemci kesinlikle C2000 olacaktır. (Buı seri ile 1995 den buyana aşk yaşadım)

C2000 serisinde çalışmak istediğiniz işlemcinin 100..150$ civarındaki DSK kitini satın alın. Bu kiti TI ürünü yada SpectrumDigital ürünü olarak alabilirsiniz. Bu kit ile birlikte asm ve C derleyici geliyor. (C derleyici eskiden her DSK da gelmiyordu, niyetiniz varsa teyid edin aksi halde derleyiciye yüklüce para vermeniz gerekir)

Programlayıcı olarak ben XDS510PP kullanıyordum. Fakat seriport üzerinden programlama da mümkün.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

f_machine

anladım c ile yazarsak (ki ben öyle yapacağım) hızdan kaybedeceğimizi söylüyorsunuz. Ama baktığımda c2000 serisini 300Mhz e kadar işlemciler var.
http://www.ti.com/product/tms320c28346
Bunlarda da hız sorunu olurmu ?. C2000 çoğu mikrodenetleyicilere göre çok güçlü duruyor ama gerçekten . FPU var çevre birimleri özellikle pwm çok iyi .

z

#6
Hiz ve memory konusunda secenek cok da fiyat artiyor. Gercek zamanda yuksel frekansli sinyaller islemeyecekseniz bence C2000'e gerek yok.

Motor suruculerimi bugune kadar C2000 ile tasarliyordum. ARM islemcilerde USB biriminin olusu ve mikroislemci luksunu yasatmasindan dolayi C2000 i terkettim. (C2000 nin son serilerinde USB varmi bilmiyorum)

ARM islemcilerde PWM birimi C2000 dekiler kadar guzel. Sadece ADC hiz sorunu var. Ote yandan C2000'nin sundugu 300ns de ADC cevrimine ihtiyaciniz varmi onu da irdelemek lazim.

Hiz istiyorsaniz kesinlikle C2000. Fakat uygulamaniz kontrol algoritmalari haricinde, protokol dahilinde haberlesme yapacak, isin icine LCD grafik ekran, SD kart vs girecekse ARM islemci ile calismak daha mantikli.

Su anda emin olamadigim tek konu gurultu konusunda ARM islemciler C2000 kadar dayaniklimi? Ote yandan bir cok motor surucude ARM islemciler kullanildigina gore bu konuda da tereddut etmeye gerek yok.

ARM islemciye gecip gecmeme karasizligi yasadigim donemde bir TI seminerinde secim konusunu dile getirmis ve ne zaman C2000 ne zaman ARM diye sormustum. Bana verilen yanit yukarida yazdigim gibiydi.

FPU, CLA gibi uniteler C2000 nin sadece ust sinif serisinde var.  Hepsinde yok.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

fractal

şu olayı anlamadım gitti.asm ile yazarsan daha hızlı c ile yazarsan daha yavaş.arkadaşlar gerçeten bunu deneyen varmı?bunu ölçen test eden varmı?

birde şu mesele var aynı görevi yapan iki program olsun biri asam ile 20 step olsun. diğeride c de yazılsın oda derlenince 20 step olsun şimdi bunlar aynı hızda cevrimi tamamlamazmı?yada kullanıcı faktörü yokmu bu işte biri aynı programı asm ile daha yavaş çalışan şekildede yazamazmı?

Restantum cogniscutur Quantum deligutur

Erol YILMAZ

her iki kodda 20 ASM komutuna denk geliyorsa hızlar aynı olur,
tabi ASM komutlarının da aynı hızlarda old. varsayarsak,

Genellikle C, ASM den daha uzun kodlar üretir,
Çünkü ASM yi çok iyi şekilde optimize edebiliriz.
C de bu biraz daha sınırlı kalıyor.
Belki de ASM nin çok düşük seviyeli olmasından dolayı o anda düşünceler bile optimize oluyor olabilir.

GreeN

Alıntı yapılan: z - 09 Mayıs 2012, 18:16:25

ARM islemcilerde PWM birimi C2000 dekiler kadar guzel. Sadece ADC hiz sorunu var. Ote yandan C2000'nin sundugu 300ns de ADC cevrimine ihtiyaciniz varmi onu da irdelemek lazim.
Asm ile C2000 işlemcilerde uçuyorsunuz. Çevre birimleri de çok süper. Mesela 250...500ns de ADC çevrimi.


ST32f407 'de 2.4 Msps Adc var. 3 clock örnekleme 12 clock (12 bit için) dönüştürme süresi verilmiş. Adc 84Mhz ile sürülürse bir çevrim 357ns ediyor . (sampling + conv.)
Eğer adc triple modda çalışırsa 7.2Msps hıza ulaştığı belirtiliyor. Buda çevrim süresini 119 ns yapar sanırım.
Eğer hesaplarım yanlış değilse ARM için yukarıda belirttiğiniz hızlarda adc mevcut diyebiliriz sanırım.
Terörü Lanetliyoruz.

z

Alıntı yapılan: fractal - 10 Mayıs 2012, 09:02:08
şu olayı anlamadım gitti.asm ile yazarsan daha hızlı c ile yazarsan daha yavaş.arkadaşlar gerçeten bunu deneyen varmı?bunu ölçen test eden varmı?

birde şu mesele var aynı görevi yapan iki program olsun biri asam ile 20 step olsun. diğeride c de yazılsın oda derlenince 20 step olsun şimdi bunlar aynı hızda cevrimi tamamlamazmı?yada kullanıcı faktörü yokmu bu işte biri aynı programı asm ile daha yavaş çalışan şekildede yazamazmı?

Aman olay yanlış yerlere gitmesin. ASM satranç oynamak gibidir. Bir kaç satır sonra yazacağın asm kod için seçeceğin registeri daha o an yazacağın satırdaki ile uyumlu seçersin. Böylece ara atama işleri ortadan kaybolur.

C de derleyici belli disiplinlere sadık kaldığı için kafa yorulmuş ASM kadar optimize kod üretemiyor.
KEIL ortamında ARM için yazılmış C derleyici gerçekten çok optimize kodlar üretiyor. Buna rağmen asm bazında optimize edilebiliyor. Bunun için bir 5-10 satır geriye gidip 10 satır ileriyi düşünerek kodlama yapmak yeterli.

Eğer C ve ASM, aynı program parçacığını sonuçta aynı ve eşit sayıda komutlarla oluşturduysa hızları aynı olur.

Eğer amaç hız değilse ARM işlemci ile devam etmekte fayda var.

STM32F407 ile genel olarak C2000 serisininde ADC kıyaslamak doğru değil. En kıytırık C2000 (16 bit aiılesinden) 500ns de çevrimi tamamlıyor. STM32F407 ARM CM4 ve çok uç bir noktada.  32F407 karşısına C2000 in 32bit FP denetleyicilerini çıkartmak lazım. Bunlarda ADC hızı zaten abartılı derecede yüksek.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

fractal

bir program yazıpta deneyen varmı ölçen varmı c ile asm arasındaki fark aynı işlemci ve aynı iş için ne kadar? teorik olarak anlatılanlar doğru peki gerçekte örneğin asm 100ns de tamamlıyorsa aynı iş için yazılan ve optimizede edilen  c programı 200ns  yoksa 2000ns mi oluyor.
Restantum cogniscutur Quantum deligutur

berat23

Alıntı yapılan: fractal - 10 Mayıs 2012, 12:09:42
bir program yazıpta deneyen varmı ölçen varmı c ile asm arasındaki fark aynı işlemci ve aynı iş için ne kadar? teorik olarak anlatılanlar doğru peki gerçekte örneğin asm 100ns de tamamlıyorsa aynı iş için yazılan ve optimizede edilen  c programı 200ns  yoksa 2000ns mi oluyor.

öyle bir kıyasa gitmek mümkün değil.teorik,pratik diye birşey de yok aslında,yazılan koda göre daha hızlı olabilir.olmaz ama en iyi ihtimalle aynı hızda çalışırlar.bunu basit örneklerle anlatmak mümkün değil,temel bir konu,geniş ele almak lazım.

z

#13
@fractal

Defalarca denenmiş bir durum bu. Bilgisayar tarafından optimize edilmiş kod elle (asm ile) hala budanıp kısaltılabilecek kadar optimize edilecek durumdadır. Bu nedenledirki çok kritik durumlarda interrupt rutini gibi özel rutinler asm ile yazılır.

C ile yazılmış bir de ASM ile kodlanmış örnekleri ve sonuçları aşağıda linkini verdiğim tartışmada görebilirsin.
Burada oldukça efektif ve C ile yazılmış küçük bir program parçacığının eşdeğerinin ASM de nasıl daha kısa yazılabileceği görebilirsin.

Her ne kadar örnek ASM kodlamada  donanım özelliklerine müracat edilmiş olsa da verdiğim kodlarda registerlerin nasıl uyum içinde çalışacak şekilde seçildiklerini görebilirsin. Sonuç, bu örnek için C ye göre %25 daha kısa kod.

https://www.picproje.org/index.php/topic,35794.msg258914.html#msg258914

Fakat işin içine taşınabilirlik şartı girerse bu durumda ASM kodlamadan kesinlikle uzak durmalısın. Zira asm kodlamada muhatabın doğrudan kod yazdığın işlemcidir. Aynı kodları bir başka işlemcide (tamamen farklı bir işlemcide) kullanamazsın.

Konu C2000 den kaydı. Geri dönelim. ASM tartışması tatlı bitmiyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

fractal

şimdi ben lineer voltaj transformator (lvt) uygulaması yapacaktım.ti bu iş için c2000 dsp öenermiş.ama yanı zamanda işlemci pc ile haberleşecek aynı zamanda başka modüller varsa onlarla haberleşecek.ve başka bir iş için spwm uygulaması (inverter için) de bunu kullanmayı düşünüyorum.ayriyeten yüksek voltaj trafo uygulamasında da kullanıcaktım.baştan c2000 mi yoksa arm çekirdekli başka bir işelmciylemi başlamalıyım.kararsız kaldım.
Restantum cogniscutur Quantum deligutur