请教以太网缓存的问题
时间:10-02
整理:3721RD
点击:
做以太网到e1的转换,需先将以太网帧进行缓存,用FIFO实现,我的问题就是:
以太网是变长的,可能在FIFO读的过程中已经写入很多以太网数据了,比如读第1帧的时候又写入了第2,第3,第4帧的数据了,那请问怎么识别读出的数据是哪一帧的呢?我现在的想法就是记录每一次写完以太网数据后的“写地址”,读的时候顺序取出这些“写地址”,如果“读地址”等于“写地址”则认为读完一帧了。不知大家是怎么处理这个问题的?
以太网是变长的,可能在FIFO读的过程中已经写入很多以太网数据了,比如读第1帧的时候又写入了第2,第3,第4帧的数据了,那请问怎么识别读出的数据是哪一帧的呢?我现在的想法就是记录每一次写完以太网数据后的“写地址”,读的时候顺序取出这些“写地址”,如果“读地址”等于“写地址”则认为读完一帧了。不知大家是怎么处理这个问题的?
如果你的datapath宽度是32,那么,可以把fifo的宽度设计成33,34,或者35
多出的bit位,可以用来标志frame头部,以及错误等状态信息
为什么要判断是第几帧呢?
如果你仅仅是做转发处理而不作分析,那根本不用管。
这个办法比我之前想的用另外一个fifo来存地址要简便,不过如果fifo深度很大的话,岂不是有很多的fifo空间没利用?
主要是我不知道存进fifo的帧的长度,因此不知道在读出的数据什么时候算是下一帧的数据了
多个地址,TAG标记下第一帧
可不可以说的详细点,谢谢
无所谓了,浪费不了多少FIFO空间.一般情况,512x35的FIFO足够了...
我见过的几个MAC,都是这样设计的
请问MAC的深度如何确定,假如1000Mbps工作,而总线带宽是200MBps
一般都是用phase tag
最近也在研究这个,思路也像小编一开始想的这样。
