oogami@panda, 2023-01

概述

主控(ARM)与FPGA之间通过JESD207接口通信。ARM 程序的所有外部通信(接收、发送)均通过 FPGA。ARM 与 FPGA 之间存在预先定义好的接口(.h)和所提供的 .a 静态库。

// FPGA -> ARM
typedef	void	(*FNCT_U8P_U32 )(unsigned char *u8p_src,int len);
// chnID = 4, ch_name = "/dev/dpb_x1643_phych0", tag = 3
int init_chnl( int chnID,char *ch_name,FNCT_U8P_U32 callbackfunc, int tag );

// ARM -> FPGA
int write_data_to_chnl(int chnID,char* buf,int len);

typedef struct ST_JESD_H
{
    INT32U 	msgID:8; 			// 消息ID,带优先级, ID越小,优先级越高
    INT32U 	dstUsrID:4; 		// dst/src 0:aisc 7:rf board  8:io bc 9:dsp 10:HSSI E0 11:ARM 207_2	12:NET 13:SIM 15:io board 	2021/8/4 9:15:10
    INT32U 	ctlFractStop:1; 	// 分片模式的尾帧标志。非分片模式 为 0。
    INT32U 	ctlFractStrt:1; 	// 分片模式的首帧标志。非分片模式 为 0。
    INT32U 	ctlFractMode:1; 	// 帧模式 1:分片模式, 0:流模式
    INT32U 	reserved:1; 		// 保留 0
    INT32U 	sigLen:16;			// 帧 payload 部分长度,不含帧头,单位为字节
}ST_JESD_H;

typedef struct
{
	ST_JESD_H h;
	union
	{
		// ...
		struct {
			uint8	channel	;
			uint8	asio_dat[RBDP_MAX_DATA_LEN-1]	;
		}DN_UP_ASIO;
		// ...
	};//end of union
}AUD3_ST_JESD;

FPGA(207) 通信接口

msgID 越小,对应消息的传输优先级越高(FPGA处理)。

UP: ASIC 芯片 ⇒ ARM。DOWN 则相反。中间的传输通过 FPGA 处理和中转。

发送音频(ASIC ⇒ ARM ⇒ ASIC):0x22 ⇒ 0x31 (音频经过 ARM 中转处理:降噪压缩等)

接受音频(ASIC ⇒ ARM ⇒ ASIC):0x21 ⇒ 0x38 (ARM 将音频发送到指定位置,如扬声器)

msgID 通信方向 payload 说明 备注
0xF0 (AUD3_MSG_UP_ASIO, AUD3_MSG_DN_ASIO) DOWN (ARM ⇒ FPGA)
UP (FPGA⇒ARM) DN_UP_ASIO 外部设备串行数据通信 根据 channel 区分:

外部接口

外部接口可能包括: