digraph interfacefsm {
	s_Idle [label="\N\n\nbusy = 0\ncount = 0"];
	s_SendStart [label="\N\n\nFFTSending = 1\nFFTRdyAck = 0"];
	s_SendAddrSelect [label="\N\n\nFFTSending = 1\ncount = count + 1\nFFTRdyAck = 0"];
	s_SendRAMWait [label="\N\n\nFFTSending = 1\nbuf = RAMData\nDataBus = buf\nRAMAddr = sendbuf & count\nRAMWe = 0\nRAMReq = 1"];
	s_SendReady [label="\N\n\nFFTSending = 1\nDataBus = buf\nFFTRdyAck = 1"];
	s_SendAck [label="\N\n\nFFTSending = 1\nDataBuf = buf\nFFTRdyAck = 0"];
	s_SendComplete [label="\N\n\nFFTSending = 1\nFFTRdyAck = 0"];
	s_RecvWait [label="\N\n\nFFTSending = 0\nbuf = DataBus\nFFTRdyAck = 0"];
	s_WriteAddrSelect [label="\N\n\nFFTSending = 0\ncount = count + 1\nFFTRdyAck = 0"];
	s_Write [label="\N\n\nFFTSending = 0\nRAMData = buf\nRAMAddr = recvbuf & count\nRAMWE = 1\nRAMReq = 1"];
	s_RecvAck [label="\N\n\nFFTSending = 0\nFFTRdyAck = 1"];

	s_Idle -> s_SendStart [label="start = 1"];
	s_SendStart -> s_SendRAMWait;
	s_SendRAMWait -> s_SendReady [label="RAMDone = 1"];
	s_SendReady -> s_SendAck [label = "ProcRdyAck = 1 and Ack2 = 1"];
	s_SendAck -> s_SendAddrSelect [label = "ProcRdyAck = 1 and Ack2 = 1"];
	s_SendAddrSelect -> s_SendComplete [label = "count = 0"];
	s_SendAddrSelect -> s_SendRAMWait [label = "count > 0"];
	s_SendComplete -> s_RecvAck [label = "ProcSending = 1"];
	s_RecvWait -> s_Idle [label = "ProcSending = 0"];
	s_RecvWait -> s_WriteAddrSelect [label = "ProcRdyAck = 1"];
	s_WriteAddrSelect -> s_Write;
	s_Write -> s_RecvAck [label = "RAMDone = 1"];
	s_RecvAck -> s_RecvWait [label = "ProcRdyAck = 0 and ProcSending = 1"];
	s_RecvAck -> s_Idle [label = "ProcRdyAck = 0 and ProcSending = 0"];
};

