本特利9200-06-01-10-00
在多任务信号处理系统中,为了提高信号的处理速度,往往使用几个DSP协同工作,为此,必须要解决好几个DSP对共享存储器的高速访问问题。具体来说,主要要解决好两个问题:
(1)通过建立竞争仲裁机制解决存储器访问共享竞争问题;
(2)解决批量数据高速访问问题。DSP对批量数据的访问一般都是通过启动DMA完成,而DMA一旦启动,数据的传输就不受DSP控制,因此,要设计专门控制电路和缓冲区来确保高速数据传输的稳定性和可靠性。
本文重点介绍了两个TMS320C5402之间共享SRAM和DDRSDRAM的设计方法。
1 SRAM的共享访问
图1是2片TMS320C5402共享SRAM的原理图。为了保证对SRAM访问的可靠性,2片DSP共用同一个系统时钟和具有相同的访问优先级。当2片DSP同时对共享存储器发出访问需求时,FPGA中的共享仲裁控制逻辑会在第1个存储器访问周期允许第1片DSP对SRAM进行访问,同时向第2片DSP发出READY等待信号,然后在下一个存储器访问周期撤销该等待信号,允许第2片DSP对SDRAM进行访问。如果进行批量数据传输,则2片DSP对应的READY信号会交替启动。FPGA中的2个双向缓冲器是互相禁止的。另外,在DSP的软件编程时要注意,在软件等待周期寄存器被写入后至少要等待2个时钟周期DSP才会启动对READY信号的检测。

2片TMS320C5402共享SRAM的原理图
2 DDRSDRAM的高速共享访问
在上述方式中,如果2片DSP同时要对共享存储器进行访问,其访问速度将会降低一倍。在实际的信号处理系统中,特别是在连续视频信号的编码、压缩与速访问,如果采用大容量双口RAM,其硬件成本开销太大。现在PC机中大量使用的双速数据同步动态存储器(Double Data Rate Synchronous,DRAM)具有存储容量大、访问速度快、价格低廉等特点,因此在大容量高速数字信号处理系统中,只要解决好对DDRSDRAM的读写访问控制问题,就能解决好大容量高速存储器的共享访问问题。
2.1 DDRSDRAM的读写访问特性
图2为现代公司的HY5DV651622双速同步动态存储器的功能框图。其存储容量为8 Mb,数据宽度为16 B,分为4个页面,采用行列地址复用方式。在时钟的上升和下降沿均可以进行数据的读写操作。对DRAM的控制包括命令控制和数据读写控制,在命令控制中主要包括模式寄存器设置、存储器自动刷新控制等,通过模式寄存器的设置可以使存储器工作于猝发读写方式,读写长度可以达到256个地址。

现代公司的HY5DV651622双速同步动态存储器的功能框图
2.2 共享DDRSDRAM的工作过程
为了保证DSP对SDRAM大数据量访问的高效性,将SDRAM设置为猝发读写模式,DSP设置为DMA方式,在FPGA中
设置容量均为128 b的SRAM缓冲区B0和B1做为数据缓存区,从SDRAM中输出的数据或输入至SDRAM的数据都要经过B0和B1,通过控制寄存器的设置将B0和B1都映射到2片DSP中地址为FF00H到FF80H的数据区间,但同一时刻1片DSP只能访问B0或B1中的1个。
在实际工作中,当一片DSP访问B0时,另一片DSP或SDRAM访问B1;相应地当一片DSP访问B1时,另一片DSP或SDRAM则访问B0。如果SDRAM和DSP同时向同一个数据缓冲区B0或B1写入或读出数据,FPGA会自动禁止,并通过控制寄存器向DSP传递数据读写状态错误信息。这种数据传递方式不仅加速了DSP对数据的访问速度,而且解决了DSP和SDRAM之间时钟频率不同步问题,不用像图1那样让2片DSP共享同一个时钟。SDRAM与双DSP的接口如图3所示。
具体来说,DSP对SDRAM的访问分以下两种情况:
(1)同时只有1片DSP对SDRAM访问 此时B0,B1均属于该DSP所有,以读数据为例,首先DSP将需要对SDRAM访问的首末地址通过控制寄存器写入FPGA,并且设置B0,B1为空的标志,然后起动数据传送命令,FPGA在收到该命令后读入128字入B0,并设置B0的标志为满,随后再读入128字入B1,并设置B1的标志为满;接着判断B0的标志是否为空,若为空则读出128字入B0,并设置B0的标志为满,否则等待直到B0的标志为空,判断B1的标志是否为空,若为空则读出128字入B1,并设置B1的标志为满,否则等待直到B1的标志为空。如此反复,直到读取数据结束或收到数据读取结束命令为止。对DSP来说,他在发出起动数据传送命令后,判断B0标志是否为满,若为满,则起动DMA读取该128字,读取结束后设置B0的标志为空,然后用同样的方法去读取B1中的数据。如此反复直到将规定的数据读取完毕为止。
(2)2片DSP同时对SDRAM访问 与单片DSP的访问方法类似,通过B0、B1及相应的标志位设定完成数据的访问。
2.3 共享DDRSDRAM的读写访问逻辑设计
DSP提供下列信号给外部存储器用以完成外部控制:CLK,CS,A0~A15,D0~D15,R/W,MSTRB,ISTRB和IS,但是DDRSDRAM使用的控制信号为:CLK,/CLK,CKE,/CS,/RAS,/CAS,/WE,数据总线DQ0~DQ15和地址总线A0~A11。由于控制信号的不同,因此在DSP和SDRAM的接口电路中需要用逻辑电路根据DSP的命令产生SDRAM的控制信号。正是由于接口电路的这种复杂性,在设计SDRAM和DSP的接口过程中才需要用FPGA来完成。
从图3可以看到,FPGA的控制主要包含3个部分:控制寄存器接口、缓冲区接口和SDRAM控制接口。
(1)控制寄存器接口 主要包括对DSP地址信号和控制信号的解码;SDRAM的读写模式选择;B0和B1的地址、数据的切换选择及标志控制;读写首末地址的设置等。
(2)缓冲区接口 主要代表2个缓冲区B0和B1的相关信号产生,主要有:读写信号;地址信号(ADDR[6-0]);数据输入输出信号(DATA-IN[15-0]和DATA-OUT[15-0])等。
(3)SDRAM控制接口 产生SDRAM的控制信号、地址信号与数据总线信号,完成SDRAM的3项功能:刷新、读、写。其中读、写主要通过猝发方式进行。由于SDRAM是动态RAM,为了防止数据丢失,必须对其进行动态刷新。在SDRAM控制接口部分设计了专门的刷新电路来完成这项功能。

