在FPGA中实现SPI与总线接口转换
2013-02-09
刘伯栋
标签:

摘要:FPGA和CPLD可编程逻辑器件具有可编程的特点,这为不同接口之间转换提供了灵活性。具有SPI接口或总线接口的各种芯片在电路设计中的应用日益广泛。为了能够对这些芯片进行设置以及实现相互之间的数据传输,往往需要在它们之间进行接口转换。主要介绍了在FPGA中通过时接口时序和接口速率的处理,实现SPI接口与总线接口转换,完成了M68HC912832和P89C5lRD2FA之间的数据双向传输,并给出了实现方案、仿真结果以及硬件调试结果。

1引言

随着印刷电路板设计向着密集化、多功能化和小型化的方向发展,电路板上通常配置了多种不同芯片,为了能够对这些芯片进行设置以及实现相互之间的数据传输,往往需要在它们之间进行接口转换。

FPGA和CPLD等可编程逻辑器件具有现场可编程、逻辑资源丰富以及集成度高等特点,通过FPGA或者CPLD进行接口转换,具有很强的灵活性,因此在电路设计中被广泛应用。

2器件介绍

本文主要介绍在FPGA中实现SPI接口与总线接口的转换,其中选用的芯片是:Motorola公司的M68HC912B32,Philips公司的P89C51RD2FA,FPGA是Xilinx公司SPARTANⅡE系列中xc2s600e。接口之间的连接关系如图1所示,图中省去了电平适配的考虑。

M68HC912B32是Motorola公司的一款16bit微处理器。它具有32kbyte的FLASH EEPROM空间,1kbyte的RAM空间。该处理器含有丰富的外

部接口单元,除了同步串行外设接口(SPI),还有异步串行通信接口(SCII),8通道10bit的A/D转换器,以及4通道8bit或2通道16bit的脉宽调制

器(PWM)等。M68HC912832具有较强的处理能力,加上丰富的外设资源,使得该处理器在多种终端设备中得到应用。

P89C51RD2FA是Philips公司的一款单片机。P89C51RD2FA具有64kbyte的Flash EPROM,1kbyte的BOOTROM,用于在系统编程。与其他单片机相比,P89C51RD2FA具有在系统可编程的特点。通过改变P89C51RD2FA引脚psen接地,用标准串行接口,由普通PC下载程序到该款单片机中。该方式省去了专门的编程器,也省去了单片机程序下载和在目标板上运行之间的来回移动。

Xilinx公司的SPARTANⅡE系列器件是基于成熟的Virtex—E系列器件的结构,内核电压采用1.8V,系统时钟速率可达到200MHz,最大系统门

为60万门,就是本文中的xc2s600e。SPARTANⅡE系列器件主要由可配置逻辑块(CLB)、输入输出模块(IOB)、块存储器(Block-RAM)和数字锁相环(DLL)四大部分组成。内部丰富的逻辑资源,支持多达19种I/O标准,高性能的路由结构等特点,使得SPARTANⅡE系列FPGA具有非常高的性价比。

3 接口转换特点

M68HC912B32具有SPI接口,即同步串行外设接口。构成SPI接口的四根信号线通常是:从机选择线/SS、时钟信号线SCK、主机出从机入信号线MOSI和主机入从机出信号线MISO。由此可见,通过SPI接口进行通信的双方有主机和从机之分。在本系统中M68HC912B32作为主机,从机在FPGA中实现。为了简化设计,还增加了从机发送数据请求信号线/TREO。

M68HC912B32的SPI接口时序受内部控制寄存器控制,在时钟相位CPHA=l条件下,当有数据要传输时,首先/SS变成低电平,然后在SCK时钟推动下,数据由MOSI或者MISO传输。数据传输结束后(可以传多个字节),/SS再还原成高电平。为了区分数据传输方向,由/TREQ作为从机向主机发送数据的握手信号,即/TREQ变成低电平时,主机为接收状态,MISO上的数据有效。

单片机P89C51RD2FA与FPGA以总线的方式相连,信号线包括地址/数据总线(8位),数据写使能/WR,数据读使能/RD,以及外部中断请求

/INT0,数据读写是在外部中断控制下完成的。

FPGA的作用就是把M68HC12以同步串行传输过来的数据转换成总线数据形式,然后由P89C51RD2FA读出。反之,接收P89C51RD2FA中

的总线数据,完成并串转换,然后再以同步串行的方式将数据发送给M68HC912B32,实现逆向数据转换。

4FPGA实现方案与调试结果

通过FPGA实现SPI接口与总线接口转换,需要考虑以下因素:

①接口时序。主要包括/SS与SCK的时序关系;/TREQ与/SS的时序关系;SCK与MOSI和MISO的时序关系,比如MOSI数据在SCK下降沿

被从机采集接收,而MISO数据必须在SCK上升沿由从机输出,这样在相邻的下降沿被主机接收;另外,在多字节传输时,为保证数据传输的连续性,相应增加了一些控制时序等;

