资源描述
基于CPLD和DSP的高速外部接口
摘要:在了解CPLD(Complex Programmable Logic Devices)和DSP(digital signal processor)的基础上,利用CPLD强大的逻辑功能和DSP的高速运算能力,实现对外部接口的高速无缝连接,以提高DSP访问外设的速率,充分发挥其高速运算能力。
关键词:DSP;CPLD;TMS320C6201;Quartus II;接口
Based on CPLD and DSP high speed exterior connection
Abstract: This article in understands CPLD and in the DSP foundation,Using CPLD formidable logical function and DSP high speed operational capability,Realization to exterior connection high speed seamless connection,Enhances the DSP visit peripheral the speed, displays its high speed operational capability fully.
Key words: DSP CPLD TMS320C6201 Quartus II Connection
0 引言
DSP虽然在算法处理上功能很强大,但其控制功能是非常弱的;而CPLD本身并不具有内部寄存器,虽然可以用CPLD的逻辑块来实现寄存器,但是这将耗费大量的CPLD资源。然而,CPLD的强项在于时序和逻辑控制。本文介绍的逻辑控制系统就是充分利用了DSP和CPLD的优点,将多个A/D转换单元通过CPLD映射到DSP的I/O地址空间,利用CPLD屏蔽A/D转换的初始化以及读写操作过程,使得DSP可以透过CPLD这个"黑匣子"快速、准确地从外设中获取数据。
1 CLPD与DSP简介
1.1 CLPD简介
复杂可编程控制器件(CPLD—Complex Programmable Logic Devices)是随着半导体工艺不断完善、用户对器件集成度要求不断提高的形势下所发展起来的产物。当前CPLD的规模已从取代PAL和GAL的500门以下的芯片系列,发展到5000门以上,现有上百万门的CPLD芯片系列。随着工艺水平的提高,在增加器件容量的同时,为提高芯片的利用率和工作频率,CPLD从内部结构上作了许多改进,出现了多种不同的形式,功能更加齐全,应用不断扩展。
CPLD是由三大部分组成的。
·一个二维的逻辑块阵列,构成了PLD器件的逻辑组成核心。
·输入/输出块。
·连接逻辑块的互连资源,连线资源由各种长度的连线线段组成,其中也有一些可编程的连接开关,它们用于逻辑块之间、逻辑块与输入/输出块之间的连接。
1.2 DSP简介
DSPs的速度较快,要求译码的速度也必须较快。利用小规模逻辑器件译码的方式已不能满足DSP系统的要求。同时,DSP系统中经常需要外部快速部件的配合,这些部件往往是专门的电路,可由可编程器件实现。CPLD的时序严格、速度较快、可编程性好,非常适
1周遐(1959~),男,1982年毕业于云南大学,高级工程师 副教授 研究方向:电子技术、通信技术
图1 典型的PLD的框图 图2 TMS320C6201的硬件体系结构
合于实现译码和专门电路。本文的介绍的是美国TI(Texas Instrument,德州仪器,简称TI)公司的TMS320C6201芯片。内部包含三个主要部分:CPU、存储器和辅助资源。图给出了TMS320C6201的硬件体系结构。
2 设计原理
2.1设计思路
首先构建系统框架如图3所示:
图3 系统框袈
由图可以看见,在DSP上连接了若干外设,只要知道外设的地址,通过地址映射的方法,DSP可以方便的访问这些外设。
以下为MAP1方式下的DSP内存映象图,未列的空间为没有定义。
起始地址#长度
用 途
备 注
0x0000,0000#10000
内部程序存贮器(IPM)
64KB
0x0040,0000#80000
SBSRAM
512KB
0x140,0000#0x200000
FLASH
2MB
0x160,0000#0x80000
控制寄存器定义
0x168,0000#0x80000
为用户保留的异步接口空间
UCE1#
0x170,0000#0x1000
双口RAM定义
0x178,0000#0x20
RS422控制寄存器定义
0x200,0000#0x1000000
SDRAM1
16MB
0x300,0000#0x1000000
SDRAM2
16MB
0x8000,0000#0x10000
内部数据存贮器(IDM)
64KB
当片内的RAM容量不能满足系统的程序/数据空间要求时,用户必须在片外进行存储器扩展,这就需要利用外存储器接口(EMIF)。实际上,DSP 内部各个模块与片外的存储器打交道时,都必须通过EMIF 的控制。EMIF 支持的存储器包括:同步突发静态RAM ( SBSRAM );同步动态RAM ( SDRAM);异步器件(包括异步SRAM , ROM 和FIFO 等,EMIF为它们提供了高度可编程的接口时序,以满足不同的需求);外部共享存储空间的器件。需要强调的是,C6000用的EMIF第一次对这些存储器提供了无缝接口(glueless intederface)能力,这给开发人员带来了极大的方便。
在C6000中,异步接口的每个读/写周期由三个阶段构成:建立,触发,保持。建立:从存储器访问周期开始(片选、地址有效)到读/写有效之前。触发:读/写信号从有效到无效。保持:从读/写信号无效到该访问周期结束。
CEx 空间控制寄存器对于读和写操作的这三个阶段的时间是可以进行独立的设置的。需要注意的是,建立时间和保持时间可设置的最小值是l (单位是CPU时钟周期),如果用户设置为O ,系统将当作1 看待。保持时间可以设置为0 。另外,不论是连续存取操作,还是单次存取,在存取第一个数时,EMIF会自动维护最小的建立时间为2 ,即便是用户将setup time设为1 ;读取最后一个数据后,CEx 信号将在保持(7-hold time )个时钟周期后恢复为高;写完最后一个数据后,CEx信号将在(3 + hold time)个时钟周期为高 ,如果hold time位设为0, CEx 信号在4个时钟周期后恢复为高。
2.2 ROM接口设计
在ASRAM设计中我们没有用到/ARE和ARDY信号。其中地址空间信号实际是从CPLD映射过来的,并非DSP内部自行运算得到的。
ROM 接口设计:
ROM 在接口时序上,与ASRAM 基本没什么不同。它的特殊性有两个,一是只有读操作,二是空间配置有所讲究。
C6000 EMIF 的异步接口支持8bit/16bit ROM存取。当从这些所谓“窄存储器空间”读取数据时,EMIF会自动将多次读的数据合成一个32bit 值EMIF 在这种情形下工作时:不管存取的存储器的宽度怎样,每次读始终是按32bit进行的。输出的地址会自动进行移位,这保证了在对窄存储器存取操作时提供正确的地址。对16bit ROM,地址自动左移一位,对8bit ROM,地址自动移两位。移出的高位地址被舍弃。EMIF总是先读取较低地址的数据,将其排在LSB ,再读取下一个数据,依次放在较高的字节位置。这意味着,不论用户将芯片的LENDLAN位设置为何值,ROM中数据的存放必须是little endian 的。
在ROM的设计中:第一,没有用到写信号;第二,虽然是8bit/16bit ROM,仍然是EA2(EMIF-侧)与A0(ROM-侧)相连;第三,ROM的片选信号CS很明确地是与CE1相连。这是因为C6201的4个外部存储空间CE0-CE3中,只有CE1可以与8bit/16bit的“窄存储器”接口:需要用到ROM boot时,ROM 是必须配置在CE1空间的。
图4 SRAM接口关系框图 图5 LASH存储器接口关系框图
2.3 FLASH存储器接口设计
一般来说,闪存的读操作与先写入的ASPAM是完全相同的,只是写操作相对而言要复杂些,原因在于闪存写入时,需要先写入一串命令字序列。但从接口设计的角度而言,闪存与前面的ASRAM/ROM在接口设计上基本一致,并没有什么特殊的地方。关键是在应用时需要根据具体芯片的要求,在软件上配合完成写操作。
Flash型存储器的写操作由清“0”、置“1”和编程操作构成,清“0”和置“1”操作按扇区(一块存储区)。本文提到的FLASH存储器的起始地址为0x140,0000,长度为0x200000,当地址映射到其中的区间时,DSP访问FLASH。
RS422是一个接口电路,通过提供平衡电路来改进接口电气特性,通过传输线驱动器将逻辑电平变为电位差,实现信息传送。通过传输线接收器将电位差变为逻辑电平,实现信息接收。因而可以支持较高的传输速率和较长的传输距离,在最大传输率10 Mb/s的情况下,电缆允许长度为120m;如果采用低传输率,如90kb/s时,最大距离可达1200m。
UCE1(为用户保留的异步接口空间)的起始地址为0x168,0000,长度为0x80000。保留一定的异步接口空间不是必须的,但是对用户来说是非常方便的,用户可以根据自己的需求自主的来定义这部分空间。
3 利用Quartus II进行仿真测试与结果分析
连接接口仿真波形:
图6 连接接口仿真波形图
从仿真结果中可以看出AEB_DG和AEB_DDIR的传递延迟大约为10ns。为看清系统是否有芯片感应时间引起的延迟,所以在测试中引入HOLDA在40ns-45ns时为0,由仿真结果可以看到没有明显的芯片感应时间引起的延迟。在AEB_DDIR的后段见到了一些不正确的尖峰信号,这些尖峰信号称为“毛刺”。
如果一个组合逻辑电路中有“毛刺”出现,就说明该电路存在“冒险”。所以要消除竞争冒险的发生条件,避免毛刺的产生。毛刺并不是对所有的输入都有危害,例如D触发器的D输入端,只要毛刺不出现在时钟的上升沿并且满足数据的建立和保持时间,就不会对系统造成危害,因此可以说D触发器的D输入端对毛刺不敏感。 根据这个特性,应当在系统中尽可能采用同步电路,这是因为同步电路信号的变化都发生在时钟沿,只要毛刺不出现在时钟的沿口并且不满足数据的建立和保持时间,就不会对系统造成危害。(由于毛刺很短,多为几纳秒,基本上都不可能满足数据的建立和保持时间)
所以该处可以在AEB_DDIR输出信号前连接一个或一组D触发器,利用D触发器的D输入端对毛刺信号不敏感的特点,在AEB_DDIR输出信号的保持时间内,用触发器读取组合逻辑的AEB_DDIR输出信号,这种方法类似于将异步电路转化为同步电路。
接口测试仿真波形一:
从仿真结果看到,当地址映射为140,0000时,DSP访问外设Flash,与设计要求一致,同时FL_CE1、FL_OE和FL_WE的延迟大约为9ns,是内部传递的时间延迟,没有芯片感应时间引起的延迟。
图7 接口测试仿真波形一图 图8 接口测试仿真波形二图
接口测试仿真波形二:
从仿真结果看到,当地址映射为178,0000时,DSP访问外设rs422,与设计要求一致,TL550_CS的延迟大约为13ns,TL550_RD的延迟大约为10ns,TL550_WR的延迟大约为8ns。其中各信号延迟时间的不同,是因为我们无法保证电路中连线的长度一样长,信号到达逻辑门的时间一致,所以产生了不同的时延。此外,从结果中看出没有产生因芯片感应时间引起的延迟。
4 结束语
从上面的仿真波形可以看出经过CPLD的逻辑编程控制,DSP在访问各个外部接口时并没有出现各个通路相互干扰的问题,且没有较大的时延和芯片引起的传递延迟。通过CPLD的逻辑编程,大大增强了DSP访问外围设备的能力,且提高了资源利用率。使得CPLD和DSP都充分发挥了各自的优点。DSP虽然在算法处理上功能很强大,但其控制功能是非常弱的;而CPLD本身并不具有内部寄存器,虽然可以用CPLD的逻辑块来实现寄存器,但是这将耗费大量的CPLD资源。然而,CPLD的强项在于时序和逻辑控制。从结果可以看到其时间延迟多为10ns左右,符合时序逻辑,可以说本次设计达到了预期的效果,充分发挥了CPLD和DSP各自的优点。
基于DSP技术和CPLD应用的广泛性,本文介绍的利用CPLD来扩展DSP对外设的访问能力只是其基础。DSP的应用已经涵盖了工业、通信、娱乐、个人医疗、教育、环境控制、安全等领域。其中TMS320C6201芯片是TI公司生产的TMS320系列产品中新一代高性能DSP芯片,该芯片已经在电子测量、测控、图象、雷达、声纳、和软件无线电等领域得到了广泛运用。而在这些运用中,DSP芯片都需要连接外设,此时就需要利用CPLD的逻辑控制能力来减轻DSP芯片的压力。这也就是本文的意义所在。
参考文献:
[1] 白云霄,陈乐柱;基于FPGA的FLC在DC/DC变换器中的应用研究[J] ;电子技术,2007.Z2 PP.136~137
[2] 刘义才,苏弘,马晓莉;CPLD在多路定时信号处理中的应用[J];核电子学与探测技术,2007年 06期 PP.127~131
[3] 戴育良;DSP与PIC单片机的接口设计[J];中国西部科技,2007年20期PP.21+28~29
[4] [英]渥伦斯基,凌纯清 译,VHDL数字系统设计[M];电子工业出版社,2004.7
[5] 夏宇闻, Verilog数字系统设计教程[M];北京航天航空大学出版社,2003
[6] 江思敏 刘畅 , TMS320C6000 DSP应用开发教程—DSP应用开发教程系列[M];2005.2
展开阅读全文