位置:51电子网 » 技术资料 » 接口电路

DSP接口效率的分析与提高

发布时间:2008/6/3 0:00:00 访问次数:398

摘要:分析了导致dsp系统接口效率低下的几种情况,重点叙述了相应的提高效率的设计方法,并提供了电路图和源程序。

关键词:dsp 接口电路 can控制器

近几年来,数字信号处理器(dsp)得到了广泛的应用。由于dsp采用程序空间和数据空间分离的哈佛结构,对程序和数据并行操作,使之成倍地提高了处理速度;再加上流水线技术,使得dsp的指令周期多为10ns级。而与之配套的外围器件却没有像dsp那样猛地发展。首先,dsp与外围器件之间的速度差异日益显著,大部分外围器件的读写周期在50ns以上,即使是最快的静态ram,其读写周期亦为8ns左右,也只能与50mhz以下的dsp直接接口;其次,一些领域的器件在设计时并没有考虑与dsp接口,以至于不能直接接入dsp总线,如can总线控制器sa1000采用地址总线与数据总线分时复用的总线接口。这使得dsp与许多外部器件难以接口,特别是在与多个外部器件接口或者与总线不兼容的外部器件接口时,常常会出现因接口处理不当而导致接口效率低下的情况。当dsp对外部器件的操作频率很高时,接口效率的高低将对系统的运行速度产生不可忽略的影响。

1 多个外设的情况

当dsp与低速器件接口时,可以通过设置dsp片内的等待状态产生控制寄存器(wsgr),在相应的程序空间、数据空间或i/o空间产生1~7个等待周期,以使dsp的访问速度能和低速器件相匹配。当在同一空间内既有低速器件又有高速器件时,通常wsgr的延时值被设置成与速度最慢的器件相一致,以保证dsp对所有的器件都能进行正确的访问。若对高速器件的操作很频繁,则这种对整个空间的延时将极不合理地降低系统速度。例如,有些系统在程序空间同时扩展有ram和rom。而rom的速度一般远远低于ram,其访问周期一般为100~200ns,即使dsp和ram的访问速度均可达到25ns,但对整个数据空间进行延时后,dsp也只能以rom的访问速度(100~200ns)对ram进行访问。

在这种情况下,首先应考虑使用软件方法提供效率。其方法是默认的情况下将wsgr设置成与高速器件一致,当要访问低速器件时再修改wsgr的值。dsp常常对外部件进行连续操作,在这种情况下,软件方法还是比较有效的。但最大问题在于增加了软件负担和不稳定因素。

显然,效率最高的情况是,既不需要修改wsgr,dsp又能以外部器件本身的速度对它们进行访问。事实上,只要能够产生适当的信号控制dsp的ready端,就可以达到这个目的。dsp在开始一个外部总线的操作后,会在每一个clkout信号(dsp的时钟输出)的上升沿时刻对ready端进行查询,若ready为低,则保持总线的状态不变,然后在下一个clkout上升沿时刻两次查询,直至查询到ready为高时结束本次总线访问。

下面的设计实例中介绍的硬件等待电路(见图1)能够实现这个功能。它针对不同的外部器件产生相应的等待信号送到dsp的ready端,实现硬等待。其核心器件采用了广泛应用的通用逻辑阵列(gal),gal的引脚定义与图1相对应。使用gal器件使硬件设计变得简单而灵活,可以完成比较复杂的逻辑关系。

例如,频率为50mhz的dsp在数据空间外扩有ram和rom各一片,访问周期分别为70ns和150ns,地址空间分别为0x8000~0x8fff和0x9000~0x9fff。由dsp的主频可知,对ram和rom的访问各需插入3个和7个等待周期。下面给出gal源文件的关键部分(它们使用汇编程序fm的格式编写):

q0:=/q0*/rd+/q0*/wr

q1:=/q0*q1*/rd+q0*/q1*/rd+/q0*q1*/wr

+q0*/q1*/wr

q2:=/q1*q2*/rd+/q0*q1*q2*/rd+q0*q1*/q2*/rd

+/q1*q2*/wr+/q0*q1*q2*/wr+q0*q1*/q2*/wr

;构成一个三位的二进制计数器

;q2为最高位、q0为最低位

;对读信号或写信号的宽度进行计数

gal_ready.oe=vcc

/gal_ready=/ds*a15*/a14*/a13*/a12*/q1+/ds*a15*/a14*/a13*a12*q1*/a0

;为ram的访问插入3个周期

+/ds*a15*/a14*/a13*a12*/q0

+/

