原创 【博客大赛】串口控制器设计方案

2014-8-20 06:02 1040 7 12 分类: MCU/ 嵌入式 文集: FPGA设计经验

 

设计指标如下:

Ø       串口通信的波特率支持3种:57600bps、115200bps、230400bps;

Ø       1位起始位;

Ø       8个数据位;

Ø       奇偶校验位支持3种模式:无奇偶校验、奇校验、偶校验;

Ø       停止位支持2种:1位停止位、2位停止位。

原理图如下:

 

chuankou-sch.jpg

如下图所示,FPGA有MCU配置模块、串口发送模块、串口接收模块和两个同步FIFO组成。

外部串口芯片接收到的数据首先经过串口接收模块产生8位并行数据和FIFO写信号,则将收到的8位数据写进FIFO。

设计中FIFO深度为1024,数据位宽为8位。

通常FIFO和MCU之间的握手协议有两种:

一是FIFO的半满信号有效后产生中断信号,MCU接收到中断信号,首先查询串口接收FIFO的状态寄存器,确定为半满后,一次性将512个数据独读走。这种方案用在MCU需要处理的其他任务比较多的时候,不需要轮询FIFO的状态,一次性读走512个数据,效率比较高。

如果MCU需要处理的其他任务不繁重,可以通过查询FIFO非空状态,如果非空的话,则读取FIFO中的数据,然后判断FIFO是否为空,直到FIFO为空为止,大家可以评估下,这种方案其实FIFO很难存储太多的数据,基本有一两个数据就会及时被MCU读走。

需要说明的是,选择方案1和方案2需要具体情况具体分析,比如串口发过来的只是命令数据,协议格式里面只有几十个数据,这种情况下,等待几个小时也等不到半满信号,所以用方案2比较合适。

为了实现设计指标要求的3种波特率的要求,设计中选用的晶振为11.0592Mhz,其为最大波特率的整数倍,是串口通信系统中常用的晶振。

串口发送模块需要奇偶校验位、停止位等参数控制,这几个参数由MCU配置提供,默认值为波特率为115200bps、停止位1位、无奇偶校验。

 

chuankou-fpga.jpg
寄存器地址及功能描述见下表

MCU偏移地址

地址空间大小(字节)

类型

读写说明

寄存器名称

功能定义

0x0000

1

寄存器

读写

波特率设置;

0xC0:57600bps;

0x60:115200bps(默认值);

0x30:230400bps;

其他:115200bps

0x0001

1

寄存器

读写

奇偶校验位设置;

0x00:无奇偶校验(默认值);

0x01:奇校验;

0x02:偶校验;

其他:无奇偶校验

0x0002

1

寄存器

读写

停止位设置;

0x02:2位停止位;

其他:1位停止位

0x0010

1

FIFO

只写

串口发送FIFO;

MCU向该FIFO写入准备发送的数据即可

0x0020

1

寄存器

只读

串口接收空状态寄存器;

只有bit0为FIFO的是否为空状态,其他位全为0,如果bit0为高电平,则FIFO为空状态,否则为非空状态

0x0021

1

FIFO

只读

串口接收FIFO;

串口接收到的8位并行数据

 

文章评论5条评论)

登录后参与讨论

用户1385266 2014-8-21 08:21

很有思想,很有启发。是一种占用口线比较多的方法。

sunyzz 2014-8-20 09:01

肯定是上班啊!可以的,我的qq842860280

hot.summer_2010_438634915 2014-8-20 06:12

顺便问一下,你最近工作忙么,我的书稿快写完了,可以帮忙校对么?

hot.summer_2010_438634915 2014-8-20 06:04

谢谢中肯的意见,已修改,请继续监督!

sunyzz 2014-8-19 21:53

“外部串口芯片接收到的数据首先经过串口接收模块产生8位并行数据和FIFO写信号,则将收到的8位数据写进FIFO,FIFO非空则产生中断信号,MCU接收到中断信号,来查询串口接收FIFO的状态,如果非空的话,则读取FIFO中的数据,同时判断FIFO是否为空,直到FIFO为空为止。”你觉得非空就产生中断合适吗?请问你的FIFO深度有多少?另外,你的这段话和你下面的一段是一模一样的,要注意啊!既然写了就认真写,以后自己看也方便,不要写的这么含糊其辞。谢谢!
相关推荐阅读
快乐的践行者 2018-02-23 17:22
回来了
一晃好几年没来这儿了。心麻木了,干什么都没动力。...
快乐的践行者 2015-05-14 10:56
【博客大赛】《FPGA项目开发实战讲解》目录
《FPGA项目开发实战讲解》目录 第1章 FPGA介绍 1.1 FPGA的优势  1.2 FPGA典型结构图  1.3 LUT原理  1.4 FPGA上电配置过程时序图  1....
快乐的践行者 2015-05-07 06:17
【博客大赛】ACTEL的FPGA使用心得
和XILINX和ALTERA相比,ACTEL的使用人群就少多了。 ACTEL的缺点是运行速度不如xilinx的快,开发环境不如ISE灵活方便,文档也没有xilinx的丰富。 优点是其大部分...
我要评论
5
7
关闭 站长推荐上一条 /2 下一条