Packet Validation
Processes packets from the ethernet interface and filters out packets that do not match the expected ethertype field. This should be none in a production system where the ethernet is a point to point link with a DISH, however in a test setup it may be connected to a switch so may receive unexpected packets from the wider network.
The Validator will also collect information from the dish packet headers and make them available to higher level software to vaildate.
Data Path Interface
Input
Stream of packets
Output
Stream of packets that match the expected ethertype (
0xFEED).
Low Level Driver API
Structs
struct config
none?
struct status
packet_crc_error_count : uint32_t
packet_ethertype_error_count : uint32_t
packet_seq_error_count : uint32_t
meta_frame – Perhaps more general to just capture the headers (first 128 bytes or so) and make that avialable for SW decode.
ethertype : unit16_t
band_id : uint8_t
sample_rate : uint64_t
dish_id : uint16_t
time_code : uint32_t
hardware_id : uint64_t
Standard methods
Constructor()
Set identity (name, address)
Constants retrievable from registers. Emulator will need to specify this somehow in its bitstream configuration.
expected_ethertype =
0xFEED
recover()
enable reset.
configure(struct config)
None
start()
enable reception (stop dropping all packets). Activates on next PPS received.
stop()
disable reception. Stops on next PPS received (excluding the PPS packet).
deconfigure(struct config)
None
status(clear: bool, struct &status)
populate the status struct:
meta_frame captured from the same and most recent packet.
optionally clear the counters.