原创 基于verilog 的很基础的RS232串口收发代码

2011-8-27 19:21 2178 2 2 分类: FPGA/CPLD
写代码,记笔记,防忘记,须牢记。
写串口的Verilog代码关键是要搞明白RS232串口的通信协议,它并不像单片机,直接读写SBUF就可实现串口的收发功能,收发整个字节。而FPGA要一位一位的收发,因此必须了解RS232的数据格式。

起始位:RS232约定一位起始位“0”。

停止位:约定停止位为“1”。可选一位或两位停止位。

奇偶校验位:可选。

通过串口发送数据时,要严格遵守RS232的数据格式,先发送起始位,然后是数据,最后是停止位(无奇偶校验的情况)。

通过串口接收数据时,若接收端无数据输入,会一直处于高电平,若开始接收数据,会首先收到来自串口的起始位“0”,然后是要接收的数据,最后为停止位(无奇偶校验的情况)。所以对于接收模块,可如此设计,FPGA一直检测接收端是否有下降沿到来,直到检测到下降沿,才开始接收数据。

波特率设置的重要性不言而喻,毋庸赘述。

此设计为最基础的串口收发代码,控制逻辑简单,适合编写第一次编写串口代码的朋友。

此设计收发的数据格式为1位起始位,1位停止位,无奇偶校验位,8位数据位。波特率为19200,代码中可随意更改。程序见附件
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
2
关闭 站长推荐上一条 /3 下一条