Uart'tan gelen veriyi DMA ile DDR hafızaya yazmak istiyorum.Zynq kullanıyorum.Kafama tam oturmadı.uarttan gelen veriyi dma'ye nasıl bağlayacağım bilmiyorum.Bunun nedeni zynq dma'e AXI portundan giriş yapılabiliyor.Ama UART'ın axı çıkışı yok.Forumda Zynq kullanan varmı bilmiyorum varsa veya fikir yürütebilecek varsa yardımcı olabilirmi.
Aşağıda zynq in mimarisini paylaşıyorum.
https://forums.xilinx.com/t5/Xcell-Daily-Blog-Archived/Meet-the-Zynq-MIO-Adam-Taylor-s-MicroZed-Chronicles-Part-9/ba-p/386661
FPGA den anlamam ama Zynq uzerindeki ARM-A9 ile ugrasmisligim var. 8-)
Hatirladigim kadariyla ARM uzerindeki uartin AXI ye baglantisi yok. Bu yuzden ARM in UARTi alsin PL nin DMA i DDR a tasisin diyemiyorsun. Bu olayi ya PS tarafinda yada PL tarafinda cozmen gerekiyor.
Mesela PL icin dusunursek; PL deki UART IP si veriyi alacak ve buna bagli AxiDMA in olacak. AxiDMA aldigi veriyi DDR a tasiyacak. AxiDMA yi ARM da konfigure edebilir PL de.
Veya PS icin dusunursek; PS UART veriyi alacak ARM in DMA yi DDR a tasiyacak.
;)
Hocama sordum uart'tan dma'ye bir bağlantı olmadığını söyledi. Çözüm olarak uart'tan gelen veriyi bir fifo'ya dolduramamı ve fifo'yuda dma ile ddr'a bağlayarak çözüme ulaşabileceğimi söyledi.Şuan bu mimari üzerinde çözüme ulaşmaya çalışıyorum.
Zynq ve SoC üzerine Türkçe kaynağı bırakın ingilizce kaynak bile bulmak zormuş.Tek kaynak datasheet'ler. İşi kavramaya başladıktan sonra bu konuda Türkçe bir blog yazmayı hedefliyorum.
Xilinx Docnav i yuklemen gerekiyor. Her turlu bilgiyi orada bulabilirsin. Google da arama. ;)
Orası öyle docnav yüklü. Zynq'i yeni yeni öğreniyorum. Mesela fifo için döküman okuyorum. Diyorki Axi lite şu işe yarar axi s2mm şu işe yarar. Ben daha bunların de olduğunu bilmiyorum.Daha sonra açıp axi ile ilgili döküman okuyorum. İş böyle uzuyor. STM32 'dede böyle bir şey yaşamıştım ilk öğrenir iken örnekler ile öğrendim daha sonra bir işi yapmak için datasheet yetmeye başladı. Ama datasheet'i anlamak içinde bir miktar işin içine girmiş olmak gerekiyor.Şuan o işin içine girme aşamasındayım.
Dogrudur ;)
Adam Taylor diye bir amca var. Bu seriyi yalamis yutmus. Her konu hakkinda ufak yazilari var. Buna da goz atabilirsin.
http://adiuvoengineering.com/microzed-chronicles/
Fpga içinde bir uart tanımlayıp basit bir şekilde ile Ramin istediğiniz bölgesine gönderebilirsiniz,
Alıntı YapUART'ın axı çıkışı yok
Nereye gidiyor peki bu, direk cpu bağlantısı mı var ? Öyle olursa daha iyi stm32/pic vs gibi kullanırsın.
Burada logic bölge ile bağlantı var görünüyor?. Sadece fpga ile ilgili pinleri bağlantı yapmak kalıyor .
(https://image.ibb.co/i4i56V/sefeffff.jpg)
ARM ile fpga tarafının arasındaki tek bağlantı axi diye biliyorum.Uart lojik bölgeye bağlı ama axi interconnect'e bağlı değil.
Iki farkli yaratik olan ARM ve FPGA ayni kiliftalar sadece ARM in UART ina FPGA den ulasmak mumkun degil.
Ben pdf ye baktım yukarıdaki resimde bağlantı var gözüküyor ,
Bu bağlatılara isim vermişlerdir örnek [7:0]Uart_out_TX ,UartCLK_TX vsvs , fpga ile bu girişleri alır axi porta bağlarsın.
Direk cpu ile uart bağlantılı fpga bağlantısı yok ise işin daha kolay stm32 de nasıl yapılıyorsa o şekilde fmc özelliği olan external ram bağlanan stm32 de dma ve ram iletişimi mümküm .
Tek yapman gereken mcu kodlar gibi kodlamak fpga ya hiç dokunman gerekmez böyle.
@iboibo ::) haklisin baglanti var diyor datasi. Aklimda yanlis kalmis. Yinede bu durumu Zynq kullanan bir arkadasa sordum o da baglanti var dedi. :-[ :-[
Merhaba
Projemi belli bir noktaya getirdim son durumu paylaşmak istedim belki birinin işine yarar.
UART kullanmaktan vazgeçtim ethernet kullanıyorum ve LWIP stack ini kullandım. Kısaca projem ethernet ile yolladığım bir resime veri damgalama yapma.Ethernet ile gelen veriyi BRAM0'a gizlenecek veriyi ise BRAM1'e yüklüyorum .BRAMlerden otomatik verileri alıp resim üzerine gizleyen bir ip tasarladım.Bu ip BRAM 0 'dan resimi BRAM 1'dende veriyi alıp resime damgalama yapınca BRAM 2'ye yüklüyor.En son damgalanmış veri DDR'a CDMA vasıtasıyla BRAM2'den yükleniyor.
FPGA ile uğraşanlara HLS 'i araştırmasını şiddetle tavsiye ederim.C++ ile fpga donanımı tasarlayabileceğiniz bir ortam.
En son tasarladığım blok şemam şu şekilde.
(https://i.ibb.co/3S66QL3/Ekran-Al-nt-s.png) (https://ibb.co/3S66QL3)
SDK tarafında ZYNQ kodu tamamlanınca projenin tamamını buradan paylaşacağım.
NOT:
Yeşil veri yolu:ZYNQ Master Axi
Mavi Veri Yolu:CDMA Axi portu
Kırmızı veri yolu:HLS ile tasarladığım veri gizleme IP'nin BRAM portları
tebrikler ;)
Alıntı yapılan: Emre_Tuncay_ - 28 Ekim 2018, 22:22:52Hocama sordum uart'tan dma'ye bir bağlantı olmadığını söyledi. Çözüm olarak uart'tan gelen veriyi bir fifo'ya dolduramamı ve fifo'yuda dma ile ddr'a bağlayarak çözüme ulaşabileceğimi söyledi.Şuan bu mimari üzerinde çözüme ulaşmaya çalışıyorum.
Zynq ve SoC üzerine Türkçe kaynağı bırakın ingilizce kaynak bile bulmak zormuş.Tek kaynak datasheet'ler. İşi kavramaya başladıktan sonra bu konuda Türkçe bir blog yazmayı hedefliyorum.
Selam uzun süre olmuş ama FPGA ile hala ilgileniyormusunuz. Türkçe blog işi ne oldu. Bende FPGA ya başladım çözmeye çalışıyorum. Türkçe kaynaklara ihtiyacım var yardımlarınız için şimdiden teşekkürler.