自己改写的版本:
在以太网帧头部分,接收完目的MAC ADDR先判断MAC ADDR是否正确,若正确,则往下接收,不正确则返回状态0。
但要注意的是eth_type在复位时要给16'hffff,不能给16'h0000,不然在判断是ip帧还是arp帧时,valid_ip会拉高一个周期(但是不影响输出结果)
同时,为了更清晰地看到对源MAC地址的赋值过程,在复位时将源MAC赋值为48'hf
自己改写代码的仿真:前导码和帧起始界定符确认无误后,将接下来的目的MAC地址直接存入rx_dst_mac_addr
6B的目的MAC地址存完之后,立刻判断是否匹配,若匹配则拉高mac_rx_right
所参考代码的仿真:在黄线部分,将暂存的目的MAC、源MAC分别赋值给rx_dst_mac_addr和rx_src_mac_addr;下一个clk给eth_type高八位赋值;再下一个clk给eth_type低八位赋值,同时判断目的MAC地址是否匹配,若匹配则拉高mac_rx_right
修改参考代码的出发点:在接收完目的mac直接进行匹配,若不匹配则丢弃该帧,不用等到目的MAC、源MAC都接收完再判断
参考代码:mac_rx_parsing_fin.v
修改代码:mac_rx_parsing_my.v
tb文件:tb_mac_rx_parsing.v
~~~小白一枚~~~