上回大概说了说大概流程,着重说了状态转换的条件,以及idle状态根据要发送的内容转到不同的状态的方法。
这次重点说说包头
preamble状态下需要92个clk,每个clk发送16进制的一位,也就是4bit,正好通过tx data的3..0输出
具体发什么呢
最正规的方法自然是根据tcpip的协议,先发ip包头再发udp包头,之后转data状态法数据
ip包头无外乎就是mac地址,ip,ip包长,check sum等等
udp包头则是ip,端口号,udp包长度,checksum等等
不过这个貌似太麻烦了。。稍微发错一位就很麻烦
这里推荐一个方法
第一步,找个抓包工具,比如wpe,sniffer,ethereal等等,随便抓一个udp包
第二部,找一个发包工具,打开抓到的这个udp包
第三步,用发包工具分析那个udp包,大概可以找出,发送ip,mac地址,端口号,包长等等
把这些数据按你的需要进行修改,发包工具会生成新的udp包并自动计算checksum
注意udp包长要修改为你要发送的数据的实际长度+8,ip包长再加20
8byte是udp包头长度,20是ip包头长度
ok,用发包工具发出去,同时用抓包工具抓抓看,看看行不行
ok的话用fpga就发送这样的包头就可以了
用户377235 2013-7-21 15:48