simplify MAC dispatch (use onehot mode if Dispatcher)
authorFlorent Kermarrec <florent@enjoy-digital.fr>
Thu, 29 Jan 2015 00:10:40 +0000 (01:10 +0100)
committerFlorent Kermarrec <florent@enjoy-digital.fr>
Thu, 29 Jan 2015 00:10:40 +0000 (01:10 +0100)
liteeth/__init__.py

index a67e5b3806e73a566ffa98a23128b26ce527e960..85adb3ac1cf50df152096552a0f985ed4bf4e519 100644 (file)
@@ -11,16 +11,12 @@ class LiteEthIPStack(Module, AutoCSR):
                self.submodules.ip = ip = LiteEthMACIP()
 
                # MAC dispatch
-               self.submodules.unknown_sink = unknown_sink = Sink(eth_mac_description(8))
-               self.comb += unknown_sink.ack.eq(1)
-               self.submodules.mac_dispatcher = mac_dispatcher = Dispatcher(mac.source, [arp.sink, ip.sink, unknown_sink])
+               self.submodules.mac_dispatcher = mac_dispatcher = Dispatcher(mac.source, [arp.sink, ip.sink], one_hot=True)
                self.comb += [
                        If(mac.source.eth_type == ethernet_type_arp,
-                               mac_dispatcher.sel.eq(0)
-                       ).Elif(mac.source.eth_type == ethernet_type_ip,
                                mac_dispatcher.sel.eq(1)
-                       ).Else(
-                               mac_dispatcher.sel.eq(2) # connect to unknown sink that always acknowledge data
+                       ).Elif(mac.source.eth_type == ethernet_type_ip,
+                               mac_dispatcher.sel.eq(2)
                        )
                ]
                # MAC arbitrate