FPGA实现UART和MCU一体化设计

2011-04-08 08:16:52来源: 现代电子技术
   

摘要:现代数字电子系统设计正在朝着新的方向发展,即利用FPGA技术进行系境设计。介绍了一种利用FPGA来实现通用串行异步收发器(UA-RT)和控制通信的MCU的数字系统,底层设计模块采用VHDL硬件描述语言实现,并进行了仿真验证。该设计方法和理念为以后的计算机系统以及其他的数字电子系统提供了一个新的思路,应用此技术可以使系统设计更加紧凑、可靠。
关键词:计算机系统;FPGA;VHDL;UART;MCU;有限状态机

    计算机技术和微电子技术的发展为现代电子设计提供了新的方法和途径。传统的电子设计采用功能独立的分立元件进行功能组合从而实现特定的功能,计算机设计初期也一直采用这种模式。但是随着近代电子技术的进步,尤其是FPGA(Field Programmable Gate Array)的出现,使得电子设计和计算机设计都发生了很大的变化,尤其是在数字电子系统的设计领域。利用现场可编程门阵列FPGA可以实现任何数字器件的功能,而且还可以大大缩短设计时间,减少PCB的面积,提高信号的传输质量,提高系统的可靠性,增加设计的灵活性和可维护性。本文采用FPGA技术实现一个MCU与串行通信外设进行简易通信的平台,一方面了解了计算机的一些控制原理和工作流程;另一方面可以了解利用FPGA进行电子设计的优越性。

1 FPGA与电子设计
    用FPGA进行计算机I/O通信设备的开发设计,实现了功能类似Intel 8250及8251,美国半导体公司的16550串行通信接口的功能,同时实现了带有简单类忙编指令的微控制单元MCU来控制与外围I/O设备的通信。整个设计采用VHDL在Altera的QuartusⅡV6.0进行设计实现,并进行仿真验证。
1.1 FPGA的原理及其开发平台
    通常的FPGA由布线资源分隔的可编程逻辑单元构成阵列,又由司编程I/O单元围绕阵列构成整个芯片,排成这列的逻辑单元由布线通道中可编程内连线连接来实现一定的逻辑功能,也就是说分段的互连线可以通过可编程开关以任意方式连接起来形成逻辑单元的信号线。一个FPGA主要由逻辑阵列块(LAB)、I/O块、RAM块和可编程的行/列线等组成。
1.2 FPGA的开发软件及设计流程
    FPGA的开发软件一般由生产FPGA的厂商根据自己的产品特性提供专门的开发工具,目前主要流行的是Xilinx的ISE平台和Altera的Quar-tus平台。本文使用的是后者。使用该设计开发软件能够完成FPGA系统设计的流程基本包括了设计输入(原理图输入或HDL语言描述输入)、综合、布线、下载等工作。本文所设计的电子系统设计输入采用VHDL语言。
    选定了设计平台后,只要考虑所要设计系统的功能,借助集成开发环境即可完成想要的设计。一般来说,利用FPGA进行电子设计的完整的设计流程分为电路的设计与输入、功能仿真、综合、综合后仿真、实现、布局布线后仿真、配置下载与调试等步骤。由于FPGA的灵活性和设计的可重复性,可以保证在任何仿真或者验证步骤出现问题时都能根据错误定位返回相应的步骤,以进行更改或者重新设计。这是传统电子设计方法无法比拟的。

2 系统设计与实现
    本文所设计的系统实现了一个可简易汇编指令的微控制器MCU和一个计算机组成中的外围串行通信I/O设备。通过实现的一部分I/O输入/输出指令和条件跳转指令可实现与外设的通信控制。系统功能模块划分如图1所示。

1.JPG


2.1 串行通信外设的设计与实现
    在计算机系统组成中,串行通信占据重要地位,它的使用范围包括计算机与外部设备之间,计算机与计算机之间、甚至在进行前期CPU设计时都会用到。传统的设计方法是应用Intel公司的8250/8251或者美国半导体的16550等芯片,但因设计复杂,占用电路体积大,而且出现问题不容易跟踪定位,所以本文采用FPGA实现。将串行通信的关键器件UART集成到FPGA内部,增加系统的可靠性,缩小PCB板体积,使得系统更加紧致,且能根据需要进行适当的设计、扩充和裁剪。实现的该I/O设备功能划分如图2所示。

2.JPG


2.1.1 UART模块的设计与实现
    UART串行数据格式如图3所示,串行数据包括5~8位数据(可更改设置)、1位起始位、1~2位停止位、1位校验位。该模块主要由发送模块和接收模块两部分构成。在各自模块中分别由接收缓冲器、接收控制电路、发送缓冲区、发送控制电路、数据总线缓冲器、读写控制电路组成,逻辑框图如图4所示。