SDRAM与双DSP的接口框图
3 结 论
由于FPGA内的SRAM访问速度可以达到10 ns以上,而DDRSDRAM的访问速度比普通的SDRAM快一倍,因此,在采
用DDRSDRAM实施存储器共享后,不仅大大节省了系统成本,而且通过提高FPGA对DDRSDRAM的访问速度后,系统对数据的访问速度并没有受到影响,可以达到100 Mb/s以上。
KS20L 1400 1L SA S13
DNC-125-450-PPV-A 163496
Binzel ABIROB A360 45 Id.Nr.: 980.1051
TM55PCT2
Spal Spiralgeblse 008-A45-02 / Dreiha 008.501-33.A / 12V
SH80-2A
RS485
P03 GS 13-1
FPB-5-1/4 526985
ADNH-25-10-A-P-A-3N-30K8
Moeller EASY 619-DC-RC
Festo DFM-16-50-P-A-GF 170837
EASY819-AC-RC
ZDR10DP2-53/75YM
ADVU-125-120-P-A 175759 W508
CSS-1300-113
DRP-480S-24
GD18-S/GV18-S/115
SIEMENS 6ES7 407-0KA01-0AA0
SIEMENS 4AM5742-5AT10-0FA0
Crouzet 828900 XA005711 EZA30/1
Siemens 6ES7 952-1AL00-0AA0
DESTACO 82L40-103C800 8PW-016-1
DESTACO 82L40-143B8H0 8PW-044-1
FF20GA115UE
SS402E-3Z-D3
Schleicher MCS 20-11
BOS007R 12M-PS-1N1I-S4-C
CKD LCS-16-75-T0H-D-S5D
CKD LCS-16-75-T0H-D-S6D
IVO NE216.023AX01
RL28-55/47/74
JUMO 4AP-30-020/024/091
SSN31-1GHCR-056C31
AHP Merkle BZ 500.25/16.01-201.075
HSZ10A175-3X/M00 R900536424
Allen Bradley OSAI OS 5241
Siemens 3RT1446-1BB40
Hengstler 0 565 847 AC58
Siemens 6EP1935-6ME21
Festo CPV-14-VI 20960
Festo DNC - 63 - 100 - PPV - A 163405 B708
MITSUBISHI Q31 2B-E
YO11PA3
Siemens 6ES7 407-0KA01-0AA0
GRUNDFOS MGE / MLE 90 -132
ifm SF6201
ifm SF5201
SIEMENS 6FX1132-0BA01
FANUC A860-0050-T021
Euchner EGT1-6000
4AI / 4AO +/- 10V
P03 GS 12-1
CKD LCS-16-50-T0H3-D-S6D
ATDC90S-8
Siemens 3NJ6110-3E
U1381
Siemens 6ES5 095-8MA03
DEHN Dehnguard DG M TT 275 FM 952 315
DESTACO 82L25-143B8H0
Festo DNC-80-125-PPV 163452
Siemens S5 CPU 115U 6ES5 942-7UA12
Schleicher RIO 16 I R5.364.0010.0
Schleicher RIO 16 I 364 157 57
Tyco Electronics 3-1437357-5 Flachbandkabel 171-26G100M=26P
KI5038
CKD LCS-16-50-T0H3-D-S5D
Knoll Art:Nr: 240955,
RL23-8-H-1000-IR/47/74a
KUKA Art Nr. 00 103 782
Siemens 6FC3478-3EF
XPSAK311144
SMC EX122-SA22 SS5Y3-45ST2-06U-C4 V101676
SIEMENS 6ED1 052-1FB00-0BA5
DR6DP2-52/150YM
ZDR 6 DP1-40/150YM
HO08PA3
KEYENCE LV-11SBP
KEYENCE LV-11SB
Euchner EGT1 D7022
Siemens 6ES7405-0KA01-0AA0
KEYENCE PX-10CP
Siemens 3RV1041-4MA10
Siemens SITOP SMART 10A 6EP1 334-2AA01
Siemens 5SX2 306-7
Siemens 3RK1100-1CQ20-0AA3
1SVR427035R0000
Siemens 6ES5 6ES5 330-8MA11
ifm efector SR0151
SIEMENS 6FX1120-3BA01
SIEMENS Simatic S5 6ES5312-5AA12
NJ 318.EAP.C5
SIEMENS 6FX1112-0AB0
EMD-FL-C-10
EAE ELEKTRIK KOP 0651 - D
Trafo BV:8/2-525-39-2
SIEMENS 3RK1105-1AE04-0CA0
Festo KMP4-25P-10-PUR 193019
KOBOLD S-2,5R/MS 1/2
Omron E2K-X8MF1 C
Schmalz SBS 40 M5-IG
Festo STA-32-20-P-A-SA 187324
MSM206-402
2IK6GN-SW
Festo DZF-50-80-A-P-A 164071
Di-soric OLV 40 P3K-IBS
SIEMENS 6ES7313-1AD03-0AB0
CIMR-J7AA20P1
OMRON CJ1W-OD231
OMRON CJ1W-CLK21-V1
OMRON S8PS-30024CD
13/7b/43
Siemens 1LA7070-4AB12
SMC ZM103H-B5G-E14L-Q
SMC EIT209-F003B
SS201-3Z-D3
STAR /REXROTH 1651-724-10
ipf IN340127
SMC MY1M16G-500
SMC MY1M16G-400
SMC CP95SDB32-500
mks AX340 1200
KUKA INZE34/2 - 390-00122-0
Ferrocontrol FBK- 3
Siemens 6ES7 407-0KA01-0AA0
Hirschmann MS 2108-2
PUNKER .: 285 1025 078
KEYENCE OP-51644 SJ-M030G/M070G/SJ-G
Tyan S5112G2NR
Festo DRQD-16-180-PPVJ-A-AR-FW-TXT 175801 P541
XY2CH13270
MINI-PS-100-240AC/24DC/2
SKF 61818 - 2RS1
U1389
Phoenix 2754367 + 2754985 + 2754943
Siemens C73451-A3000-C10 7NG1002-1AA11
VBF RUSSIA 6306ZZP6Q6
Siemens 3TF5022-0AN2 3UA60-00-3H
EAE 0502.BTEC1-1
mayr 3/802.
FMC 420 917079-0500
Yaskawa JZSP-CSP21-15
TPC AMRGH16-450
Horn 312.0415.00 TF46
ESD5500E
Siemens 134-4GB01-0AB0
SGS-M36X2
VBA-2E-G4-U
160616-M5 TP200 - SECO 544-M5 TP200
Hydac 0240 D 020 BH4HC
LFKE5201
LSAFT-A-30-DD 1083 630 20 MNR: R108363020
Festo DNC-80-250-PPV-A-KP 163430
AHP Merkle BSE250.25/16.12.3.201.100 ART090662
Parker C025CA12001299N10
PARKER ERMETO AV06/42
Festo CLR-40-20-R-P-A
Parker C032CA13009914N10
REXROTH MNR 0821301515
W. Blase 50-260280
6FX1126-4AA00
Allen Bradley A-B 8600
Siemens 6FX1131-3BA02
Siemens 6ES5 944-7UA22
ZIP-75-124
SMC MGPM80TF-25
Siemens 5703549001.00
Siemens 5705159001.00
SIEMENS 6ES7 407-0DA01-0AA0
Siemens 6ES7810-2DA00-0YX0
Siemens 6ES7810-2DA00
HYDAC EDS 410-250-1-016 907778
Siemens 6ES5 450-8MB11
Siemens 3RV1041-4MA10
Siemens 6ES7 321-1BL00-0AA0 E-5
GOEMA 107 331-4MA20
6ES5444-5AA11
FANUC A03B-0801-C113
SIEMENS 6ES5181-3AA11
Trafo Typ: KD 690-045.20
Schleicher RIO 8I/0 + 16 0
Bussmann LPS-RK-300SP
Siemens 3TC4417-0BM0
KEYENCE FU-35TG
SS101-3Z-D3
CKD LCS-25-10-S5D
Schmalz SCP10...15NOASRE/RD 10.02.02.01288
SIEMENS 6AV6671-5AE00-0AX0
BALLUFF BCS 012-PSB-1-L-S4
OMRON CJ1W-OD261
OMRON CJ1W-SRM21
OMRON CJ1W-ID231
SIEMENS GE.647013.0410.11A
SIEMENS 6RB2000-0AA00 / 447 700 9000 00
TWDLMDA20DTK
SMC ZM101H-B5G-Q
SMC ZM103H-B5G-E14L-Q + ZSE1-00-14L
Festo CPV-18-VI 18220
Bosch 822 022 027