完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,
我需要一些重新保证,我理解嵌入式系统在数据流方面的工作原理。 让我画一幅我正在拍的照片。 我有一个Virtex 6开发板,用于从Analog DevicesADC收集数据并将其存储到DDR3 RAM中。 然后我有一个自定义IP FFT模块,我将用它来获取这些收集数据的FFT并通过UART将其发送到PC进行后处理(图形化)。 来自ADC的数据是流数据(因为它没有存储器寻址的概念),因此被送入DMA以将其转换为DDR3 RAM的存储器映射数据。 到目前为止,我一直在使用ADI公司提供给我的参考设计,它正在运行。 下一步是在FFT中工作。 我的理解告诉我,最简单的方法是从DDR3内存中获取数据并将其输入FFT。 我不自信的是,我应该怎么做。 我是不是该: 1)使用另一个DMA将内存映射的DDR3数据转换为流数据并使用流式FFT? 如果是这样,那是否也意味着我需要第三个DMA将输出FFT流转换回内存映射数据以将其重新置于DDR3中? 2)保持数据存储器映射。 我对这是如何工作有点困惑。 据我了解,每次需要将数据从DDR3传输到FFT然后再返回时,需要Microblaze调用一个函数。 我是否正确对于在这种方法中由FFT处理的每一块数据都需要Microblaze? 这种方法中的数据流是什么,数据是否从DDR3直接传输到FFT,或者是否有像Microblaze在将数据发送到FFT之前将数据移动到的本地BRAM之类的中间存储器位置? 感谢您的任何帮助, 丰富 |
|
相关推荐
12个回答
|
|
|
|
|
|
Bwiec,在这个阶段,我想单独留下参考设计。
将FFT放在ADC和DMA之间会改变这种情况。您是否有机会对我上面提出的每个问题发表评论? 这将是一个很大的帮助.v / r,Rich |
|
|
|
Hi Rich,好的,确定.1)是的,你需要总共3个DMA通道来完成这个2)保持数据存储器映射不是一个真正的选择,因为FFT不是内存映射的。
您可以使用microblaze进行转换,因为它具有可选的AXIS接口和推/弹指令来访问它们。 但是,对于任何实际数量和吞吐量要求,由于多种原因,这实际上是不实际的。 你可能不想要这个流程。 一个可能的中间选项是使用AXIS-to-MM FIFO作为结构中的中间缓冲区,微光纤可以写入并进行转换。 但同样,微博将只是浪费周期移动数据。 这是DMA在生活中的全部工作:) www.xilinx.com |
|
|
|
为什么说FFT不是内存映射?
|
|
|
|
简单的答案是因为它有一个AXI Stream接口而不是AXI Memory Mapped接口。
你不能直接把它们挂在一起; 您需要在它们之间进行转换。在更广泛的范围内,内存映射数据具有与之关联的地址。 FFT不关心地址......它只需要一个样本并推出一个样本。 它只是一个原始数据流。 当你开始进入一个嵌入式世界,你有处理器,内存,总线,外围设备等相互交互时,你需要一种标准的方式来打包和引导这些数据。 www.xilinx.com |
|
|
|
直到你提到这一点,我一直假设只有流水线架构是流媒体,其他radix4和2架构是内存映射。
谢谢你清理它。 现在这引出了以下问题,我是否需要使用AXI-Streaming总线或DMA模块将数据从FFT发送/接收到DDR3? 第一次进行这种设计确实令人困惑和困难。 谢谢你的帮助。 丰富 |
|
|
|
嘿Rich,
是的,肯定有很多活动部分:)。 哦,抱歉这个混乱。 不,甚至Radix 2/4模式也使用AXI Stream接口。 AXI Stream不是真正的总线; 它是一个点对点的界面。 AXI4更像是一辆公共汽车。 也许一张照片会有所帮助。 这大致是您将为数据路径做的事情。 Green代表AXI4内存映射接口(通常称为AXI4MM或AXI4)。 红色是AXI流(或AXIS): www.xilinx.com |
|
|
|
|
|
|
|
感谢图片,这真的很有帮助。现在,就本机的软件方面而言,我是否认为在向FFT发送数据时会解决DMA问题?
|
|
|
|
|
|
|
|
现在,就本机的软件方面而言,我是否认为在向FFT发送数据时会解决DMA问题?
是的,图中未显示DMA引擎上的AXI Lite接口。 这用于设置传输。 在软件中,你会在DDR中声明一些缓冲区: int my_buf [FFT_LENGTH]; 然后将缓冲区地址传递给DMA API: XAxiDma_SimpleTransfer(...,(int)my_buf,...) 该API将通过AXI Lite控制接口将my_buf的地址传递给DMA引擎。 然后,DMA将开始通过高性能AXI4接口向/从存储器传输数据。 看看这里的软件示例: C:赛灵思 14.7 ISE_DS EDK SW XilinxProcessorIPLib DRIVERS axidma_v7_02_a 实例 哦,就DMA通道而言,我读到DMA最多可以有16个通道。 对于上面的图片,这是否意味着我可以使用三个不同的通道处理三个不同的数据流的一个DMA IP核? 是的,DMA确实具有多通道模式。 但是,如果我是你,我不确定我会担心。 原因是多通道模式不会为每个通道暴露不同的AXI Stream接口。 相反,它期望数据在一个接口上进行时间复用,并使用TID / TDEST信号进行路由。 要在您的系统中实现此功能,需要在硬件中进行大量额外设置。 该软件也相当复杂。 做3个独立的DMA要容易得多。 www.xilinx.com |
|
|
|
哦,顺便说一下。
DMA内核有两个独立的读/写通道,可以独立使用,同时仍然使用简单模式。因此,您可以将两个与FFT通信的DMA内核减少到一个单独的DMA。 有关示例,请参阅附件。 www.xilinx.com dma_ex_fft_v1_0.zip 388 KB |
|
|
|
只有小组成员才能发言,加入小组>>
2429 浏览 7 评论
2831 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2298 浏览 9 评论
3378 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2468 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1310浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
595浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
456浏览 1评论
2011浏览 0评论
737浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 18:10 , Processed in 1.840207 second(s), Total 103, Slave 86 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号