一种双口ram互斥访问的实现方法

文档序号:6575430阅读:554来源:国知局
专利名称:一种双口ram互斥访问的实现方法
技术领域
本发明为一种一种双口 RAM互斥访问的实现方法,属于处理器信号交换领域。
背景技术
在现代工业控制系统中,由于对系统的功能和性能要求越来越高, 一般都采 用高性能的处理器来实现控制功能,并将这些智能设备联网组成分布式系统。双 口 RAM作为共享存储器,在满足实时性要求高、数据量大的控制系统中得到越 来越广泛地应用。
一般双口 RAM都^是供了两个完全独立的端口,每个端口都有自己的控制线、 地址线和数据线。但当两个CPU同时对同 一地址单元写入数据,或者两个CPU 同时对同一地址单元操作、 一个写入数据,另一个读出数据时,双口RAM会产生 共享冲突问题。目前有几种防止共享冲突的方式,下面将以CYPRESS公司研制 的低功耗CMOS型静态双口 RAM (CY7C056V)为例来介绍如

图1所示。 1. 插入等待状态的防冲突方式。
该方式也称为^5更件判优方式。当左右端口同时对同一地址的RAM存储单元进行 存取时,CY7C056V芯片内部的仲裁单元将会给出BUSY信号。具体来说,BUSYL、 BUSYR信号的正常状态为高电平。当左侧端口对一存储单元进行存取时,若右 侧端口也对该存储单元进行操作,则芯片内部的仲裁单元会使信号BUSYR为低, 直到左侧端口操作完成后再将BUSYR恢复为高电平。设计中可以利用BUSY信 号作为CPU的等待状态输入,并利用该信号使CPU在操作过程中插入等待状态,避免两端同时对双口 RAM进行操作。
2. 中断防冲突方式。
该方式也称为中断判优方式。CY C056V具有两套中断逻辑。通过两个INT引脚 分别接收到两个CPU的中断引脚上,以实现CPU的握手。
双口R AM中最高地址的两个存储单元可以作为邮箱^吏用。在双口 RAM的数据 传送中,两端的CPU都把双口 RAM作为自己存储器的一部分。当两个CPU需 要数据传送时,假设左端CPUL向右端CPUR传送。首先CPUL将需要传送的数 据存放到双口 RAM某^殳约定的地址单元中,然后向双口 RAM的右端口的邮箱进 行写操作,用以向CPUR发出一个中断。这样CPUR就进入其相应的中断服务子 程序。将约定地址单元的数据读出,然后对双口 RAM右端口的邮箱进行写操作, 用以清除该中断。这样通过邮箱向对方传递自己使用存储单元的状态来达到防止 冲突之目的。
3. 信号量防冲突方式
该方式也称为令牌判优方式。在此方式中有信号锁存逻辑,CY7C056V内部4是供 了八个相互独立的锁存逻辑单元,最多可将RAM空间分成八个区段。这些锁存 逻辑单元独立于双口 RAM存储区,并不能控制RAM区、封锁两端CPU的读/写 操作,而是被作为命令,只提供指示逻辑,由两端CPU按约定的规则,轮流地占 用它们划定的RAM区。各区的大小及地址由软件自由设定,且左右端操作完全 一样,只要不超过令牌的限制次数即可。当左右端同时申请同一令牌时,令牌逻 辑裁定谁先占用,从而保证只有一个端口获取令牌。而在占用令牌期间,CPU可 以按最高速无等待存取数据。这对实现高速、多CPU数据采集与处理系统无疑是 非常有利的。但是,为了避免令牌方式争用出错,应尽可能使两端CPU分时占用同一 RAM区。
参考文件《双口 RAM在组合导航系统中的应用》 《双口 RAM CY7C026在高速数据采集系统中的应用》 《双口 RAM在自动化系统中的应用》
它们分别存在以下缺点
> 中断防冲突方式当发生中断时,会打断当前的执行流程,造成运行过程不确定。
> 插入等待状态的防冲突方式对于高速接口来说会影响数据的传送速率,而且该 方式下CPU在访问数据时需要检查BUSY信号并做出判断,并可能出现等待情 况。很难满足时间确定性的要求。
信号量防冲突方式在两个CPU共享内存空间时,如果双口 RAM主要用于两个 CPU之间交换数据,则交换的实时性很难用软件来保证。

