100MHz SPI clock

Başlatan Analog, 27 Mart 2020, 11:59:38

Analog

Herkese merhaba,

kullandığım IC de haberleşme arayüzü spı ya da lvds olarak belirtilmiş ve spı için 10ns SCKI zamanlaması belirlenmiştir.

Kullandığım cpld ye dışarıdan 100Mhz lik bir osilatör bağladım tabi bu osilatör referansından 100Mhz saat darbesi üretmem pek mümkün görünmüyor.

Kartın istenen şartlarda çalışması için min 200MHz mi yoksa daha yüksek bir osilatör mü kullanmam gerekir?

Mucit23

Çok FPGA ve benzeri yapılarla bilgim yok ama şöyle bir yorumda bulunabilirim. Daha düşük frekanslı bir osc(örneğin 50Mhz) bağlayıp iç yapıda clock multiplier ve benzeri yapılar oluşturularak istenen frekanslar elde edilir sanırım.

muuzoo

Alıntı yapılan: Analog - 27 Mart 2020, 11:59:38Herkese merhaba,

kullandığım IC de haberleşme arayüzü spı ya da lvds olarak belirtilmiş ve spı için 10ns SCKI zamanlaması belirlenmiştir.

Kullandığım cpld ye dışarıdan 100Mhz lik bir osilatör bağladım tabi bu osilatör referansından 100Mhz saat darbesi üretmem pek mümkün görünmüyor.

Kartın istenen şartlarda çalışması için min 200MHz mi yoksa daha yüksek bir osilatör mü kullanmam gerekir?

Neden kullanamayacağınızı anlayamadım? 100 Mhz clock varsa, kullanabilirsiniz bunu doğrudan SCLK olarak.
gunluk.muuzoo.gen.tr - Kişisel karalamalarım...

Analog

Kullandığım IC min SCKI 100MHz ve  aktif osilotor sin olarak fpga e 100MHz gönderiyor.

FPGA 'e verdiğim 100Mhz'i böldüğüm zaman 25Mhz den sonra ne PWM ne de Sin gibi bir sinyal çıkıyor.

Direkt atama yı dededim ama bir sonuç alamadım

Monad

muzoo hocam daha bilgili ama yine de düşüncelerimi yazayım.

Güzel bir açıklama yapmamışsınız o yüzden sizin yazdıklarınızdan anladığım ve tahminlerime göre birşeyler yazıyorum.

SPI protokolünün 4 farklı modu var. Bu modlar faz farkını belirliyor. Kullandığınız IC'nin SPI moduyla FPGA devreniz arasında faz farkı olduğundan ana clock'unuz haberleşme için yetersiz kalıyor çünkü VHDL hem rising edge hem falling edge olmak üzere çift tetiklenmeye izin vermiyor. Bu yüzden senkron haberleşmeyi sağlayamıyorsunuz ve çıktı alamıyorsunuz.

Bu problem daha yüksek clock kullanılarak 2 rising_edge'in 1'i rising edge 1'i falling edge olduğu sizin tarafınızdan bilinerek SCKI'nız da ana clock'unuzun yarısı olarak seçilerek çözülüyor. Yani 200Mhz lik sinyalle veri ve kontrol yollarını yönetip 100Mhz'lik de SCKI çıkışı veriliyor ve böylece kullanacağınız SPI modu neyse o modda senkron olarak haberleşebiliyorsunuz. İnternette hazır IP'ler var kullanım için yukarıda söylediğimi yapıyorlar.


Analog

Alıntı yapılan: muuzoo - 27 Mart 2020, 13:46:27Neden kullanamayacağınızı anlayamadım? 100 Mhz clock varsa, kullanabilirsiniz bunu doğrudan SCLK olarak.

Hocam şöyle bir durum var 100MHz aktif osilatör input tan kare dalga elde etmeye çalısıyorum SPI için

muuzoo

@Analog hocam siz FPGA mi kullanıyorsunuz CPLD'mi. Model bilgisi vermeniz mümkün mü?
gunluk.muuzoo.gen.tr - Kişisel karalamalarım...

muuzoo

#7
Alıntı yapılan: Monad - 30 Mart 2020, 16:52:57muzoo hocam daha bilgili ama yine de düşüncelerimi yazayım.

Güzel bir açıklama yapmamışsınız o yüzden sizin yazdıklarınızdan anladığım ve tahminlerime göre birşeyler yazıyorum.

SPI protokolünün 4 farklı modu var. Bu modlar faz farkını belirliyor. Kullandığınız IC'nin SPI moduyla FPGA devreniz arasında faz farkı olduğundan ana clock'unuz haberleşme için yetersiz kalıyor çünkü VHDL hem rising edge hem falling edge olmak üzere çift tetiklenmeye izin vermiyor. Bu yüzden senkron haberleşmeyi sağlayamıyorsunuz ve çıktı alamıyorsunuz.

Bu problem daha yüksek clock kullanılarak 2 rising_edge'in 1'i rising edge 1'i falling edge olduğu sizin tarafınızdan bilinerek SCKI'nız da ana clock'unuzun yarısı olarak seçilerek çözülüyor. Yani 200Mhz lik sinyalle veri ve kontrol yollarını yönetip 100Mhz'lik de SCKI çıkışı veriliyor ve böylece kullanacağınız SPI modu neyse o modda senkron olarak haberleşebiliyorsunuz. İnternette hazır IP'ler var kullanım için yukarıda söylediğimi yapıyorlar.



Merhaba @Monad, frekansı ikiye katlamadan da bir çözüm üretilebileceğini düşünüyorum.Çalışma moduna göre MOSI ve MISO işlemlerini iki ayrı process de kontrol edebiliriz. Birini yükselen kenar diğerini düşen kenar tetiklemeli çalıştırırsak sorun olmadan iki kenarda da işlem yapılabilir.
gunluk.muuzoo.gen.tr - Kişisel karalamalarım...

Analog

Alıntı yapılan: muuzoo - 17 Nisan 2020, 15:48:52@Analog hocam siz FPGA mi kullanıyorsunuz CPLD'mi. Model bilgisi vermeniz mümkün mü?

CPLD kullanıyorum. EPM240t100c5n

Analog

Alıntı yapılan: muuzoo - 17 Nisan 2020, 18:23:01Merhaba @Monad, frekansı ikiye katlamadan da bir çözüm üretilebileceğini düşünüyorum.Çalışma moduna göre MOSI ve MISO işlemlerini iki ayrı process de kontrol edebiliriz. Birini yükselen kenar diğerini düşen kenar tetiklemeli çalıştırırsak sorun olmadan iki kenarda da işlem yapılabilir.

Merhaba evet aslında iyi bir açıklama yapamadım. Osiloskopla bakarken input clock referansını (sinüs 100MHz)
böldüğüm zaman ekteki görüntüleri elde ediyorum. İlk once acaba ground problemi olabilir mi dedim ama frekans düşürünce problem olmadığını gördüm. Açıkçası sayısal tasarımda da pek fazla bilgim olmadığı için internetteki kodlar üzerinden sonuç çıkarmaya çalısıyorum.

Osiloskop ölçümünde referans clock 50Mhz dir









имг