②接口速率。在本设计中的SPI接口数据速率是125kbps,该速率大于一般异步串口速率(如19.2 kbps),接口转换必须满足处理速度要求。比如设计中采用了接口数据缓冲的方法。当FPGA接收来自主机的数据时,首先逐位移入接收寄存器,满一个字节后提交给接收缓存单元,然后以中断方式通知P89C51RDFA由此读出,同时逐位接收下一个字节到接收寄存器。当向主机发送数据时,采用与此类似的数据缓冲模式;

③检测功能。为了接口时序的正确性必须增加一些检测保护功能。例如,当由FPGA构成的从机向M68HC912B32主机发送数据时,首先要对/SS进行检测,如果/SS为低电平,则说明主机正在向从机发送数据,此时不能发出请求信号。直到/SS恢复为高电平后,/TREQ才可以变成低电平,向主机发出请求信号。

综合考虑各种约束条件和接口时序后,首先进行功能模块划分,并明确各个模块之间的接口关系。本方案中,对实现的SPI与总线接口的转换进行了3个模块划分,即:控制模块(spi_ctrl_module),接收模块(spi_rec_module)和发送模块(spi_trm_module)。然后将3个模块按照相互之间的逻辑关系组合成一个SPI接口转换单元,如图2所示。最后,将合成的SPI接口转换单元再与系统中的其它单元合并,共同完成系统的整体功能。

FPGA程序设计遵照了自顶向下的设计原则。在完成各个模块功能划分之后,对各个模块以及子模块进行了程序设计和仿真验证。各个模块均是以硬件描述语言Verilog进行设计的。用硬件描述语言设计的优点是程序移植性好,便于进行大规模的FPGA设计。在对各个模块的输入输出时序明确后,可以单独对每个模块进行测试,这样既保证了模块之间能够正确组合,又为查找问题带来一定便利。

Xilinx公司提供了高性能设计开发工具ISE(Integrated Software Enviroment)6.1i。ISE6.1i软件环境支持设计者从最初的程序编写到功能仿真、

设计综合,再到布局布线、时序仿真,直到最后的程序下载等全部设计流程。其中,ISE6.1i还提供了第三方仿真工具Modelsim接口,利用Modelsim进行行为仿真和布局布线后的仿真,保证了程序设计中每一阶段的正确性。

经过仿真验证后,再经过逻辑综合和引脚分配,生成配置文件,最后下载到FPGA中进行硬件调试。

从初始调试的结果来看,FPGA转换接口的功能基本实现,能够进行数据的双向传输。但是,调试过程中也发现了几个问题,在经过分析和问题定位以后,最终得以解决。

①发现由主机M68HC912B32向单片机P89C51RD2FA传输多个字节时,最后一个字节有时能够收到,有时不能收到。经过分析,最终确定

问题出在SCK最后一个时钟周期与/SS变成高电平的时间间隔太短,导致P89C51RD2FA中断处理程序有时不能及时处理最后一个字节。通过改变SCK和/SS变高的时间间隔或者缩短单片机中断处理时间,使得问题得以解决;

②为了确保一次通信能够正确传输多个字节数据,对字节与字节间的时间间隔进行了适当延长,保证了P89C51RD2FA中断处理程序能够实时响应;

③为了验证SPI转换接口的正确性,进行了长时间的拷机试验,结果还是发现个别时间传输数据不对。尽管这种情况出现的概率很低,但表明程序设计中必然还有不完善的地方。为此,重新对接口中各个组成模块的时序进行了验证,但是没有发现什么问题。这说明接口程序本身是正确的,因此重点怀疑外部条件是否满足设计要求。经过仔细排查,结果发现在/SS连线上存在一些毛刺,在/SS为高电平(无效)时不定期的产生一个宽度约为10ps的窄脉冲,这对于设计而言会带来一定影响,因为一些时序就是在/SS变低(有效)进行触发的。发现这个现象之后,一方面对硬件线路进行了调整;另一方面在FPGA程序设计里,对/SS引脚输入端在高倍时钟推动下用两个D触发器进行逻辑或运输,消除了/SS上的不确定脉冲。最终问题得以解决。

从最初的FPGA方案设计到最后的硬件调试完成,中间进行了许多有益的尝试,对于积累FPGA开发经验都是有所裨益的。

5 结束语

通过本文的设计举例可以看出:在FPGA或者CPLD中进行接口转换,可以根据实际需要,略去接口协议中的无关内容或者增加一些控制信号线,从而简化设计;另外,在多种接口芯片共存的电路板上,通过FPGA/CPLD的转换“桥梁”作用,既能实现它们之间的数据互通,又便于集中处理,节省了布线空间资源,这也是现在电路设计中的一种普遍趋势。

参考文献

[1]孙航.Xilim可编程逻辑器件的高级应用与设计技巧.北京:电子工业出版社。2004.

[2]刘明业,蒋敬旗,刁岚松.硬件描述语言Verilog.北京:清华大学出版社.2001.

[3]徐爱钧,彭秀华.单片机高级语言C51Windows环境编程与应用.北京:电子工业出版社。2001.

可能会用到的工具/仪表
相关文章
推荐文章
热门文章
章节目录
本站简介 | 意见建议 | 免责声明 | 版权声明 | 联系我们
CopyRight@2024-2039 嵌入式资源网
蜀ICP备2021025729号