您当前的位置:五五电子网电子知识单片机-工控设备综合-其它MCS-51单片机串行通讯口IP核的实现 正文
MCS-51单片机串行通讯口IP核的实现

MCS-51单片机串行通讯口IP核的实现

点击数:7941 次   录入时间:03-04 11:58:30   整理:http://www.55dianzi.com   综合-其它

  至于接收器和发送器,这里采用有限状态机的方式来实现。由于要工作在全双工模式下,所以接收和发送要采用两个有限状态机。有限状态机的每一个状态用来发送/接收移位数据。发送和接收的具体实现方式是移位。移位的时钟来自上面所述的分频器的,也就是根据各自的波特率进行。虽然此部分很繁琐,但是实现并不困难,请读者参阅文献[3]、[4]和[5]。

4 模块功能仿真

  图2是串行口工作在方式0下发送数据的仿真图。输入信号trans_i是发送的启动信号(高电平有效)。它的出现使内部用于发送的状态机启动,同时使内部计数器复位,以便使每位的发送过程与计数器同步。计数器满刻度偏转一次,状态机的状态就会增加1。如图所示,在状态0向状态1转换时,将要发送的8位数据的最低为输出到rxd_o,这一数据的电平一直维持到状态1向状态2转换,这时开始输出第二位数据。依此类推,在状态8的末尾,8位数据完全输出完毕后,指示是否有数据输出的信号rxdwr_o变为低电平,表示数据已经发送完毕。同时,发送完成的指示信号(scon_o[0…2]中的相应位)也会置位。

工作于方式0的串行口接收数据的仿真图
图2 工作于方式0的串行口发送数据的仿真图

  图3是工作于方式0的串行口接收数据的仿真图。接收状态机的启动依靠的是输入信号 ren、ri。当ren=1且ri=0时,就会启动一次接收过程。如图中所示,接收过程始于状态0的末尾scon_i的ren=1的时候(图中左边的竖线处),而在下一个状态(状态1)的末尾就会将外部输入引脚的值移入内部的移位寄存器,依此类推,直到状态8的末尾将第8位数据移入,同时使接收缓冲寄存器和sbuf_o的值都为刚才移位所得到数值,以送往控制器处理。同时,接收完成的指示信号(scon_o[0…2]中的相应位)也会置位。

工作于方式0的串行口接收数据的仿真图
图3 工作于方式0的串行口接收数据的仿真图

  图4是工作于方式1的串行口的接收和发送数据同时进行的仿真图。方式1中发送和接收数据的时钟源自tf_i。其发送的启动信号仍然是trans_i; 接收的启动信号是检测到外部输入信号rxd_i有负跳沿出现。如图中所示,在接收状态机的状态0的末尾,负跳沿被检测到,状态机马上启动,转入下一个状态 1。在状态1中,三次扫描检测rxd_i引脚的值,如果有两次或者三次值是“0”,则说明收到的起始位的值是“0”,状态机转入下一状态准备接收数据位,依此类推直到状态9的末尾将8位数据位最后一位收到并移如移位寄存器。再在下一个状态(状态10)接受停止位,如果停止位有效(停止位送至rb8,图中的 scon_o(2)),则将接收到的数据送到接受缓冲区,并输出。至于发送,首先要发送的是起始位“0”,最后还要发送一位停止位“1”,上图中很清楚的表示了这一过程。

工作于方式1的串行口发送、接收数据的仿真图
图4 工作于方式1的串行口发送、接收数据的仿真图

  图5是工作于方式2的串行口的接收和发送数据同时进行的仿真图。方式2和方式1的接收和发送的工程是一样的。不同的在接收时,它用来送入rb8的值不是停止位而是可编程控制位,同时也是根据对这一位的判断来决定接收是否有 效。(图中接收的可编程控制位是“1”)在发送时,它在停止位之前还发送一位可编程控制位tb8(图中scon_i的最低位)。

工作于方式2的串行口发送、接收数据的仿真图
图5 工作于方式2的串行口发送、接收数据的仿真图

  至于方式3下串口的工作情况,除波特率不同外,其他与方式2完全一样,图6是工作于方式3的串行口的接收和发送数据同时进行的仿真图。

工作于方式3的串行口发送、接收数据的仿真图
图6 工作于方式3的串行口发送、接收数据的仿真图

5 结束语

  本文设计的兼容MCS-51单片机的串行通讯口IP核采用完全同步的设计,系统在统一的时钟下工作。时钟周期只与所选用的fpga/cpld芯片的延时有关,而与设计无关,因此,串行通讯口的波特率可根据时钟周期任意调整。另外,此串行通讯口ip 核已经结合其它ip核做成了一个soc系统,并成功地通过了fpga的测试。

上一页  [1] [2] 


本文关键字:单片机  综合-其它单片机-工控设备 - 综合-其它