摘要:IDT7026是美国IDT公司开发研制的高速16k×16bit的双口静态RAM。它可允许两个端口同时进行高速读写数据,内含主/从控制脚,并具有标识器功能。文中介绍了IDT7026的内部组成、功能及原理,并给出具体的应用电路框图。
关键词:双口RAM 高速并行接口 信号处理
1 概述
在高速数据采集和处理系统中,随着采样数据量的增大及信息处理任务的增加,对数据传送的要求也越来越高。在系统或模块间如果没有能够高速传送数据的接口,则在数据传送时极易造成瓶颈堵塞现象,从而影响整个系统对数据的处理能力。所以,高速并行数据接口的研制在信息处理系统中占有非常重要的地位。利用高性能双口RAM能够方便地构成各种工作方式的高速数据传送接口,不管是在并行处理网络中的数据共享,还是在流水方式中的高速数据传送中,高性能双口RAM都发挥着重要作用,从而保证数据通路的畅通。

IDT7026是美国IDT公司开发研制的高速16k×16bits的双口静态RAM。它是真正的双口RAM,允许两个(左、右)端口同时读写数据,每个端口具有自己独立的控制信号线、地址线和数据线。可高速存取数据,最快存取时间为15ns,可与大多数高速处理器配合使用,而无需插入等待状态。它具有Master/slave控制脚,可方便地扩展存储容量和数据位宽。IDT7026除具有双端口存取功能外,还具有标识器功能,在数据传送时可构成多种接口形式。
2 IDT及管脚功能组成及管脚功能
IDT7026的内部功能框图如图1所示。

