ZK5531 发表于 2020-5-8 16:43:23

关于UDP协议栈的MAC地址

例程代码中,LOCAL_MAC_ADDRESS为MAC地址
udp_ip_protocol_stack udp_ip_protocol_stack
(
        .LOCAL_PORT_NUM   (16'hf000),
        .LOCAL_IP_ADDRESS   (32'hc0a80a01),
        .LOCAL_MAC_ADDRESS(48'h000a35000102),
        .ICMP_EN                       (1'b1),
        .ARP_REPLY_EN       (1'b1),
        .ARP_REQUEST_EN        (1'b1),
        .ARP_TIMEOUT_VALUE       (30'd20_000_000),
        .ARP_RETRY_NUM               (4'd2),
但如下代码也是在设置MAC地址,请问他们之间有什么区别?以哪个MAC地址为准?
         CNFG_LO_ADDR : begin
            $display("** Note: Configuring unicast address(low word)....");
            start_access   <= 1;
            writenread   <= 1;
            addr         <= CONFIG_UNI0_CTRL_ADD;
            axi_wr_data    <= 32'h040302DA;
            axi_state      <= CNFG_HI_ADDR;
         end
         CNFG_HI_ADDR : begin
            $display("** Note: Configuring unicast address(high word)....");
            start_access   <= 1;
            writenread   <= 1;
            addr         <= CONFIG_UNI1_CTRL_ADD;
            axi_wr_data    <= 32'h0605;
            axi_state      <= CNFG_FILTER;
         end

ZK5531 发表于 2020-6-21 16:45:39

用vivado的虚拟逻辑分析仪抓取发现实际使用的是UDP协议栈上设置的MAC地址c0a80a01,而不是MAC控制器的AXI_Lite接口中设置的0605040302DA,为什么呢?协议栈中怎样实现的?如果把协议栈上的MAC地址设置注释掉,是否MAC控制器中AXI_Lite中的MAC地址设置会成功?

uisrc 发表于 2020-6-22 09:13:46


IP核配置的mac地址是用于接收数据包mac地址过滤的。例子里的mac地址过滤功能没有使用,所以这个配置实际没
mac地址是由协议栈决定的

ZK5531 发表于 2020-6-22 18:32:58

这么说的话,IP核配置的MAC地址,要与协议栈设置的MAC地址一致,当设置了MAC地址过滤功能之后,MAC IP核就可以过滤除了本机MAC地址外的所有地址,也就是其他地址会被MAC IP核内部丢弃掉,而不会在AXI_Stream接口输出,这个理解对吗?
页: [1]
查看完整版本: 关于UDP协议栈的MAC地址