摘要:分析了导致dsp系统接口效率低下的几种情况,重点叙述了相应的提高效率的设计方法,并提供了电路图和源程序。

关键词:dsp 接口电路 can控制器

近几年来,数字信号处理器(dsp)得到了广泛的应用。由于dsp采用程序空间和数据空间分离的哈佛结构,对程序和数据并行操作,使之成倍地提高了处理速度;再加上流水线技术,使得dsp的指令周期多为10ns级。而与之配套的外围器件却没有像dsp那样猛地发展。首先,dsp与外围器件之间的速度差异日益显著,大部分外围器件的读写周期在50ns以上,即使是最快的静态ram,其读写周期亦为8ns左右,也只能与50mhz以下的dsp直接接口;其次,一些领域的器件在设计时并没有考虑与dsp接口,以至于不能直接接入dsp总线,如can总线控制器sa1000采用地址总线与数据总线分时复用的总线接口。这使得dsp与许多外部器件难以接口,特别是在与多个外部器件接口或者与总线不兼容的外部器件接口时,常常会出现因接口处理不当而导致接口效率低下的情况。当dsp对外部器件的操作频率很高时,接口效率的高低将对系统的运行速度产生不可忽略的影响。

1 多个外设的情况

当dsp与低速器件接口时,可以通过设置dsp片内的等待状态产生控制寄存器(wsgr),在相应的程序空间、数据空间或i/o空间产生1~7个等待周期,以使dsp的访问速度能和低速器件相匹配。当在同一空间内既有低速器件又有高速器件时,通常wsgr的延时值被设置成与速度最慢的器件相一致,以保证dsp对所有的器件都能进行正确的访问。若对高速器件的操作很频繁,则这种对整个空间的延时将极不合理地降低系统速度。例如,有些系统在程序空间同时扩展有ram和rom。而rom的速度一般远远低于ram,其访问周期一般为100~200ns,即使dsp和ram的访问速度均可达到25ns,但对整个数据空间进行延时后,dsp也只能以rom的访问速度(100~200ns)对ram进行访问。

在这种情况下,首先应考虑使用软件方法提供效率。其方法是默认的情况下将wsgr设置成与高速器件一致,当要访问低速器件时再修改wsgr的值。dsp常常对外部件进行连续操作,在这种情况下,软件方法还是比较有效的。但最大问题在于增加了软件负担和不稳定因素。

显然,效率最高的情况是,既不需要修改wsgr,dsp又能以外部器件本身的速度对它们进行访问。事实上,只要能够产生适当的信号控制dsp的ready端,就可以达到这个目的。dsp在开始一个外部总线的操作后,会在每一个clkout信号(dsp的时钟输出)的上升沿时刻对ready端进行查询,若ready为低,则保持总线的状态不变,然后在下一个clkout上升沿时刻两次查询,直至查询到ready为高时结束本次总线访问。

下面的设计实例中介绍的硬件等待电路(见图1)能够实现这个功能。它针对不同的外部器件产生相应的等待信号送到dsp的ready端,实现硬等待。其核心器件采用了广泛应用的通用逻辑阵列(gal),gal的引脚定义与图1相对应。使用gal器件使硬件设计变得简单而灵活,可以完成比较复杂的逻辑关系。

例如,频率为50mhz的dsp在数据空间外扩有ram和rom各一片,访问周期分别为70ns和150ns,地址空间分别为0x8000~0x8fff和0x9000~0x9fff。由dsp的主频可知,对ram和rom的访问各需插入3个和7个等待周期。下面给出gal源文件的关键部分(它们使用汇编程序fm的格式编写):

q0:=/q0*/rd+/q0*/wr

q1:=/q0*q1*/rd+q0*/q1*/rd+/q0*q1*/wr

+q0*/q1*/wr

q2:=/q1*q2*/rd+/q0*q1*q2*/rd+q0*q1*/q2*/rd

+/q1*q2*/wr+/q0*q1*q2*/wr+q0*q1*/q2*/wr

;构成一个三位的二进制计数器

;q2为最高位、q0为最低位

;对读信号或写信号的宽度进行计数

gal_ready.oe=vcc

/gal_ready=/ds*a15*/a14*/a13*/a12*/q1+/ds*a15*/a14*/a13*a12*q1*/a0

;为ram的访问插入3个周期

+/ds*a15*/a14*/a13*a12*/q0

+/

相关IC型号

热门点击

 

推荐技术资料

耳机放大器
    为了在听音乐时不影响家人,我萌生了做一台耳机放大器的想... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!