The PIO Master demonstrates how a user application design might interact with the Configurator Block. It directs the Configurator Block to bring up the link partner at the appropriate time, and then (after successful bring-up) generates and consumes bus traffic. The PIO Master performs writes and reads across the PCI Express Link to the PIO Slave Example Design (from the Endpoint core) to confirm basic operation of the link and the Endpoint.
The PIO Master waits until user_lnk_up is asserted by the
Root Port. It then asserts start_config to the Configurator Block. When the Configurator Block
asserts finished_config, the PIO Master writes and reads to/from each BAR in the PIO Slave
design. If the readback data matches what was written, the PIO Master asserts its
pio_test_finished
output. If there is a data mismatch or the Configurator
Block fails to configure the Endpoint, the PIO Master asserts its
pio_test_failed
output. The PIO Master operation can be restarted by
asserting its pio_test_restart
input for one clock cycle.