基于FPGA的双口RAM在双CPU通信中的应用及设计终稿 联系客服

发布时间 : 星期六 文章基于FPGA的双口RAM在双CPU通信中的应用及设计终稿更新完毕开始阅读1d82d1fb700abb68a982fb8d

宁夏理工学院毕业设计

逻辑是一组独立于双口 RAM 之外的 8 位锁存器,左右 CPU 通过设置令牌锁存器来申请这个令牌标志。在仲裁逻辑中,令牌标志通过先写入后读出的顺序,才能保证系统级的冲突不出现。但是如果反复的读取令牌标志或者写入“1”到同一令牌标志位,同样会导致出现仲裁错误,解决这个问题的关键是采用如下图4.2所示的令牌仲裁电路图。从上面的逻辑电路分析可知,两个令牌申请锁存器控制一个令牌标志,无论哪边的锁存器先写入“0”都使得这边的令牌标志为“0”,同时使得另一边的令牌标志为“1”。这种状态将持续到一“1”从这一边写入同一令牌申请锁存器。如果另一边同时写入“0”到另一边的令牌锁存器,则令牌标志将立刻翻转到只有一个“1”被写入到先前一边的锁存器中。第二次写入“0”的一测的令牌标志保持为“0”,直到这边的 CPU 现在不再需要使用这一共享资源,这时整个系统将会悬挂起来直到那个令牌申请标志位被写入“1”。在令牌仲裁中,最关键的是两边同时写入“0”到对应的令牌标志所存器中企图获得令牌标志,从而占有这一共享资源,该逻辑控制电路能够很好的解决这个问题。

I/O左端口 写入(I/O)I/O右端口DSETQQSETDD写入(I/O) 写控制CLRQQ写控制CLR输出(IO0-IO7)输出(IO0-IO7)

图4.2 令牌标志仲裁电路图

4.4.3存储空间组成及访问

在复杂的双 CPU 系统中,双口 RAM 的存储空间往往不是单一的共享数据分区,系统需要使用到不同空间的指令分区、故障分析分区等。表 4.2 说明了不同存储空间组织及访问控制。从表分析可以得到对于存储空间的访问需要注意如下几点:

(1)两个 CPU 对同一地址进行写访问或则一读一写访问,应注意访问仲裁逻辑。 (2)对指令区和故障信息区进行读访问后,应对所读地址信息清空,以免重复产生影响。

(3)尽可能的减少指令区和故障信息区的数目,这个可以减少故障产生的原因。 (4)对重要的分区,必要时可以进行数据备份,在出现异常时可以给予更新。

- 19 -

宁夏理工学院毕业设计

表4.2 双口RAM存储空间的组成及访问特性

分区定义 数据区A 分区说明 数据由CPU A获得或者产生 数据由CPU B获得或者产数据区B 生 指令区A B 指令区B A 故障信息由CPU A获得并故障信息区A 传递给CPU B 故障信息由CPU B获得并故障信息区B 传递给CPU A A可读写 方式有关 B可读写 故障的数目以CPU B可读写,CPU 及故障的编码A可读写 目有关 CPU A可读写,CPU 与需要传递的B可读写 程度以及需要指令由CPU B传递给CPU CPU B可读写,CPU 传递的指令数A可读 有一个 指令由CPU A传递给CPU CPU A可读写,CPU 与系统的复杂访问权限 数 目 CPU A可读写,CPU 与数据通信的B可读 方式和开发需CPU B可读写,CPU 要有关,至少4.5设计双 CPU 系统的要解决的关键技术

4.5.1确保双 CPU 工作的协同和可靠

在双 CPU 控制系统中,两个 CPU 应是同一系统中的两个不同的处理单元,它们可以处理不同的事务或数据,但对控制系统外部接口而言,它们可以看作是一个整体。因此,一旦其中一个 CPU出现故障,另一个 CPU 应有反应,因此在硬件和软件设计时应有相应的故障冗余处理。

4.5.2合理设计交叉事务的实时处理软硬件

数据采集接口A数据采集接口B双口RAMCPU ACPU B事物处理接口A事务处理接口B 图4.3 交叉事物的实时处理框图

如图4.3 所示,在有些控制系统中,有时需要通过事务处理接口 A(B)实时访问数据采集接口 B(A)或事务处理接口 B(A) ,这时,单纯依赖数据共享是不够的,必须考虑双 CPU间的直接指令传送[ 16 ]。

