一、RS232 Interface Description
DE2-115上提供三种串口通信设备,即RS232,PS/2和IRDa接口;RS232采用异步通讯协议,也就说数据的传输没有时钟信号,接收端必须已某种方式使之与发送数据同步。
1.串行传输的两端事先约好串行传输的参数(传输速度,传输格式,如Baudrate);
2.当没有数据传输时,发送端向数据上发送''1'';
3.每传输一个字节之前,发送端先发送一个''0''来表示传输已经开始,这样接收端就知道即将发送数据了;
4.每次传输完成一个字节后,都在其后发送一个停止位(''1'');
在串口的总线上''高电平''是默认的状态,当一帧的数据开始传输必须先拉低电平,这就是第0位的作用。第0位过后就是8个数据位,这8个数据位才是一帧中最有意义的东西。最后的效验位或者停止位,基本上没有重要意义,作用如同命名般一样。串口传输数据都是一帧11位。
我们常用的波特率有9600bps和115200bps(bit per secong);9600bps即每秒钟传输9600位,故一个位周期=1/9600=0.00010417s;则传输一帧需要时间=0.00010417*11=0.0011458;那一秒就可以传输=1/0.0011458=872.73个帧数据,当然这只是理论计算出来而已,实际上还有很多看不见的延迟因素。
通常RS232芯片使用1.8432MHz的时钟,因为这个时钟很容易产生标准的波特率,所以我们假设已经拥有了这样的一个时钟源。只要将1.8432MHz 16分频即可得到115200Hz的时钟。
reg[3:0] BaudDivCnt;
always@(posedge clk)
BaudDivCnt<=BaudDivCnt+1;
wire BaudTick=(BaudDivCnt==15);
二、RS232 Interface Schematic