新闻中心

EEPW首页>EDA/PCB>设计应用> 集成UART核心的FPGA异步串行实现

集成UART核心的FPGA异步串行实现

作者: 时间:2012-06-07 来源:网络 收藏

  这样就可以得到以下信息:在移位时钟的上升沿检测到txdone和writerdy都为高电平时,进入LOAD状态即将THR的数据LOAD到TSR,在下一个时钟就进入移位状态。在移位中同时进行校验位的运算,在需要送出校验位的时候将运算好的校验位送出,txdone=1的时候将高电平送出,其它时候移位输出。

  最后还有一个小程序,那就是写出writerdy的状态,很明显没数据写入时为高,而当txdone为低时为低,注意这里也必须同时同步。图二给出了一个奇效验8bit数据的发送时序图。

用FPGA器件实现UART核心功能的一种方法

 三、 接受部分

  对于接收同样存在9、10、11位三种串行数据长度的问题,必须根据所设置的情况而将数据完整地取下来。接收还有一个特别的情况,那就是它的移位的时钟不是一直存在的,这个时钟必须在接受到起始位的中间开始产生,到停止位的中间结束。接受到停止位后,必须给出中断,并提供相应的校验出错、FRAME错以及溢出等状态。

  这样需引入hunt和idle两个信号,其中hunt为高表示捕捉到起始位,idle为高表示不在移位状态,利用这两个信号就可以生成接收所需要的移位时钟。

  下面还有一个小程序,就是如何将接收的状态和标志表示出来。溢出标志很简单,那就是在idle从低变高,也就是说在接收到一个完整的串行序列后,去判一下当前的中断是否有效?(高有效,数据没有被读走)如果为高那么溢出,否则没有。在移位的时候,同时对接收的数据进行校验,这样就可以判断接收的数据是否有错,在接收完成时判一下当前的RX是否为高电平就可以知道FRAME是否有错,图三是一个8bit奇校验的接收时序图(假定接收正确,所以没有给出校验、溢出、帧出错信号)。

用FPGA器件实现UART核心功能的一种方法

  总结:我在用做一个设计的时候,由于还有资源而且正好用到,所以就根据对的认识进行了设计,全部用VHDL进行描述,用SPEEDWAVE进行语言级的仿真,用XILINX的F2.1进行顶层仿真,最后和PC的仿真终端进行联机,功能一切正常,整个所需要的触发器为80个左右,一般的PLD都可以完成。


上一页 1 2 下一页

关键词:UARTFPGA集成核心

评论


相关推荐

技术专区

关闭