如何在FPGA上实现UDP协议栈?
这个,比较麻烦。首先要有通信环境。比如你的FPGA外部有PHY芯片,或者完整的以太网/其他网络芯片,该芯片会有一个接口,例如mii/gmii什么的,或者其它数据接口。然后你需要设计接口电路,比如mac什么的。再然后需要实现IP协议,这个可能不仅是实现数据的封装那么简单。再然后是实现UDP协议,完成数据传递。如果简单点的话,发送功能直接将UDP数据包封装进固定的网络层、链路层数据包中,通过PHY传送;接收功能直接解析UDP数据包,实现信息数据和协议数据的处理,信息数据好办,协议数据要依据IETF(或许还有其它的强制标准)的规范来。
说一个适合做学校课题的方法,可以使用软核,如NIOSII,用软件实现UDP协议,如果FPGA外的网络芯片是PHY,就写一个或下载一个开源的MAC就可以了
看得出您做过这方面的工程,那么如何设计每一模块的内容,基本思路是参考什么协议?802.11?我不太了解,不只如何下手?
兄弟,准备上工程使用啊?那费劲了。首先UDP协议可以运行在不同的通信接口上,这里假定你使用的是最常见的10M/100M以太网。如果你自己做电路板的话建议使用完整的以太网芯片,这样省去自己作MAC的时间和不确定性。其次用FPGA实现IP/UDP协议,此时建议采用xuy731的办法,就是利用CPU核运行协议软件;如果你使用的是altera器件就用NIOSII,Xilinx器件就用PPC/MicroBlaze什么的,Actel的就只有使用51核,其它我就没用过了。不过如果要求使用纯逻辑电路来实现的话也是可以的,工作量稍大一些,记得韩国有一个芯片公司将TCP/UDP完全用硬件是实现了,网上找一下吧,很好的参照。以太网是ieee标准化;TCP/IP系列协议是IETF规范的,直接到官方网站上去找,免费的。最好的下手方式是找到一个参考设计:http://opencores.org/project,udp_ip_stack
