取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
sss821017@gmail.com
Contributor
Contributor
1,465 次查看
注册日期: ‎01-08-2020

用DMA讀取DDR

大家好

使用 : ZYNQ 7020

我的目的是要  讓我設計的IP讀取 80萬筆 25bit 資料 運算

資料是由圖像轉成 binary 數據 存成 text檔  數據如附件

參考了其他的做法

用PS端把數值寫進DDR,再用DMA把值讀取出來

 

block design.png

看了範例程式

xaxidma_example_simple_intr.c 還是沒理解

我想先把數據讀出來觀察

應該如何改寫程式?

謝謝

 

 

 

 

 

0 项奖励
19 回复数
terryn
Xilinx Employee
Xilinx Employee
1,454 次查看
注册日期: ‎06-19-2019

你可以先用axis fifo实现内存到fifo之间的数据搬运。然后把axis fifo替换成你自己的IP就行。

代码上两者没有什么区别。

------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution.
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------
0 项奖励
sss821017@gmail.com
Contributor
Contributor
1,353 次查看
注册日期: ‎01-08-2020

我改用 xsct 外部數據導入DDR

dow -data {D:\data2.bin} 0x10000000

Successfully downloaded D:/data2.bin  

成功導入後 要在哪裡看位址和數據?

謝謝

0 项奖励
shengjie
Moderator
Moderator
1,300 次查看
注册日期: ‎07-01-2019

debug界面中找一下memory,输入你想观察的地址空间就能看到

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
sss821017@gmail.com
Contributor
Contributor
1,293 次查看
注册日期: ‎01-08-2020

請問是這個介面嗎 沒有地方輸入
我使用的是 SDK 2018.2

 註解 2020-05-12 171328.png註解 2020-05-12 171328.png

0 项奖励
shengjie
Moderator
Moderator
1,272 次查看
注册日期: ‎07-01-2019

尝试一下关掉重开,在Window->Show View中可以找到

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
sss821017@gmail.com
Contributor
Contributor
1,247 次查看
注册日期: ‎01-08-2020

註解 2020-05-12 200614.png

已經重啟了,還是其他設定問題  或是有其他方法看

0 项奖励
shengjie
Moderator
Moderator
1,240 次查看
注册日期: ‎07-01-2019

是在debug条件下打开的吗?你发的图上加号是灰的,debug下这个符号是绿的,可以点击

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
sss821017@gmail.com
Contributor
Contributor
1,005 次查看
注册日期: ‎01-08-2020

導入數據後像圖中這樣,有什麼辦法一次25bits的把它讀取出來嗎?

謝謝

ddrdata.png

0 项奖励
shengjie
Moderator
Moderator
998 次查看
注册日期: ‎07-01-2019

即使是DMA的非对齐传输,也要以一个字节为最小单位,是没法按25bit读出的,你可以用一些程序完成32bit到25bit的转换

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
sss821017@gmail.com
Contributor
Contributor
989 次查看
注册日期: ‎01-08-2020

轉換部分有什麼可以參考的程序嗎?

0 项奖励
shengjie
Moderator
Moderator
892 次查看
注册日期: ‎07-01-2019

不知道你需要连续存储25bit的需求是什么?完全可以padding成32bit,高7bit数据可丢弃,这样从AXI总线做数据读写很方便。

如果一定要32bit转25bit的话,需要你自己设计RTL模块实现此功能

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
sss821017@gmail.com
Contributor
Contributor
856 次查看
注册日期: ‎01-08-2020

我轉成32bit了 但沒辦法用 dow -data  寫進去

 Context does not support memory write. Unsupported command

我的block design接法 和上面那張圖一樣

0 项奖励
shengjie
Moderator
Moderator
852 次查看
注册日期: ‎07-01-2019

XSCT中输入targets看下标记*号的是哪个设备?是不是指定到PL侧了,可以用tar 2来指定CPU,进而使用dow -data指令

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
sss821017@gmail.com
Contributor
Contributor
779 次查看
注册日期: ‎01-08-2020

照你的方式成功輸入了
後續將DDR數值搬出來

想請問xaxidma_example_simple_intr中

Status = XAxiDma_SimpleTransfer(&AxiDma,(UINTPTR) TxBufferPtr,
MAX_PKT_LEN, XAXIDMA_DMA_TO_DEVICE); 是指 DMA到 device嗎?還是DDR到device

在address editor  ,process system中的 axi_dma   0x4040_0000 是指哪裡?

 

0 项奖励
shengjie
Moderator
Moderator
755 次查看
注册日期: ‎07-01-2019

1. 从DDR读数据转换成流数据发送给下游设备,也就是DMA到Device

2. 0x4040_0000是用户分配的AXI DMA基地址,CPU通过访问此地址配置AXI DMA的寄存器。

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
sss821017@gmail.com
Contributor
Contributor
737 次查看
注册日期: ‎01-08-2020

所以範例程式中AXI DMA的寄存器已經配置好了嗎?
還是需要另外寫
0 项奖励
shengjie
Moderator
Moderator
735 次查看
注册日期: ‎07-01-2019

system.mss中有参考例程,你可以参考一下里面函数的写法,用户只需要根据自己需求修改传输长度、源地址、目的地址等,初始化配置代码里也有的 。

-------------------------------------------------------------------------------------------------
Don’t forget to reply, kudo, and accept as solution.
-------------------------------------------------------------------------------------------------
如果提供的信息能解决您的问题,请标记为“接受为解决方案”。
如果您认为帖子有帮助,请点击“奖励”。谢谢!
-------------------------------------------------------------------------------------------------
0 项奖励
sss821017@gmail.com
Contributor
Contributor
683 次查看
注册日期: ‎01-08-2020

我是跑xaxidma_example_simple_intr
修改传输长度 32
dow -data 起始地址 0x01100000
目的地址沒改
給value 還有Xil_DCacheFlushRange((UINTPTR)TxBufferPtr, MAX_PKT_LEN); 都註解掉
但ILA 沒有讀到值 No stream
0 项奖励
sss821017@gmail.com
Contributor
Contributor
548 次查看
注册日期: ‎01-08-2020

圖片右邊為 我要輸入的32bit值  左邊是輸入進DDR

想請問 位址 01100020 開始 30303030 當中的3,還有後面的 0A0D 要怎麼去除

我希望回傳TDATA的值就是第1筆第2筆依序下去 是要轉成 .hex嗎?

還想問 A D 跟3  有代表甚麼意思嗎 

AD.png

0 项奖励