FPGA和51单片机通信接口的设计
2015-10-14刘宇成李金凤
刘宇成 李金凤
摘 要:虽然FPGA速度快,但由于FPGA对采集到的数据的处理能力和控制能力比较差,故需要将其采集到的数据送到单片机系统上来实现数据的处理功能,这就使得FPGA系统与单片机系统之间的数据通信提到日程上。本文给出部分VHDL源程序,并用Quartus II进行仿真。
关键词:FPGA;VHDL;单片机;通信
单片机具有性价比高、功能灵活、易于人机对话、良好的数据处理能力的特点;FPGA则具有高速、可靠以及开发便捷等优点。系统设计中将单片机数据处理的优势与FPGA、执行快速的特点相结合,能够设计出既有强大控制功能又能使各项功能快速执行的系统。因此,单片机与FPGA之间的通信便显得尤为重要本文介绍利用VHDL语言实现FPGA与单片机的并行通信接口设计。本文主要由以下三个部分组成:FPGA接收ADC0809数据;FPGA发送数据和单片机接收数据模块,VHDL程序及仿真结果。本文着重对FPGA数据发送模块实现进行说明,原理图如图1所示:
1 FPGA接收ADC0809数据
ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。本系统用ADC0809把传感器采集的模拟信号变成数字信号,然后用FPGA控制数据流进程,并用外围LED电路显示。FPGA与ADC0809接口电路图如图2所示。为了实现对ADC0809精确地控制,所以本系统采用FPGA特有的状态机来进行时序上的控制,引脚说明如下:
(1)ALE信号(引脚):高电平时把三个地址信号送入地址锁存器,并经译码器得到地址数据,以选择相应的模拟输入通道。
(2)OE信号(引脚)EN使能信号:电平由低变高时,打开数据输出锁存器,将转换数据送到数据总线上。
(3)EOC信号(引脚):EOC为高电平时完成转换,为低电平时正在转换。
(4)STAT信号(引脚):要给STAT线送一个100ns宽的启动正脉冲,STAT下跳沿时, 开始进行A/D转换,在转换期间STAT以保持低电平。
ADC0809状态机工作原理:在S0状态,初始化;在S1状态,ALE、STAT控制引脚拉高;在S2状态,ALE、STAT产生下降沿,锁存地址,启动转换,并对EOC引脚进行检测,若引脚为低,则回到S2状态,若引脚为高,则说明转换完成;在S3状态,OE为高,,允许ADC输出;在S4状态,此时触发LOCK上升沿,FPGA输出转化后的数字量。状态机原理图如图3所示。
2 FPGA发送信息与单片机接收信息
单片机与FPGA以总线方式通信的逻辑设计,重要的是要详细了解单片机的总线读写时序,根据时序图来设计逻辑结构,其通信的时序必须遵循单片机内固定的总线方式读写时序 。单片机以总线方式与FPGA进行数据通信与控制时,其通信工作时序是纯硬件行为,速度很快。51单片机的时序图如下图4所示:
单片机的P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P2口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。/WR为外部数据写选通,/RD为外部数据读选通。RST为单片机的复位信号。ALE为地址锁存允许的输出电平,用于锁存地址的低位字节。在该接口模块的通讯中,用单片机的P0口传送与FPGA通讯的地址和数据。该系统中,在FPGA成功加载程序后由FPGA控制单片机复位信号。
3 VHDL的部分程序及仿真结果
在接口设计中,采用了VHDL语言实现其接口逻辑。51单片机与FPGA的通信读写电路的部分程序如下:
4 结束语
虽然现在一些公司推出了内嵌微处理器FPGA,但由于价格、开发手段等因素的影响,在未来一段较长的时间里,还是会更多的采用单片机与FPGA配合的方式设计系统,以发挥单片机的灵活性和FPGA的高速性。因此,单片机与FPGA之间的通信就尤为重要。
参考文献
[1]潘松,黄继业..EDA技术与VHDL[M].北京:清华大学出版社.
2009.
[2]潘松,潘明.现代计算机组成原理[M].北京:科学出版社.2007.
[3]潘松,王国栋.VHDL实用教程(修订版)[M].成都:成都电子科技大学出版社.2001
[4]栗彩霞,武一,于海江,高炎萃.MCS一51单片机与FPGA接口的逻辑设计[M].山西电子技术,2009,1674-4578(2009)05—0026—02.
[5]李景华,杜玉远.可编程逻辑器件及EDA技术[M].沈阳:东北大学出版社,2000.
[6]徐志军,徐光辉.cPLD/FPGA的开发与应用[M].北京:电子工业出版社,2002.