发明内容
本发明的发明目的在于解决两端CPU在操作双口 RAM中,避免产生冲突。、 即不允许两个CPU同时对同一地址单元写入数据;或者两个CPU同时对同一地 址单元一个写入数据,另一个读出数据。
本发明的技术方案为 一种》又口 RAM互斥访问的实现方法,所述一种双口 RAM互斥访问的实现方 法包括如下操作步骤
1) 采用地址分区方式,将共享数据区划分成多个数据区,并制定相应软件协议;
2) 软件分区处理时,按照交换数据的类型将RAM的共享存储区从起始单元开始分成多个大的数据区,数据区大小由实际的传输数据确定,每个大数据区又细分 为 一个数据接收緩冲区和一个数据发送緩冲区,且每个緩冲区都定义有相应的数 据存取基地址和读、写指针;
3)在本系统中,所有对外部系统的通信工作均由从机来完成,主机只对双口 RAM 中相应的数据緩冲区写入要发送的数据或读取需要的数据;
将双口 RAM划分成主机主写交换区和从机主写交换区两个区域,主机主写 区只允许主机向双口 RAM写入数据,从机只允许读取数据,不允许有写操作; 从机主写区只允许从机写入数净居,主机只允许读耳又数寺居。
在所述交换区中设置1对緩冲,这两个緩冲区的大小、结构相同,在其中1 个緩冲区被占用的情况下,可以访问另 一緩冲区;
所述变量組态为系统变量的定义以及计算,算法組态为启动PADE开始算法 编制,其内容包括调试、仿真、形式验证、自定义常量选取、调用功能块节点、 自定义辅助信息,完成算法组态后进行信息编译,并负荷进行检查,确认无误后 进行下装和监视以及定期实验和参数整定工作。
每对緩冲区采用循环计数来辨別数据的新旧;本方法采用了循环计数值的方 案,该计数值由主写设备维护,在更新緩冲区数据时同时更新计数值(Tick)。
在主机主写区里的緩冲区都填入了主机维护的Tick,主机在向双口 RAM写 数据时,先读取两个緩冲区里的Tick值来判断哪个緩冲区是旧区还是新区,然 后向旧緩冲区写入数据在系统的数据传输过程中,用示波器监测双口 RAM左口 端口 BUSY引脚的电平。
在每个緩冲区首尾两端各设置了计数值,这两个计数值是相同的;主写设备在 更新緩冲区时,要同时更新两个计数值;当通信对方读取緩冲区数据后,要检查则可以认为计数值正确。
所述的一种双口 RAM互斥访问的实现方法在此基础在緩冲区设置了主写占
用标志;该占用标志只允许主写设备设置,其它设备只读。
从机在读数据时,先检查哪个緩冲区被占用;优先读取未被占用的緩冲区。 在系统的数据传输过程中,用示波器监测双口 RAM左口端口 BUSY引脚的电
平,
在緩冲区最末端添加数据校验和;为了提高系统通信的可靠性,在緩冲区末 端添加了数据校验和;双方通过该方式可以检查緩冲区的数据是否是确。本发明 的优点在于
1 、即将共享数据区按一 定的标准划分成若干个数据并制定相应的软件协议, 使得主、从机以适当的时序读写数据,从而避免对同一单元的竟争,提高实时性。
2、 主、从机根据緩冲区数据存取基地址及读、写指针,对相应单元进行读、 写操作,整个緩冲区等效于 一 个环形数据。
3、 发现l号緩冲区已经被占用(即主机正在向该緩冲区写入数据),它将转 去读取2号緩冲区数据。这样可以保证每次读取的数据是完整的。这样可以避免 读取的数据可能是不同时间段写入的可能性。
4、 有效避免了双RAM接口数据流冲突。 说明书附图
1 、图1为背景技术CY7C056V逻辑块2、 图2为写双口 RAM数据程序流程3、 图3为读双口 RAM数^居程序流程4、 图4为3又口 RAM分区管理图;5、 图5为数据交换区双緩冲区结构6、 图6循环计数分布7、 图7写緩冲区主要流程8、 图8读緩冲区主要流程;
9、 图9为判断緩冲区新旧的流程图。
具体实施例方式
安全级控制保护系统完成数据通讯、信号输入、数据处理、保护和控制运算、 符合逻辑和触发信号输出等功能。它一般由运算、通讯和输入输出单元构成。在 信号输入和输出过程中,通常采用高性能嵌入式处理器构成的主从式系统完成相 应功能。主从式系统设计的关键是主机与从机之间的数据通信。随着双口 RAM 功能的不断成熟和完善,现在很多采用双口 RAM来实现这些数据交互。
由于安全级系统对程序确定性的严格要求,本系统不采用中断机制。在插入 等待状态的防冲突方式中,利用双口 RAM的BUSY信号线,虽然可以保证左右 两个端口能可行地完成数据的传送。但当两个端口对同 一地址单元同时存取数据 时,其中一个端口要处于等待状态。对于实时性和确定性要求很高的系统来说, 插入等待状态会降低数据交换率,这在一定程度上会影响系统的实时性和确定 性。为了尽可能地避免出现等待状态,结合系统周期执行的特点,在对双口 RAM 编程时,采用了地址分区方式。即将共享数据区按一定的标准划分成若干个数据 并制定相应的软件协议,使得主、从机以适当的时序读写数据,从而避免对同一 单元的竟争,提高实时性。
在安全级控制系统中,主、从机之间需要交换的数据主要是运算单元和通讯 单元进行双向通信的数据。软件分区处理时,按照交换数据的类型将双口 RAM的共享存储区从起始单元开始分成若干个大的数据区。数据区大小由实际的传输 数据确定。每个大数据区又细分为一个数据接收緩沖区和一个数据发送緩冲区, 且每个緩冲区都定义有相应的数据存取基地址和读、写指针。主、从机根据緩冲 区数据存取基地址及读、写指针,对相应单元进行读、写操作,整个緩冲区等效 于 一个环形数据。若緩冲区大小设置合理,当新数据覆盖旧数据时,旧数据已经处 理,既不会遗漏数据又节省了存储单元。
在本系统中,所有对外部系统的通信工作均由从机来完成。考虑到整个系统 的数据处理流程及时序要求,在软件设计中,数据接收和发送则是在软件的主流 程内部维持一个无限循环,将接收发送程序驻留在此循环中,通过查询发送緩冲 区的读、写指针,实时发送数据。从机通过两类通信协议实现与采集模块和网络 设备的数据通信。主机只需对双口 RAM中相应的数据緩冲区写入要发送的数据 或读取需要的数据即可。鉴于主、从机对这两种类型数据的存取操作程序类似, 在此只给出从机写入和读取双口 RAM数据的程序流程图,分别如图2和图3所 示。其中,Base为系统数据接收緩冲区数据存取基地址。
从图2和图3的流程图可以看出,采用地址分区方式后,主从机对双口 RAM 的软件控制变得较为简单。同时,为了验证地址分区方式避免双口 RAM地址争 用现象的有效性,在系统的数据传输过程中,用示波器监测双口 RAM左口端口 BUSY引脚的电平。发现无等4争状态信号出现,,这表明对双口 RAM的软件分区 处理模式的确是一种比较理想的处理方法。(1)简化分区管理本方案在软件分 区管理的基础上,将双口 RAM划分成主机主写交换区和从机主写交换区两个区 域。主机主写区只允许主机向双口 RAM写入数据,从机只允许读取数据,不允 许有写操作;同理,从机主写区只允许从机写入数据,主机只允许读取数据。这样可以避免双口 RAM的访问冲突。
(2) 采用两緩冲结构为了实现每次操作的数据完整的,在上述交换区中 设置两緩冲,每个緩冲区的大小、结构完全一样。在1个緩冲区被占用的情况下, 可以访问另一緩冲区。例如当从机读取主机主写交换区数据时,发现l号緩冲区 已经被占用(即主机正在向该緩冲区写入数据),它将转去读取2号緩冲区数据。 这样可以保证每次读取的数据是完整的。这样可以避免读取的数据可能是不同时 间段写入的可能性。如图5所示
(3) 緩冲区采用循环计数来辨别数据的新旧引入双緩冲后,会出现更新 双緩冲区数据的问题。因此需要通过某种机抽来判断哪个緩冲区里的数据是新 的、哪个緩冲区里的数据是旧的。本方法采用了循环计数值的方案。该计数值由 主写设备维护,在更新緩沖区数据时同时更新计数值(Tick)。
下面以主机主写区读写操作为例来描述在主机主写区里的緩冲区都填入了 主机维护的Tick。主机在向双口 RAM写数据时,先读取两个緩冲区里的Tkk值 来判断哪个緩冲区是旧的。然后向旧緩冲区写入数据(包括更新的Tick值)。这 样该緩冲区在下次访问时就应该判断的新緩冲区了 。当从机从双口 RAM读取数 据时,先通过Tick值判断哪个緩冲区是新的,然后读取新緩冲区的数据。关于 如何判断哪个緩冲区为新,哪个緩冲区为旧,如图9所示。
(4) 在緩冲区首尾各设置计数值采用循环计数值判断新旧后,要求这个 计数有比较高的可靠性。因此在緩冲区首尾两端各设置了计数值,这两个计数值 是相同的。主写设备在更新緩冲区时,要同时更新两个计数值。当通信对方读取 緩冲区数据后,要检查这两个计数值是否 一致,如果一致则可以认为计数值正确。 如图6所示。(5) 在緩冲区中设置主写占用标志由于緩冲区采用了计数值判断新旧新 据区,在很大程序上可以避免主从双方同时对同一緩冲区操作的可能性。但是会 出现主写区在更新緩冲区时还未结束时,主读设备会根据已更新的首Tick也去 访问该緩冲区,造成潜在的访问冲突。因此本方法在此基础又在双緩冲区设置了 主写占用标志。该占用标志只允许主写设备设置,其它设备只读。以主机主写区 为例主机在写数据时,先判断哪个緩冲区是旧的,然后填写该区的占用标志, 之后向緩冲区写入数据,最后清除占用标志。如图7所示
图7 写緩冲区主要流程 从机在读数据时,先检查哪个緩冲区被占用。如果占用,则读取未被占用的 緩冲区;如果都未被占用,则可以按照(3)描述的方法读取数据。如图8所示 为了简化说明,图7和图8中只描述了主要处理流程,没有介绍错误处理。
(6) 在緩冲区最末端添加数据校验和为了提高系统通信的可靠性,在緩 冲区末端添加了数据校验和。双方通过该方式可以检查緩冲区的数据是否是确。 有关结构请参见图6。
(1) 通信双方各自拥有一个主写交换区的软件分区管理的方式。这种纯软 件的方式,不需要硬件引出Busy线和中断信号,减少了硬件设计的 介入。不采用读取Busy线,避免了访问时的等待处理,保证了时间 确定性。不采用中断机制,保证了操作流程的确定性。
(2) 采用了双緩冲结构。避免了访问双口 RAM的延迟等待,更重要的是 保证了访问数据彼此之间的完整性。不会出现同 一緩冲区存在不同时 间段写入的数据。
(3) 采用了首尾两端各设置计数值。采用緩冲区计数值,可以有效检查出双緩冲区之间的新旧关系。首尾两端各设备相同的计数值,更进一步 保证了操作緩冲区之间流程的正确性和计数值的可靠性。因为很难通 过单个计数值来判断该值在操作过程的正确性。另外,如果两端计数
不 一致,也可以反映访问緩冲区时整个流程存在问题。
(4) 緩冲区设置了主写占用标志。由于采用两个緩冲区,有可能出现主写 设备更新緩冲区时,只更新了首计数,还没来得及完成整个緩沖区更 新的情况下,读设备正好根据新更新的部分计数值而认为该緩冲区是 新的,从而访问这个緩冲区。这样会带来的潜在访问冲突。即一方写 一方读。而设置了主写占用标志,可以避免读设备访问正在被主写设 备操作的緩冲区。从而进一步解决访问冲突的问题。
(5) 数据区更新。通信双方每周期更新緩冲区中的数据,包括Tick和校验 码。其中Tick由本地維护。可以通过读耳又Tick判断通信对方是否正 常,实现通信监视功能。如图9所示。
权利要求
1、一种双口RAM互斥访问的实现方法,所述一种双口RAM互斥访问的实现方法包括如下操作步骤1)采用地址分区方式,将共享数据区划分成多个数据区,并制定相应软件协议;2)软件分区处理时,按照交换数据的类型将RAM的共享存储区从起始单元开始分成多个大的数据区,数据区大小由实际的传输数据确定,每个大数据区又细分为一个数据接收缓冲区和一个数据发送缓冲区,且每个缓冲区都定义有相应的数据存取基地址和读、写指针;3)在本系统中,所有对外部系统的通信工作均由从机来完成,主机只对双口RAM中相应的数据缓冲区写入要发送的数据或读取需要的数据;
2、 根据权利要求l所述的一种双口 RAM互斥访问的实现方法,其特征在于将 双口 RAM划分成主机主写交换区和从机主写交换区两个区域,主机主写区只允 许主机向双口 RAM写入数据,从机只允许读取数据,不允许有写操作;从机主 写区只允许从机写入数据,主机只允许读取数据。
3、 根据权利要求2所述的一种双口 RAM互斥访问的实现方法,其特征在于 在所述交换区中设置l对緩冲,这两个緩冲区的大小、结构相同,在其中1个緩 冲区被占用的情况下,可以访问另 一緩冲区;
4、 根据权利要求3所述的一种用于反应堆保护系统的組态,其特征在于所述 变量组态为系统变量的定义以及计算,算法組态为启动PADE开始算法编制, 其内容包括调试、仿真、形式验证、自定义常量选取、调用功能块节点、自定义 辅助信息,完成算法組态后进行信息编译,并负荷进行检查,确认无误后进行下 装和监视以及定期实验和参数整定工作。
5、 根据权利要求4所述的一种双口 RAM互斥访问的实现方法,其特征在于每 对緩冲区采用循环计数来辨别数据的新旧;本方法采用了循环计数值的方案,该 计数值由主写设备维护,在更新緩冲区数据时同时更新计数值(Tick)。
6、 根据权利要求5所述的一种双口 RAM互斥访问的实现方法,其特征在于在 主机主写区里的緩冲区都填入了主机維护的Tick,主机在向双口 RAM写数据时, 先读取两个緩冲区里的Tick值来判断哪个緩冲区是旧区还是新区,然后向旧緩 冲区写入数据在系统的数据传输过程中,用示波器监测双口 RAM左口端口 BUSY 引脚的电平。在每个緩冲区首尾两端各设置了计数值,这两个计数值是相同的;主写设备在 更新緩冲区时,要同时更新两个计数值;当通信对方读取緩冲区数据后,要检查 这两个计数值是否一致,如果一致则可以认为计数值正确。
7、 根据权利要求6所述的一种双口 RAM互斥访问的实现方法,其特征在于所 述的一种双口 RAM互斥访问的实现方法在此基础在緩冲区设置了主写占用标 志;该占用标志只允许主写设备设置,其它设备只读。
8、 4艮据权利要求7所述的一种双口 RAM互斥访问的实现方法,其特征在于从 机在读数据时,先检查哪个緩冲区被占用;优先读取未被占用的緩冲区。
9、 根据权利要求8所述的一种双口 RAM互斥访问的实现方法,其特征在于在 系统的数据传输过程中,用示波器监测双口 RAM左口端口 BUSY引脚的电平, 在緩冲区最末端添加数据校验和;为了提高系统通信的可靠性,在緩冲区末端添 加了数据校验和;双方通过该方式可以检查緩冲区的数据是否是确。
全文摘要
本发明涉及一种双口RAM互斥访问的实现方法,所述一种双口RAM互斥访问的实现方法包括如下操作步骤1)采用地址分区方式,将共享数据区划分成多个数据区,并制定相应软件协议;2)软件分区处理时,按照交换数据的类型将RAM的共享存储区从起始单元开始分成若干个大的数据区。数据区大小由实际的传输数据确定。每个大数据区又细分为一个数据接收缓冲区和一个数据发送缓冲区,且每个缓冲区都定义有相应的数据存取基地址和读、写指针。3)在本系统中,所有对外部系统的通信工作均由从机来完成,主机只需对双口RAM中相应的数据缓冲区写入要发送的数据或读取需要的数据即可。
文档编号G06F13/16GK101655824SQ20091009159
公开日2010年2月24日 申请日期2009年8月25日 优先权日2009年8月25日
发明者杜乔瑞 申请人:北京广利核系统工程有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1