IDT7026的管脚分布如图2所示。各管脚的功能见表1所列。
3 工作原理
3.1 双端口数据存取工作原理
IDT7026的核心部分是用于数据存储的存储器阵列,
可为左右两个端口所共用。这样,位于两个端口的左右处理单元就可共享一个存储器。当两个端口对双口RAM存取时,存在以下4种情况:
(1)两个端口不同时对同一地址单元存取数据;
(2)两个端口同时对同一地址单元读出数据;
(3)两个端口同时对一地址单元写入数据;
(4)两个端口同时同一地址单元,一个写入数据,另一个读出数据。
在第一、第二种情况时,两个端口的存取不会出现错误,第三种情况会出现写入错误,第四种情况会出现读出错误。为避免第三、四种错误情况的出现,IDT7026芯片设计有硬件“BUSY”功能输出,其工作原理如下:当左右端口不对同一地址单元存取时,BUSY R=H,BUSY L=H,可正常存储。当左右端口对同一地址单元存储时,有一个端口的BUSY=L,禁止数据的存取。此时,两个端口中,哪个存取诸求信号出现在前,则其对应的BUSY=H,允许存取;哪个存取请求信号出现在后,则其对应的BUSY求信号出现在后,则其对应的BUSY=L,禁止其写入数据。需要注意的是,两端口间的存取请求信号出现时间要相差在5ns以上,否则仲裁逻辑无法判定哪一个端口的存取请求信号在前;在无法判定哪个端口先出现存取请求信号时,控制线BUSY L和BUSY R只有一个为低电平,不会同时为低电平。这样,就能保证一个对应于BUSY=H的端口能进行正常存取,对庆于BUSY=L的端口不存取,从而避免双端口存取出现错误。
利用IDT7026的“BUSY”忙信号标志端可以实现多片IDT7026的级联,以扩展存储器位数和容量。具体级联电路如图3所示。当M/S端为高电平时,该片IDT7026为主存储器,其BUSY端为输出。当该片IDT7026为主存储器,其BUSY端为输出。当M/S端为低电平时,该片IDT7026为从存储器,其BUSY端为输入。
3.2 标识器的工作原理
利用双口RAM的“BUSY”信号线,虽然可以保证左右两个端口能可靠地完成数据的传送,但当两个端口对同一地址单元同时存取数据时,其中一个端噪口处于等待状态。对于高速接口电路来说,插入等待状态会降低其数据通过率,这在某些情况下是不能接受的。IDT7026提供有标识器电路,可把一个端口使用双口RAM的状态传送到另一个端口。通过标识器电路传送数据,可实现数据的高速无等待状态的传送。IDT7026标识器电路实际上是8个锁存器,且与双口RAM相独立,用作两个端口间的标志传送,以表明共享的双口RAM是否在使用。在标识器工作模式,控制脚SEM用作8个标志锁存器的“片选”信号,地址线A2~A0用于8个标志锁存器的寻址,数据线D0用作标志锁存器状态的写入和读出,其工作状态见表2。
表1 IDT7026的管脚功能表
| 左端口 | 右端口 | 功 能 |
| CEL | CER | 片选信号端 |
| R/WL | R/WR | 读写信号端 |
| OEL | OER | 输出控制端 |
| A0L-A13L | A0R-A13R | 地址线 |
| I/O0L-I/O15L | I/O0R-I/O15R | 数据输入输出端 |
| SEML | SEMR | 标志控制端 |
| UBL | UBR | 高8位存储单元选择端 |
| LBL | LBR | 低8位存储单元选择端 |
| BUSYL | BUSYR | 忙信号标志端 |
| M/S | 主或从存储器选择端 | |
| Vcc | 电源 | |
| GND | 地 | |
表2 标志锁存器的工作状态
| 操 作 | 左端读出 | 左端口D0~D15 | 右端读出 | 右端口D0~D15 | 状 态 |
| 无操作 | 1 | 1 | 1 | 1 | 标志器空 |
| 左端写0 | 0 | 0 | 1 | 1 | 左端获得使用权 |
| 右端写0 | 0 | 1 | 1 | 1 | 无变化 |
| 左端写1 | 1 | 1 | 0 | 0 | 右端获得使用权 |
| 左端写1 | 1 | 1 | 0 | 0 | 无变化 |
| 右端写0 | 0 | 0 | 1 | 1 | 左端获得使用权 |
| 左端写1 | 1 | 1 | 1 | 1 | 标志器空 |
| 右端写1 | 1 | 1 | 0 | 0 | 右端获得使用权 |
| 右端写1 | 1 | 0 | 1 | 1 | 标志器空 |
| 左端写0 | 0 | 1 | 1 | 1 | 左端获得使用权 |
| 左端写1 | 1 | 1 | 1 | 1 | 标志器空 |
当左端口要使用双口RAM时,它先写0到标示锁存器,然后读标志锁存器的状态,若读到的值为1,表明右端口正在使用双口RAM的相同单元。此时,左端口要么循环检查标志锁存器的状态,直到右端口结束使用,再对双口RAM存取;要么撤消请求,即写1到标志锁存器,转去执行其它操作。同理,若右端口使用双口RAM时,也按上述步骤进行。IDT7026为了避免出现左右端口同时向标志锁存器写入0而出现的错误,标志锁存器采用了如图3所示的电路结构。
若两端口同时写入0,仲裁逻辑电路只使得其中一个为0,另一个为1。标志器输出状态只能有一个为0,即共享存储器在某一时刻只能为其中一边的端口所使用。需要注意的是:使用标志锁存器传送数据时,当某个端口完成对双口RAM的存取,
或存取制造后,一定要再给标志锁存器写1,否则双口RAM将一直被占用,另一端口无法对双口RAM进行存取。另外,对标志锁存器应“先写后读”,不要“先读后写”,以避免出现争夺系统总线的现象。因为标志锁存器有8个,它最多可以把双口RAM划分成8块,每块存储器的容量由用户任意设定。例如,可将容量均分为4块,每块有2k×16bits位的容量,当左端口送数时,它先写0到标志器0,若读取的状态值为1,则说明第1个2k双口RAM正被右端口使用;其可再写0到标志器1,若读取的状态值为0,则第2个双口RAM处于未被使用的空闲状态,左端口可把其数据写入。若读取的状态值仍为1,则可继续查询第3、第4个2k双口RAM,直至把数据写入,图4为IDT7026的标志锁存器示意图。
4 应用
在研制通用雷达半实物仿真系统中,笔者用TMS320C31作为主处理器,用高速双口RAMIDT7026作为数据传送和数据共享的接口芯片,从而很好地完成了雷达信号的数据采集和处理任务。电路连接如图5所示。
通常,雷达信号处理系统一次要处理几个或十几个重复周期的信号数据。在完成对数据的处理和检测任务后,相应的数据要送入PC机进行适当的处理,并在PC机平面位置显示器和距离显示器的窗口上进行显示。信号处理系统输出的数据可先写入双口RAM。待数据全部写入IDT7026后,系统再向PC机发出中断请求,PC机响应中断后,在中断服务子程序里把数据读入内存,此时的双口RAM相当于PC机的个16位高速并行接口。
