4 adet CM3 arasında veri paylaşımı

Başlatan z, 14 Haziran 2016, 05:54:43

fatih6761

Alıntı yapılan: z - 14 Haziran 2016, 09:32:08
10Mbit hızda veri aktarsam bile 150us zaman gerekiyor. Hiç işime yaramıyor.

Hocam eğer bu kadar zaman kısıtı varsa koşulları daha açık belirtmeniz lazım.

1) Parallel iletişim yok dediniz, dolayısıyla seri iletişim kullanılacak, kaç seri iletişim modülü kullanabiliyoruz? İstediğimiz kadar serbest mi?
-> Eğer böyleyse en iyisi her çipte kombinasyon (4, 2) = 6 tane SPI modülü kullanarak her 2 çip arasında bir duplex SPI kurarız. 10MBit SPI ile yaklaşık 51 uS de olur.
-> 20 uS yi yakalamak için en az 26 MBit bir seri hat kullanmanız gerekir. Kısa mesafede imkansız değil ama güvenilirliği tartışılır.

2) Bu istediğiniz 20uS içinde işlemci boşta mı? Öyle olacaksa işlemcilerin MCLK pinlerini senkronlayıp software bir seri iletişim uygularsanız ciddi hızlara ulaşabilirsiniz. Pratikte uygulaması nasıl olur, uğraştığınıza değer mi bilemem.

3) Sanırım multicore işlemci kullanma fikrinden bahsedilmiş. Bunlarda aslına bakarsak özel RAM kullanma durumuna girmiyor mu? 2 işlemci var tek RAM i paylaşan. Böyle yapacağımıza 1KBit lik DRAM koyalım işlemciler sadece data paylaşmak için kullansın.

4) Bu kadar hız illaki lazımsa USB 2.0 HS kullanın 480Mbit/s. F407 de vardı sanki :)

Şahsi fikrim: Hocam ya şartlarınızda bir fazlalık var ya da karşılaştığınız problemin daha değişik bir çözümü var. Bu tarz bir veri aktarımını neden ve nasıl istediğinizi tam anlarsak daha doyurucu cevaplar gelebilir belki.

yamak

Hocam quad Spi kullanabilirsiniz ya da ethernet de olabilir.

ErsinErce

#17
SPI Chain 18 mbps de 10.7us 85.6 us de 192 byte transferi tamamlayabilir.

Edit: hesap hatası

yamak

#18
Hocam şöyle yapsanız nasıl olur?
Tüm mikro ların spi enable pinlerini birbirine bağlayın.

İlk hamlede S2 ve S3 ün MOSI ve MISO pinlerinin ikisini de kendi yazdığınız soft SPI in MOSI pini yapın.(Soft spi ın SCK sını Hard SPI ın SCK sı besleyecek).S1 ise SPI master,S4 ü de SPI slave olarak ayarlayın.Daha sonra S1 ve S4 data larını kendi aralarında paylaşırken S2 ve S3 den de o dataları okuyun.Yani ilk hamlede

S1'deki datalar:(S1,S4)
S2'deki datalar:(S2,S1,S4)
S3'deki datalar:(S3,S1,S4)
S4'deki datalar:(S4,S1)

İkinci hamlede de yukarıdaki durumun tersini yapın.
Bu durumda iki hamlede tüm mikrolar birbirlerinin datalarını alımış olur.
Yeterince hızlı bi SPI ile işiniz görülebilir.Stm32f4 ün SPI ı 36 MHZ e kadar çalışabiliyor.(Gerçi 36 mhz de yetmiyor size :) )Tabi bu frekanstaki bi sinyal kablo ile aktarılablir mi denemek lazım.
Yani uygulaması biraz zor gibi ama işe yarayabilir.

z

Alıntı yapılan: fatih6761 - 14 Haziran 2016, 14:40:20
....Hocam ya şartlarınızda bir fazlalık var ya da karşılaştığınız problemin daha değişik bir çözümü var. Bu tarz bir veri aktarımını neden ve nasıl istediğinizi tam anlarsak daha doyurucu cevaplar gelebilir belki...

Bir döngü içinde işletilmesi gereken ve tek işlemci ile yapılan işi çok işlemciye paylaştırmak istiyorum.

Amaç döngü süresini kısaltmak. Hızlı işlemci ile bu süre kısalıyor fakat çip sayısını artırınca hem döngü süresi kısalıyor hem de  ADC, Pwm vs sayısınız artıyor. Bu da daha fazla nesneyi kontrol etme imkanı sağlıyor. Modüler yapı mümkün oluyor.

Fakat çok çipte de böyle haberleşme ihtiyacı çıkıyor.

Paralel haberleşme ve özel ram tabiki işi yokuşa sürmek. Pahalı çözümlerin önünü tıkamak için bu şartları getirdim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

MC_Skywalker

hocam tam size göre bir kart Parellella. ARM çerkdekli ZYNQ FPGA ve 18 çekirdekli yardımcı işlem birimi içeriyor.

https://www.parallella.org

kickstarter projesi olarak görmüştüm şimdi satışa geçmişler.

engerex

#21
Çok (32) çekirdekli xcore varmış.