DSP接口效率的分析与提高
和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
+/DS*A15*/A14*/A13*/Q1
+/DS*A15*/A14*/A13*A12*/Q2
;为ROM的访问插入7个周期
图2是一个与写时序对应的时序图,其中在下三角符号标出的时刻,DSP对READY端进行查询。
这种方法能够充分使用硬件的速度,并且对软件是透明的,不会增加编程人员的负担。
图3DSP与SJA1000的接口原理图
2总线不兼容的情况
有一类芯片的总线接口是分时复用的,如CAN总线控制器SJA1000。SJA1000有8位的数据和地址复用的总线,可以和多种MCU直接相连。一次总线操作开始时,总线先传递此次操作访问的地址,在ALE信号将地址锁存后,再进行数据读写。而DSP的数据总线和地址总线被并行地引出,这种并行结构比分时复用的串行结构先进,有着高一倍的带宽。但DSP被设计时并没有考虑过会在芯片外将并行的总线再串行化,也就是没有设计相应的辅助信号来完成这种转换。这使得完全使用硬件方法进行串行转换比较困难。
此类问题通常使用软件和硬件配合解决,并不真正地靠硬件进行园,而是把一次总线操作分解成两步。先把此次操作的目标地址作为数据送到总线上,同时通过硬件产生一个锁存信号将其锁存。然后再进行读写操作,读写操作的目标地址就是上一步被锁存的地址。
使用这种办法,硬件和软件都不需要进行复杂的变换。唯一的缺点是指令的效率变低了。由于SJA1000的读写周期一般是DSP的指令周期的几倍,一次访问被分解成两次后多消耗的时间不能忽略。还有一个更重要的影响是,这种转换方法在寻址时无法使用DSP的并行寻址功能,必须使用另外的变量独立运行。在多数的CAN总线应用中,这种处理方法不会对系统的整体性能产生太大的影响。但在有的系统中,这种低效是不可容忍的,如由DSP和SJA1000组成的CAN总线网关,它含有多个SJA1000芯片,并且在SJA1000之间需要经常进行数据块的搬移。对于次数频繁并且寻址有规律的操作,利用DSP的并行寻址功能将极大地提高程序的效率。以下程序段可在两个同网段的SJA1000之间 《DSP接口效率的分析与提高(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/140159.html
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
+/DS*A15*/A14*/A13*/Q1
+/DS*A15*/A14*/A13*A12*/Q2
;为ROM的访问插入7个周期
图2是一个与写时序对应的时序图,其中在下三角符号标出的时刻,DSP对READY端进行查询。
这种方法能够充分使用硬件的速度,并且对软件是透明的,不会增加编程人员的负担。
图3DSP与SJA1000的接口原理图
2总线不兼容的情况
有一类芯片的总线接口是分时复用的,如CAN总线控制器SJA1000。SJA1000有8位的数据和地址复用的总线,可以和多种MCU直接相连。一次总线操作开始时,总线先传递此次操作访问的地址,在ALE信号将地址锁存后,再进行数据读写。而DSP的数据总线和地址总线被并行地引出,这种并行结构比分时复用的串行结构先进,有着高一倍的带宽。但DSP被设计时并没有考虑过会在芯片外将并行的总线再串行化,也就是没有设计相应的辅助信号来完成这种转换。这使得完全使用硬件方法进行串行转换比较困难。
此类问题通常使用软件和硬件配合解决,并不真正地靠硬件进行园,而是把一次总线操作分解成两步。先把此次操作的目标地址作为数据送到总线上,同时通过硬件产生一个锁存信号将其锁存。然后再进行读写操作,读写操作的目标地址就是上一步被锁存的地址。
使用这种办法,硬件和软件都不需要进行复杂的变换。唯一的缺点是指令的效率变低了。由于SJA1000的读写周期一般是DSP的指令周期的几倍,一次访问被分解成两次后多消耗的时间不能忽略。还有一个更重要的影响是,这种转换方法在寻址时无法使用DSP的并行寻址功能,必须使用另外的变量独立运行。在多数的CAN总线应用中,这种处理方法不会对系统的整体性能产生太大的影响。但在有的系统中,这种低效是不可容忍的,如由DSP和SJA1000组成的CAN总线网关,它含有多个SJA1000芯片,并且在SJA1000之间需要经常进行数据块的搬移。对于次数频繁并且寻址有规律的操作,利用DSP的并行寻址功能将极大地提高程序的效率。以下程序段可在两个同网段的SJA1000之间 《DSP接口效率的分析与提高(第2页)》