前几天刚开始学习FPGA,正好学到UART通信,记录一下,学习的板子目前是黑金的ep4ce15f17的核心板,新买的板子还没到先凑合这。
接下来是正题UART通信协议,主要是通过状态机编写
发送部分之一
//状态机always@(*)begincase(state)S_IDLE:if(tx_data_valid == 1'b1)next_state <= S_START;elsenext_state <= S_IDLE;S_START:if(cycle_cnt == CYCLE - 1)next_state <= S_SEND_BYTE;elsenext_state <= S_START;S_SEND_BYTE:if(cycle_cnt == CYCLE - 1 && bit_cnt == 3'd7)next_state <= S_STOP;elsenext_state <= S_SEND_BYTE;S_STOP:if(cycle_cnt == CYCLE - 1)next_state <= S_IDLE;elsenext_state <= S_STOP;default:next_state <= S_IDLE;endcaseend
接收部分之一
顶层连接
最终的效果为每1秒钟发送一次HELLO ALINXrn
期间可以发送任意其他字符给PC
最后提供一个直接修改FPGA型号的方法(13.0版本)