Picproje Elektronik Sitesi

BİLGİSAYAR => Donanım ve Yazılım => Konuyu başlatan: Emre_Tuncay_ - 26 Ekim 2018, 02:26:36

Başlık: Zynq Uart'tan gelen veriyi DMA ile DDR'a yazma.
Gönderen: Emre_Tuncay_ - 26 Ekim 2018, 02:26:36
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
Başlık: Ynt: Zynq Uart'tan gelen veriyi DMA ile DDR'a yazma.
Gönderen: OptimusPrime - 26 Ekim 2018, 09:50:38
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. 

 ;)
Başlık: Ynt: Zynq Uart'tan gelen veriyi DMA ile DDR'a yazma.
Gönderen: Emre_Tuncay_ - 29 Ekim 2018, 01:22:52
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.
Başlık: Ynt: Zynq Uart'tan gelen veriyi DMA ile DDR'a yazma.
Gönderen: OptimusPrime - 29 Ekim 2018, 19:56:08
Xilinx Docnav i yuklemen gerekiyor. Her turlu bilgiyi orada bulabilirsin. Google da arama.  ;)
Başlık: Ynt: Zynq Uart'tan gelen veriyi DMA ile DDR'a yazma.
Gönderen: Emre_Tuncay_ - 29 Ekim 2018, 23:21:29
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.
Başlık: Ynt: Zynq Uart'tan gelen veriyi DMA ile DDR'a yazma.
Gönderen: OptimusPrime - 29 Ekim 2018, 23:56:43
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/
Başlık: Ynt: Zynq Uart'tan gelen veriyi DMA ile DDR'a yazma.
Gönderen: iboibo - 30 Ekim 2018, 00:53:55
Fpga içinde bir uart tanımlayıp basit bir şekilde ile Ramin istediğiniz bölgesine  gönderebilirsiniz,


AlıntıUART'ı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)


Başlık: Ynt: Zynq Uart'tan gelen veriyi DMA ile DDR'a yazma.
Gönderen: Emre_Tuncay_ - 30 Ekim 2018, 02:12:51
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.
Başlık: Ynt: Zynq Uart'tan gelen veriyi DMA ile DDR'a yazma.
Gönderen: OptimusPrime - 30 Ekim 2018, 02:20:57
Iki farkli yaratik olan ARM ve FPGA ayni kiliftalar sadece ARM in UART ina FPGA den ulasmak mumkun degil.
Başlık: Ynt: Zynq Uart'tan gelen veriyi DMA ile DDR'a yazma.
Gönderen: iboibo - 30 Ekim 2018, 19:40:58
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.
Başlık: Ynt: Zynq Uart'tan gelen veriyi DMA ile DDR'a yazma.
Gönderen: OptimusPrime - 30 Ekim 2018, 20:54:44
@iboibo

 ::) haklisin baglanti var diyor datasi. Aklimda yanlis kalmis. Yinede bu durumu Zynq kullanan bir arkadasa sordum o da baglanti var dedi.  :-[  :-[
Başlık: Ynt: Zynq Uart'tan gelen veriyi DMA ile DDR'a yazma.
Gönderen: Emre_Tuncay_ - 18 Aralık 2018, 02:50:50
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ı

Başlık: Ynt: Zynq Uart'tan gelen veriyi DMA ile DDR'a yazma.
Gönderen: OptimusPrime - 18 Aralık 2018, 03:03:25
tebrikler  ;)