FPGA 实现串行接口 RS232 时间:2007-06-29 来源: 作者: 点击:26463 字体大小:【大 中 小】 - 串行接口(RS-232) 串行接口是连接FPGA 和PC 机的一种简单方式。这个项目向大家展示了如果使用 FPGA 来创建 RS-232 收发器。 整个项目包括 5 个部分 RS232 是怎样工作的 如何产生需要的波特率 发送模块 接收模块 应用实例 RS-232 接口是怎样工作的 作为标准设备,大多数的计算机都有 1 到 2 个 RS-232 串口。 特性 RS-232 有下列特性: 使用 9 针的"DB-9"插头(旧式计算机使用 25 针的"DB-25"插头). 允许全双工的双向通讯(也就是说计算机可以在接收数据的同时发送数据). 最大可支持的传输速率为 10KBy tes/s. DB-9 插头 你可能已经在你的计算机背后见到过这种插头 它一共有 9 个引脚,但是最重要的3 个引脚是: 引脚 2: Rx D (接收数据). 引脚 3: Tx D (发送数据). 引脚 5: GND (地). 仅使用 3 跟电缆,你就可以发送和接收数据. 串行通讯 数据以每次一位的方式传输;每条线用来传输一个方向的数据。由于计算机通常至少需要若干位数据,因此数据在发送之前先“串行化”。通常是以 8 位数据为 1组的。 。先发送最低有效位,最后发送最高有效位。 异步通讯 RS-232 使用异步通讯协议。也就是说数据的传输没有时钟信号。接收端必须有 某种方式,使之与接收数据同步。 对于RS-232 来说,是这样处理的: 串行线缆的两端事先约定好串行传输的参数(传输速度、传输格式等) 当没有数据传输的时候,发送端向数据线上发送"1" 每传输一个字节之前,发送端先发送一个"0"来表示传输已经开始。这样接收端便可以知道有数据到来了。 开始传输后,数据以约定的速度和格式传输,所以接收端可以与之同步 每次传输完成一个字节之后,都在其后发送一个停止位("1") 让我们来看看 0x 55 是如何传输的: 0x 55 的二进制表示为:01010101。 但是由于先发送的是最低有效位,所以发送序列是这样的: 1-0-1-0-1-0-1-0. 下面是另外一个例子 : 传输的数据为 0x C4,你能看出来吗? 从图中很难看出来所传输的数据,这也说明了事先知道传输的速率对于接收端有多么重要。 数据传输可以多快? 数据的传输速度是用波特来描述的,亦即每秒钟传输的数据位,例如 1000 波特表示每秒钟传输100 比特的数据, 或者说每个数据位持续 1 毫秒。 波特率不是随意的,必须服从一定的标准,如果...