("sys_clk", 0, SimPins(1)),
("sys_rst", 0, SimPins(1)),
("serial", 0,
- Subsignal("source_stb", SimPins(1)),
- Subsignal("source_ack", SimPins(1)),
+ Subsignal("source_valid", SimPins(1)),
+ Subsignal("source_ready", SimPins(1)),
Subsignal("source_data", SimPins(8)),
- Subsignal("sink_stb", SimPins(1)),
- Subsignal("sink_ack", SimPins(1)),
+ Subsignal("sink_valid", SimPins(1)),
+ Subsignal("sink_ready", SimPins(1)),
Subsignal("sink_data", SimPins(8)),
),
("eth_clocks", 0,
Subsignal("none", SimPins(1)),
),
("eth", 0,
- Subsignal("source_stb", SimPins(1)),
- Subsignal("source_ack", SimPins(1)),
+ Subsignal("source_valid", SimPins(1)),
+ Subsignal("source_ready", SimPins(1)),
Subsignal("source_data", SimPins(8)),
- Subsignal("sink_stb", SimPins(1)),
- Subsignal("sink_ack", SimPins(1)),
+ Subsignal("sink_valid", SimPins(1)),
+ Subsignal("sink_ready", SimPins(1)),
Subsignal("sink_data", SimPins(8)),
),
]
/* ios */
-#ifdef SERIAL_SOURCE_STB
+#ifdef SERIAL_SOURCE_VALID
#define WITH_SERIAL
#endif
-#ifdef ETH_SOURCE_STB
+#ifdef ETH_SOURCE_VALID
#define WITH_ETH
#endif
int eth_txbuffer_len;
int eth_rxbuffer_len;
int eth_rxbuffer_pos;
- int eth_last_source_stb;
+ int eth_last_source_valid;
#endif
};
s->eth_txbuffer_len = 0;
s->eth_rxbuffer_len = 0;
s->eth_rxbuffer_pos = 0;
- s->eth_last_source_stb = 0;
+ s->eth_last_source_valid = 0;
s->eth_dev = dev;
s->eth_tap = tap;
}
int console_service(struct sim *s)
{
/* fpga --> console */
- SERIAL_SOURCE_ACK = 1;
- if(SERIAL_SOURCE_STB == 1) {
+ SERIAL_SOURCE_READY = 1;
+ if(SERIAL_SOURCE_VALID == 1) {
if(SERIAL_SOURCE_DATA == '\n')
putchar('\r');
putchar(SERIAL_SOURCE_DATA);
}
/* console --> fpga */
- SERIAL_SINK_STB = 0;
+ SERIAL_SINK_VALID = 0;
if(s->tick%(1000) == 0) {
if(kbhit()) {
char c = getch();
printf("\r\n");
return -1;
} else {
- SERIAL_SINK_STB = 1;
+ SERIAL_SINK_VALID = 1;
SERIAL_SINK_DATA = c;
}
}
int console_service(struct sim *s)
{
/* fpga --> console */
- SERIAL_SOURCE_ACK = 1;
- if(SERIAL_SOURCE_STB == 1) {
+ SERIAL_SOURCE_READY = 1;
+ if(SERIAL_SOURCE_VALID == 1) {
s->serial_tx_data = SERIAL_SOURCE_DATA;
console_write(s, &(s->serial_tx_data), 1);
}
/* console --> fpga */
- SERIAL_SINK_STB = 0;
+ SERIAL_SINK_VALID = 0;
if(console_read(s, &(s->serial_rx_data)))
{
- SERIAL_SINK_STB = 1;
+ SERIAL_SINK_VALID = 1;
SERIAL_SINK_DATA = s->serial_rx_data;
}
return 0;
#ifdef WITH_ETH
int ethernet_service(struct sim *s) {
/* fpga --> tap */
- ETH_SOURCE_ACK = 1;
- if(ETH_SOURCE_STB == 1) {
+ ETH_SOURCE_READY = 1;
+ if(ETH_SOURCE_VALID == 1) {
s->eth_txbuffer[s->eth_txbuffer_len] = ETH_SOURCE_DATA;
s->eth_txbuffer_len++;
} else {
- if(s->eth_last_source_stb) {
+ if(s->eth_last_source_valid) {
eth_write(s, s->eth_txbuffer, s->eth_txbuffer_len);
s->eth_txbuffer_len = 0;
}
}
- s->eth_last_source_stb = ETH_SOURCE_STB;
+ s->eth_last_source_valid = ETH_SOURCE_VALID;
/* tap --> fpga */
if(s->eth_rxbuffer_len == 0) {
- ETH_SINK_STB = 0;
+ ETH_SINK_VALID = 0;
s->eth_rxbuffer_pos = 0;
s->eth_rxbuffer_len = eth_read(s, s->eth_rxbuffer);
} else {
if(s->eth_rxbuffer_pos < MAX(s->eth_rxbuffer_len, 60)) {
- ETH_SINK_STB = 1;
+ ETH_SINK_VALID = 1;
ETH_SINK_DATA = s->eth_rxbuffer[s->eth_rxbuffer_pos];
s->eth_rxbuffer_pos++;
} else {
- ETH_SINK_STB = 0;
+ ETH_SINK_VALID = 0;
s->eth_rxbuffer_len = 0;
memset(s->eth_rxbuffer, 0, 1532);
}
raise ValueError
try:
ios += """
-#define SERIAL_SOURCE_STB dut->{serial_source_stb}
-#define SERIAL_SOURCE_ACK dut->{serial_source_ack}
-#define SERIAL_SOURCE_DATA dut->{serial_source_data}
+#define SERIAL_SOURCE_VALID dut->{serial_source_valid}
+#define SERIAL_SOURCE_READY dut->{serial_source_ready}
+#define SERIAL_SOURCE_DATA dut->{serial_source_data}
-#define SERIAL_SINK_STB dut->{serial_sink_stb}
-#define SERIAL_SINK_ACK dut->{serial_sink_ack}
-#define SERIAL_SINK_DATA dut->{serial_sink_data}
+#define SERIAL_SINK_VALID dut->{serial_sink_valid}
+#define SERIAL_SINK_READY dut->{serial_sink_ready}
+#define SERIAL_SINK_DATA dut->{serial_sink_data}
""".format(
- serial_source_stb=io_name("serial", "source_stb"),
- serial_source_ack=io_name("serial", "source_ack"),
+ serial_source_valid=io_name("serial", "source_valid"),
+ serial_source_ready=io_name("serial", "source_ready"),
serial_source_data=io_name("serial", "source_data"),
- serial_sink_stb=io_name("serial", "sink_stb"),
- serial_sink_ack=io_name("serial", "sink_ack"),
+ serial_sink_valid=io_name("serial", "sink_valid"),
+ serial_sink_ready=io_name("serial", "sink_ready"),
serial_sink_data=io_name("serial", "sink_data"),
)
except:
try:
ios += """
-#define ETH_SOURCE_STB dut->{eth_source_stb}
-#define ETH_SOURCE_ACK dut->{eth_source_ack}
-#define ETH_SOURCE_DATA dut->{eth_source_data}
+#define ETH_SOURCE_VALID dut->{eth_source_valid}
+#define ETH_SOURCE_READY dut->{eth_source_ready}
+#define ETH_SOURCE_DATA dut->{eth_source_data}
-#define ETH_SINK_STB dut->{eth_sink_stb}
-#define ETH_SINK_ACK dut->{eth_sink_ack}
-#define ETH_SINK_DATA dut->{eth_sink_data}
+#define ETH_SINK_VALID dut->{eth_sink_valid}
+#define ETH_SINK_READY dut->{eth_sink_ready}
+#define ETH_SINK_DATA dut->{eth_sink_data}
""".format(
- eth_source_stb=io_name("eth", "source_stb"),
- eth_source_ack=io_name("eth", "source_ack"),
+ eth_source_valid=io_name("eth", "source_valid"),
+ eth_source_ready=io_name("eth", "source_ready"),
eth_source_data=io_name("eth", "source_data"),
- eth_sink_stb=io_name("eth", "sink_stb"),
- eth_sink_ack=io_name("eth", "sink_ack"),
+ eth_sink_valid=io_name("eth", "sink_valid"),
+ eth_sink_ready=io_name("eth", "sink_ready"),
eth_sink_data=io_name("eth", "sink_data"),
)
except:
self.source = stream.Endpoint([("data", 8)])
self.comb += [
- pads.source_stb.eq(self.sink.valid),
+ pads.source_valid.eq(self.sink.valid),
pads.source_data.eq(self.sink.data),
- self.sink.ready.eq(pads.source_ack),
+ self.sink.ready.eq(pads.source_ready),
- self.source.valid.eq(pads.sink_stb),
+ self.source.valid.eq(pads.sink_valid),
self.source.data.eq(pads.sink_data),
- pads.sink_ack.eq(self.source.ready)
+ pads.sink_ready.eq(self.source.ready)
]