TI中文支持网
TI专业的中文技术问题搜集分享网站

C6678 SRIO的port与lane的关系及配置

阅读了SRIO相关文档,积累了一些问题,现列举如下:

1、lane和port的关系,是不是lane代表物理链路,而port代表传输一个数据包的基本单元?

2、1个6678可以有多个port,是否代表这些port可以去连接不同的设备?

3、我看到PLM_PORT_PATH_CONTROL寄存器用于配置PORT的PATHID PATHCONFIG PATHMODE,但是只有MODE是可写,其他两个是只读,那么我们怎么配置一个port是1x、2x还是4x呢?

4、最后,PATH又是什么概念呢?

请指教,谢谢!

King Wang1:

我说下我的简单理解:

lane是传输数据的链路,port是传输数据的接口。

要正常传输数据,你需要一条链路和一个接口,这是基本的东西。当然,如果你觉得这个接口速度太慢,你可以用两个链路接到这个接口上,这就是2x。4个链路接到1个接口上就是4x。(这里的1条链路包括接收链路和发送链路)

至于如何配置1x,2x,4x。这个手册上写的很明白,就不多说了。

YUCHAO WANG:

回复 King Wang1:

那么一个6678的4条lane如果被分配成4个1x或者2个2x,是不是不同的port可以连接不同的设备呢

qian cui:

回复 King Wang1:

你好,我用SRIO发送接收数据,使用的是下面的代码

void send_CSL(unsigned int lsu, unsigned int SrcAddr, \ unsigned int DstAddr, unsigned int ByteCnt, unsigned int DstID,unsigned int portnum){ SRIO_LSU_TRANSFER lsuTransfer; CSL_SrioHandle hSrio; Uint8 context; Uint8 transID; Uint8 compCode; Uint8 contextBit;

hSrio = CSL_SRIO_Open (0); while (1) { if (CSL_SRIO_IsLSUFull (hSrio, lsu) == FALSE) break; }

// while(CSL_SRIO_IsLSUBusy(hSrio, lsu)==FALSE){} retry: // Populate the Transfer Information. lsuTransfer.rapidIOMSB = 0x0;//0 lsuTransfer.rapidIOLSB = DstAddr;//目的地址 lsuTransfer.dspAddress = SrcAddr;//源地址 lsuTransfer.bytecount = ByteCnt;//数据大小 lsuTransfer.doorbellValid = 0;//0 lsuTransfer.intrRequest = 1;//1 lsuTransfer.supInt = 0;//0 lsuTransfer.xambs = 0;//0 lsuTransfer.priority = 2;//0 lsuTransfer.outPortID = portnum;//输出port号 lsuTransfer.idSize = 0;//目的ID 0-8bit or 1-16bit lsuTransfer.srcIDMap = 0;//0 lsuTransfer.dstID = DstID;//目的ID lsuTransfer.ttype = 4; lsuTransfer.ftype = 5; lsuTransfer.hopCount = 0x0; //FF lsuTransfer.doorbellInfo = 0; CSL_SRIO_GetLSUContextTransaction (hSrio,lsu ,&context, &transID); // Send the transfer on LSU 0 CSL_SRIO_SetLSUTransfer (hSrio, lsu, &lsuTransfer);

while(CSL_SRIO_IsLSUBusy(hSrio, lsu)==TRUE){} // polling, test BSY bit

CSL_SRIO_GetLSUCompletionCode (hSrio, lsu, transID, &compCode, &contextBit); if (compCode!=0x0) { goto retry; }

}

对于这段代码有几个问题

1. outPortID是什么:输出端口还是?

2. srcIDMap:值是多少,怎么确定,是发送包里的源id么?

3. hotCount给多少?

4. idSize:怎么确定是8bit还是16bit?我给的dsp的设备id是9,这里应该是什么值?

对于设备ID有几个疑问,相关的额寄存器有base_id,host_base_id_lock,deviceID_reg0, deviceID_reg1。这几个寄存器里的值都是dsp设置的设备id么,这个设备id是不是就是发送包里填充的源id?

谢谢

Feipng Li:

回复 King Wang1:

你好King,

那如果我的两块6678物理上只有port0连上了(即只有RIORXN0/P0与RIOTXN0/P0间有布了线),那是不是也可以实现4X,2X?

feng wang5:

回复 Feipng Li:

不可以。芯片上看到的RIO0、RIO1对应于lane,2x使用两个lane,4x使用4个lane。

user4217086:

回复 qian cui:

Hi,qian cui :

    我最近在研究FPGA和DSP间的SRIO通信,对LSU寄存器填充的一些参数也不是很明白,想请教下你,发送数据的目的地址到底指的是什么,是怎么确定的,我对这些ID搞的也头晕,还有你上面提到的几个参数各有什么含义?我接收程序现在死在

CSL_SRIO_GetLSUCompletionCode (hSrio, lsu, transID, &compCode, &contextBit);

判断compCode=1,然后一直goto retry, transID=3,这个值是从寄存器读出来的,但不知道具体带表什么,感觉是哪个参数没配置对。

希望你能指点一下,非常感激!!!

Xin Wang21:

回复 user4217086:

希望讨论FPGA与DSP之间SRIO通信的朋友们能够加群74522342,相互讨论!

赞(0)
未经允许不得转载:TI中文支持网 » C6678 SRIO的port与lane的关系及配置
分享到: 更多 (0)