3.JPG

    UART模块的发送模块和接收模块公用复位信号、时钟信号和并行数据线,并且有各自的输入/输出模块和控制电路单元。
    (1)发送模块的设计。发送模块将从微控制器MCU送来的8位并行数据转换成图3所示的数据帧格式的串行数据发送出去。该模块分为3种工作模式:空闲模式、载入数据模式、移位模式输出模式。当并行的8位数据从微控制器MCU通过数据线写入发送FIFO(在以下2.1.2节实现)中时,发送模块自动将并行数据装入锁存器THR中,首先发送起始位0,然后根据LCR定义的数据格式将数据移位,并通过状态机和节拍器实现完整的发送序列,并以相应的波特率从TX发送出去。发送模块的状态机FSM如图5所示。
    (2)接收模块的设计。接收模块接收串行输入的数据(见图3),然后将其转换为并行数据送给微控制器MCU。与发送模块相同,也分为3种工作模式:空闲模式,检测起始位模式、移位输入模式。首先接收模块在接收时钟的控制下,不断地在RX端口检测输入数据的起始位,当检测到起始位后,接收模块由空闲模式转变为移位输入模式。此时通过RX端口进来的串行数据可能存在着些许抖动,因此需要添加消抖电路进行处理。消抖处理一般有两种办法,一种是在前端添加非门的R8触发器来完成,一种是类似软件的方式控制采集输入端的数据,并将前后采集的数据值进行比较,相同则保持,否则继续采集比较,这里采用的是后者。当接收完数据,更新接收缓冲区状态,以提供微控制器MCU查询,方便读取数据。接收模块的状态机FSME如图6所示。

4.JPG


2.1.2 输入/输出缓冲区(FIFC))的设计与实现
    FIFO(First In First Out)是一种先进先出的缓冲区结构。主要在通信过程中解决通信两端速度不匹配的问题。访问FIFO仅需要读/写控制线,不需要地址线,因此采用FIFO实现的缓冲区接口简单,读写方便。由于文中的微控制器MCU和I/O设备均在FPGA内部实现,因此采用同步FIFO实现,即写端口和读端口采用同一个时钟进行控制操作。该系统分别实现了位宽为8位,深度为256 b的缓冲区来对MCU发送给外设的数据和从外设接收的数据进行缓冲处理。实现方法可以采用Altera公司FPGA内部的资源实现。对FIFO的读/写控制可根据缓冲区的使用状态和MCU发送来的命令来实现。FIFO模块的结构图如图7所示。

5.JPG


    读信号和写信号由微控制器MCU通过向I/O设备进行数据输入和输出操作产生。空标志和满标志用于MCU探测缓冲区状态,应用查询方式对外设进行读写数据操作。对于发送缓冲区,当缓冲区处于满状态时表明已经没有可用的存储空间缓冲数据,此时不允许进行写操作;对于接收缓冲区,当缓冲区处于空状态时,表明没有从设备收到任何的时间,此时不允许微控制器MCU从外设接收缓冲区读取数据。
    通过QuartusⅡ产生的FIFO如图8所示。

6.JPG


    图8中,aclr是异步复位信号;clock是时钟输入;rdreq和wrreq分别是读和写信号线;data[7…O]是FIFO的并行数据输入端;q[7…0]是FIFO的并行数据输出端;empty和full分别为FIFO空满标志的状态线;usedw[7…O]为当前状态下FIFO已经使用的存储量,即FIFO中已经写入并保存的数据量。
2.2 微控制器MCU的设计与实现
    在一个计算机系统中,中央处理器处于核心控制地位,它不仅是参与运算的核心器件,而且是控制外设的中枢。一般情况下,它实现了一定的功能指令集,用来由用户自己编程控制外部设备动作或者进行一些算术逻辑运算。本文中所实砚的微控制器MCU主要以实现对外设的控制,实现了对外设端口的读写控制以及一些必要的程序控制指令。在一个微控制器的设计中,指令系统的设计尤其重要,它不仅关系到控制器的设计,也关系到软件程序的设计方法。指令系统的设计分为指令集设计和指令动作设计两部分,前者侧重于控制器的总体功能;后者侧重于指令的具体实现。进行指令设计时首先要进行指令分析,根据系统所要完成的功能,完成所需指令的功能设想,这是指令设计的基础;然后分析指令该放在什么地方,微控制器如何取指令和对指令进行识别等操作;最后确定指令格式以及每个指令完成指定功能所需要的一系列基本动作过程。可以使用ALtera公司FPGA内部的ROM作为程序存储器,详细的实现过程参看参考文献。通过此系统进行分析,设计实现如表1所示指令。每条指令功能的完成具有取指令、指令译码、执行指令阶段。指令的分析译码执行由状态机逻辑控制具体实现。

[1] [2]

关键字:FPGA  UART

编辑:北极风 引用地址:http://www.eeworld.com.cn/FPGA/2011/0408/article_2030.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
FPGA
UART

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 

夏宇闻老师专栏

你问我答FPGA设计

北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved