gongcsf 发表于 2018-7-6 12:05:52

付费请教,ZYNQ如何采集外部ADC的问题

我想弄一个ZYNQ 外部ADC ->CIC ->axi stream DATA FIFO ->DMA ->PS 的东西,有点卡住了。

能不能教教,要多少钱

true_elecom 发表于 2018-7-11 22:58:06

这个官方有样例

stdio 发表于 2018-7-11 23:02:03

折腾起来还挺麻烦的。

dr2001 发表于 2018-8-7 10:18:39

你的思路已经很清楚了,做就是了。。。

如果ADC的采样数据不是连续的,CIC可能做起来有点麻烦,可以考虑看看HLS。

zhaogq 发表于 2018-8-23 14:56:52

您好请问你们zynq跑什么操作系统啊我们也打算用这个平台

gongcsf 发表于 2018-8-27 21:44:52

实在是没有人教,自己慢慢啃。

自定义一个AXI stream IP 一个个的看里面的东西。

原来自定义IP里面东西只做了基本的几个壮态,并跟据壮态改变输出引脚
assign axis_tvalid = ((mst_exec_state == SEND_STREAM) && (read_pointer < NUMBER_OF_OUTPUT_WORDS));
现在生成的自定义IP 每次只发送8个字节,
我想问一下这个每次发送8字节是不是能取消的。
我ADC到AXI stream -》 AXI stream FIFO 一直让它不停在送去FIFO就是了

想折腾就用ZYNQ 没人教,少资料,够麻烦。{:lol:}


gongcsf 发表于 2018-9-3 14:21:59


为什么还是没有流。

dr2001 发表于 2018-9-3 15:17:40

ARM网站有AXI4的全套文档,免费,下载Stream的协议看看。
AXI Stream是片内总线,假定无差错:即数据进入Stream流后,除非数据无效(VALID=0或STRB=0/KEEP=0)或者有专门逻辑Drop,否则有效数据不会丢且基于字节的顺序不会乱。

Xilinx也有AXI Adoption的文档,说明了Xilinx的IP Core对AXIS的支持:印象中是KEEP没用,STRB表明是否有效,且STRB不全为1只能发生在LAST=1的时候。
即Xilinx的AXIS要求类似于连续报文的结构,自包开始就不能有空,直到最后一个Beat。

ADC到AXI Stream十分简单,就是在ADC Sample Clock时钟域,自己确认哪些数据是有效的,对有效数据加上STRB=1和VALID=1,剩下的交给IP Core就行了。
直接进ADC时钟域的FIFO,过个异步的FIFO或者直接进异步接口的DMA。

gongcsf 发表于 2018-9-5 10:56:41

dr2001 发表于 2018-9-3 15:17
ARM网站有AXI4的全套文档,免费,下载Stream的协议看看。
AXI Stream是片内总线,假定无差错:即数据进入St ...

多谢指导,我原以为有Tvalid和Tready信号就可以了。

一个简单的流是不是需要STRB+Tvalid和Tready KEEP可以不用。

dr2001 发表于 2018-9-5 11:35:26

具体看ARM的手册,写的非常明白。

最简Stream为单字节数据,只需要Data,Valid,Ready即可;如果连续不间断,输出可忽略Ready。

gongcsf 发表于 2018-9-16 14:31:00

现在流是出来了。只是不连续,
按说一个adcclk对应一个数据,这里确是一次发32个数据 。
自定义IP里是有个 localparam NUMBER_OF_OUTPUT_WORDS 32
如果改大或者去掉里面读数据点数的代码,并取消计数的话。流又不工作了。


gongcsf 发表于 2018-9-28 22:12:05

经过几天的观察排除法调试,普通数据流可以只要TVALID.但是AXI-DMA的流必须要有TLAST,
我没有去看DMA的资料,似乎TLAST代替了DMA传输计数的作用。
现在使用ADC时钟的情况下已经可以接收到ADC数据到DDR了

还有个问题是CIC输入是125M。输出是1-12.5M。CIC的IP本身不带时钟输出。那么CIC到后级需要一个和CIC输出速率匹配和相位的时钟
使用always@(*) 的话只能得到输出速率一半的频率。其他倍频方式视乎相位又不对。如何解决

longhua 发表于 2018-10-8 23:37:21

做过petalinux的,裸跑应该差不多

fanfanrenfan 发表于 2018-12-12 08:54:54

gongcsf 发表于 2018-9-28 22:12
经过几天的观察排除法调试,普通数据流可以只要TVALID.但是AXI-DMA的流必须要有TLAST,
我没有去看DMA的资 ...

楼主搞定了没?我也是外部AD,得到的数据不知道怎么传给PS,即FPGA的数据怎么到ARM。

gongcsf 发表于 2018-12-12 18:36:01

fanfanrenfan 发表于 2018-12-12 08:54
楼主搞定了没?我也是外部AD,得到的数据不知道怎么传给PS,即FPGA的数据怎么到ARM。 ...

搞定了,ADC-》AXIS FIFO -》DMA-》PS DDR , 一定要自己计数生成TLAST

现在卡在AXI DMA 和 PS DMA 不能同时工做。我还要传到网络里去   

picobox 发表于 2019-3-9 09:59:46

gongcsf 发表于 2018-12-12 18:36
搞定了,ADC-》AXIS FIFO -》DMA-》PS DDR , 一定要自己计数生成TLAST

现在卡在AXI DMA 和 PS DMA 不 ...

现在卡在AXI DMA 和 PS DMA 不能同时工做。我还要传到网络里去   

----------------------------------
这个问题解决了吗?

boyiee 发表于 2019-3-9 10:33:00

楼主可以参考下卖开发板的那几家,好像都有ADC采集的例程。流程跟你这个基本一样。

zynq这东西,需要了解的东西确实比较多,软的涉及到linux内核驱动,硬的涉及到PCB和FPGA的数字逻辑,还有各个IP的流程配合时序,感慨一下。
最近也在做个zynq的项目,基本搞定了,中间也是各种问题,时序的,linux驱动的乱七八糟的。。
因为用PL扩展的东西太多(8个轴电机驱动,两路以太网,VGA输出,还有USB,485之类的乱七八糟的接口一堆。。)。 7020的IO都不够用,又用片STM32扩展了40路普通IO,8个0-10输入,4个0-10输出。。

gongcsf 发表于 2019-3-10 15:07:16

picobox 发表于 2019-3-9 09:59
现在卡在AXI DMA 和 PS DMA 不能同时工做。我还要传到网络里去   

----------------------------------


换成了bram 外加计数器做为中断,linux中断后发送到eth

vermon 发表于 2019-4-27 06:33:13

gongcsf 发表于 2019-3-10 15:07
换成了bram 外加计数器做为中断,linux中断后发送到eth

请问网络部分,是直接arm跑的呢,还是pl端做的mac

xiaomu 发表于 2019-4-27 13:41:52

不明觉厉,跟听天书一样{:lol:}
页: [1]
查看完整版本: 付费请教,ZYNQ如何采集外部ADC的问题