This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM6442:优化 AM64x PRU-ICSSG 以实现确定性 40MSPS 数据采集

Guru**** 2847400 points

Other Parts Discussed in Thread: ADC12DL040

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1634795/am6442-optimizing-am64x-pru-icssg-for-deterministic-40-msps-data-acquisition

器件型号: AM6442
Thread 中讨论的其他器件: ADC12DL040

尊敬的 TI 支持团队:

我写信询问 AM64x Sitara 处理器的高速数据采集功能、特别是将 PRU-ICSSG(工业通信子系统)用于快速采样应用。

我计划与连接  外部 ADC (特别是 ADC12DL040)或 AM64x 入门套件的任何其他器件。 我有以下技术问题:

1.采样率:  PRU 能否有效地处理 12 位数据流的 40MSPS 采样率?
2、接口:考虑到 40MSPS 的要求,推荐哪种接口? 我目前正在查看的是  并行 CMOS 接口  使用 PRU 扩展接头 (J15)。 这是否是实现单周期数据采集的最有效方法?
3.  引脚映射 : 接头上的哪些特定引脚针对此类型的进行了优化 并行数据采集 来确保最小的延迟和确定行为?
资源建议:是否有任何有关 AM64x 上高速并行 ADC 接口的现有 PRU 固件示例或应用手册?

感谢您提供有关实施最佳做法的指导

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Vijay Sharma:

    SK-AM64B:可编程实时单元频率 — 处理器-内部论坛 — 处理器-内部 — TI E2E 支持论坛

    是、请查看上面的 E2E

    接口:鉴于 40MSPS 的要求、推荐使用哪个接口? 我目前正在查看的是  并行 CMOS 接口  使用 PRU 扩展接头 (J15)。 这是否是实现单周期数据捕获的最有效方法?

    是的、使用 PRU 进行采样是一种高效的方法、可以节省替代 FPGA 的成本

    [quote userid=“560867" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1634795/am6442-optimizing-am64x-pru-icssg-for-deterministic-40-msps-data-acquisition  引脚映射 : 接头上的哪些特定引脚针对此类型的进行了优化 并行数据采集 来确保最小的延迟和确定行为?
    资源建议:AM64x 上是否有任何有关高速并行 ADC 接口的现有 PRU 固件示例或应用手册?

    我看到 AM64x 入门套件上 J10 处的 PRU 连接器、并且所有 PRU_GPI 引脚均可用、因此将 ADC_DATA_CHA [0:11]映射到 PRU0_GPI [0:11]和  

    ADC_DATA_CHB [0:11]至 PRU1_GPI [0:11]  




    我们建议采用 4 核解决方案、因为在您的情况下 DCLK 速率很高(请参阅随附的图像)



    示例 PRU 代码:-  

    read_block:
    	wbs r31, 16
    	xout 15, &r2, 32 ; transfer last samples to ipc spad;
    	mov r2.w0, r31.w0
    
    	wbs r31, 16
    	mov r2.w2, r31.w0
    	set r2.w0,r2.w0, 15 ; set highest bit in r2 as status bit for xin on rtu
    
    	wbs r31, 16
    	mov r3.w0, r31.w0
    	nop
    
    	wbs r31, 16
    	mov r3.w2, r31.w0
    	nop
    
    	wbs r31, 16
    	mov r4.w0, r31.w0
    	nop
    
    	wbs r31, 16
    	mov r4.w2, r31.w0
    	nop
    
    	wbs r31, 16
    	mov r5.w0, r31.w0
    	nop
    
    	wbs r31, 16
    	mov r5.w2, r31.w0
    	nop
    
    	wbs r31, 16
    	mov r6.w0, r31.w0
    	nop
    
    	wbs r31, 16
    	mov r6.w2, r31.w0
    	nop
    
    	wbs r31, 16
    	mov r7.w0, r31.w0
    	nop
    
    	wbs r31, 16
    	mov r7.w2, r31.w0
    	nop
    
    	wbs r31, 16
    	mov r8.w0, r31.w0
    	nop
    
    	wbs r31, 16
    	mov r8.w2, r31.w0
    	nop
    
    	wbs r31, 16
    	mov r9.w0, r31.w0
    	nop
    
    	wbs r31, 16
    	mov r9.w2, r31.w0
    	qba read_block
    


    示例 RTU 代码:-  

    main:
    	zero	&r0, 120
    	ldi R13, 0
    	ldi32 R14, 0x78000000 ; TCM address
    
    read_block: ; we have 3*16 = 48 cycles available at 100 Msps
    	xin 15, &r2, 32
    	qbbc read_block, r2.w0, 15
    	clr r2.w0, r2.w0, 15 ; clear status bit
    	xout 15, &r2.w0, 2 ; clear status bit
    	sbbo &r2, R14, R13, 32
    	add R13, R13, 32 ; we have written 16 samples, 2 byte each
    	; you can use ping-pong buffer to send the data to host (Refer PRU_IPC driver, uses TCM of R5F)
    	; documenation is at software-dl.ti.com/.../DRIVERS_PRU_IPC.html
    	; PRU_IPC macro's are available at "{mcu_plus_sdk_path}\source\pru_io\firmware\common" 
    	; PRU_IPC driver code is at "{mcu_plus_sdk_path}\source\pru_io\driver"
    	qba read_block


    很遗憾、SDK 中没有满足您提到要求的示例/参考设计。

    使用上述示例代码开始使用、
    如需任何实施帮助、请告知我们。

    此致、
    Manoj。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Manoj:

    非常感谢您为我有关 AM64x PRU-ICSSG 数据采集的问题提供准确、详细的解答。 我非常感谢为 PRU 和 RTU 内核提供的技术指南和示例代码。

    但是、我注意到您的回复中提供的有关可编程实时单位频率的链接似乎已损坏或导致我无法访问的内部页面(如屏幕截图所示)。

    您能否提供该信息的更新或正确的源链接? 此外、如果 您建议用于这个 40MSPS 实现的 MCU+ SDK 文档中有任何其他文档或特定章节、请告知我。

    再次感谢您的支持。

    此致、

    Vijay Sharma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Vijay Sharma:

    但是、我注意到您在回复中提供的有关可编程实时单位频率的链接似乎已损坏或导致我无法访问的内部页面(如屏幕截图所示)。

    好的、  

    [quote userid=“560867" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1634795/am6442-optimizing-am64x-pru-icssg-for-deterministic-40-msps-data-acquisition 采样速率:  PRU 能否有效地处理 12 位数据流的 40MSPS 采样率? [/报价]

    是的、

    简而言之、我们可以执行并行捕获模式(16 位)数据 uClock 提供 166MHz * 16 位*2 (DDR)= 333MSPS 或 5.3Gbit 带宽。

    使用 PRU0 执行 16 位上升沿捕获和 PRU1 下降沿捕获。

    序列  
    WBS R31、16
    MOV R2.W0、R31.W0

    333MHz PRU

    这会达到 SoC 数据移动限值、因此建议最大速度为 100MSPS。  

    以下链接以及之前分享的示例代码片段将有助于创建示例:-   

    PRU 汇编指令: —  https://github.com/TexasInstruments/open-pru/blob/main/docs/PRU%20Assembly%20Instruction%20Cheat%20Sheet.md

    GPIO 切换示例: —  
    https://github.com/TexasInstruments/open-pru/tree/main/academy/gpio/gpio_toggle

    PRU ADC 示例: —   AM64x MCU+ SDK:ADC

    此致、
    Manoj