- 20 -

宁夏理工学院毕业设计

4.5.3双口RAM存储空间的组成及访问

采用双口 RAM 时,两个CPU 可以共享数据,还可能需要互相传递指令,实现交叉访问。因此,存储单元的空间分布及访问安全也是必须注意的问题。

在具体设计中,可以根据设计要求选择性能及 I/O 资源合适的 CPU 和双端口 RAM。 这里,我们选用 Winbond公司的高性能微控制芯片 W77E58,其相关技术指标为:

(1)最高 40MHz 的时钟频率 (2)2 优先级 12 中断源

(3)4×8bit的 I/O 口 (4)2 个全双工串行口

在双端口 RAM 中,IDT(Integrated Device Technology)公司的高速异步双口 RAM IDT7132 使用较为普遍,其相关技术指标为: (1)访问时间:20/25/35/55/100ns

(2)两套独立的 I/O 口,包括数据总线、地址总线、控制总线 (3)存储容量:2K×8bit (4)单5V 供电

我们现以W77E58和IDT7132组成双 CPU 智能控制系统并结合上述几点给予介绍。 4.5.4可靠性策略

在组成双 CPU 系统时,可靠性应加以关注。特别是在复位逻辑、故障处理方面。在两个CPU 控制程序开始工作时,需要对相关接口、存储空间、参数及变量初始化;一旦其中某一CPU 出现程序“跑飞”现象,其看门狗电路应立即动作,复位并重启;此时,另一 CPU 也应可靠复位,否则出现故障的 CPU 初始化处理可能会与另一 CPU 的正常处理程序产生冲突。为此,可以采用图4.4所示电路,实现双 CPU 的联动复位。

+5V+5V+5V+5VR7R823823TDTOLTDTOLVCCWDOG_A756V8STRSTRSTWDOG_BPB1C25CAPV9756STRSTRSTVCC8PB1C28GNDD18D194GND4RSTR6 图 4.4 双 CPU联动复位电路

- 21 -

宁夏理工学院毕业设计

图 4.4 中 D18、D19 为看门狗芯片 DS1232,WDOG_A 和 WDOG_B 分别连接两个 CPU 的看门狗脉冲端口,RST 连接两个CPU 的Reset端。

在通电复位后,正常工作时,两个 CPU 分别给 WDOG_A 和 WDOG_B 提供看门狗脉冲,RST持续保持低电平;一旦某一 CPU 出现故障而不能提供看门狗脉冲时,对应 DS1232 的 RST 端会输出高电平,迫使两个 CPU 都复位重启。 4.5.5交叉事务的实时处理

实时处理交叉事务一般包括对键盘中断、特殊控制指令、硬件故障的处理,往往需要很高的响应速度,此时,仅利用对共享数据的查询是不够的,我们可以利用 CPU 的中断处理模式实现快速响应。

在图4.5所示电路中,双 CPU 除了利用两套独立的 I/O 实现资源共享外,还采用 LB1~LB4、RB1~RB4 直接连接的方式实现直接指令控制。例如:当需要通过 W77E58A 的事务处理端口,如键盘等,紧急控制 W77E58B 所连接的事务处理端口,如继电器等产生动作,就可以通过W77E58A 直接控制 W77E58B 产生中断,从而达到快速响应的目的。

+5V+5VC134040C17D10VCCD12P10/7P11/7P14/INT2P15/INT3P16/INT41256781514LB1LB2LB3LB4RB1RB2+5VRB348RST9RESETLB1LB2LB3LB4RB1RB2C15RB3RB41256781514VCCP10/7P11/7P14/INT2P15/INT3P16/INT4P17/INT5P35/T1P34/T0RESET9RST31EA/VPP17/INT5P35/T1P34/T0EA/VP31RB4D11RDWDOG A12P32/INT0WR171652VCCOELR/WLOERR/WR43461716RDWRP32/INT012WDOG BP00P01P0219X1P03P04X2P05P06GND39383736353433321617181920212223D0LD1LD2LD3LD4LD5LD6LGNDD0RD1RD2RD3RD4RD5RD6RD7R25262728293031323938373635343332P00P01P02P03P04P05P06P07CPU BGNDX1X21918G418G3P07D7LIDT7132C20C21C18C19CPU A202420 图4.5 双CPU直接控制指令电路

- 22 -