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

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

宁夏理工学院毕业设计

自动帧错误检测指的是在数据传输的过程中,如果由于噪音等随机干扰造成接收方接收不到正确的停止位,W77E58能够自动检测出并设置标志FE(FE_1),此标 志被定位在SCON.7(SCON1.7),用户可以访问,并且必须软件清除。

(2) 多机通讯自动地址识别

在标准的8051系列单片机中,当进行多机通讯时,发送9位数据,最后一位只当作地址/数据识别位,但是并不能区分准确地址,准确地址须靠软件识别,而在W77 E58中,增加了地址特殊寄存器SADDR和地址屏蔽特殊寄存器SADEN,只有SADEN中 的某一位为1,计算实际地址时相对应的SADDR的位才有效,若SADEN中某一位是0 ,则进行实际地址计算时忽略对应的SADDR中的位。例如:SADDR:10100100、SADEN:11111010、实际地址:10101X1X 。

在进行多机通讯时,只有接收到的地址帧和根据SADDR、SADEN计算出的地址完全 相同时,从机才会置位中断标志,这完全由硬件自动完成,而不是象标准8051系列那样必须靠软件完成[13]。

4.2.5可软件编程的访问外部存储器的存取速度

标准的8051在执行MOVX指令访问外部存储器时,执行时间固定为2个机器周期,而W77E58可根据外部存储器的响应速度来选择执行MOVX指令时存取速度,这可以通过选择特殊寄存器CKCON(clock control)的MD0-MD2的值来实现。 4.2.6内存

在W77E58中,有32KB的可多次编程(Multiple-Time Programmable)flash ROM, 256字节的片内RAM,1KB的片内用MOVX指令访问的SRAM,这在大多情况下,足以满足用户要求。

4.2.7可编程看门狗定时器(Watchdog Timer)

在W77E58中,集成了一个用户可编程的看门狗定时器,溢出时间选择,在软件编程中,用户可以随时复位看门狗定时器。若程序跑飞,看门狗定时器溢出,则看门狗定时器自动设定中断标志,在512个时钟周期后,产生硬件复位,并保留2个机器周期后,程序恢复到地址0000H处开始执行。

4.2.8双16位数据指针(Dual 16-bit Data Pointers)

W77E58提供有两组数据数据指针DPTR和DPTR1,另外还增加了一条附加的指令DEC DPTR,在处理连续的一片内存空间时,可大大提高代码效率。用户可以通过DPS (DATA POINTER SELECT)位标志来选择使用DPTR或DPTR1,DPS是特殊寄存器DPS

- 15 -

宁夏理工学院毕业设计

(86H)的最低位(LSB),当DPS为0时,选择DPTR,当DPS为1时,选择DPTR1。下面以数据块传输来比较一下使用双数据指针时的优越性。 SH和SL为源数据区高位地址和地位地址; DH和DL为目的数据区高位地址和地位地址;CNT为传送数据的字节数。

W77E58还有对某些重点标志位修改时的限时存取保护功能、定时器定时记数时按 照4分频(W77E58的机器周期)或12分频(标准8051系列的机器周期)的选择功能、使用片内RC振荡器或片外晶体振荡器的选择功能、节电工作方式的电源管理功能等诸多优点。W77E58芯片管脚如表4.1所示:

表4.1 管脚描述

符号 类型 描述 外部访问使能:此管脚使处理器访问外部ROM。当EA 保持高电平时,EA ——I 处理器访问内部ROM。如果EA管脚为高电平且程序计数器指向片内ROM空间,ROM的地址和数据就不会出现在总线上。 程序存储使能:在执行取指令(fetch)和MOVC的操作时,此管脚允—————PSEN O 许外部ROM数据出现在P0口的地址/数据总线上。当访问内部ROM时,此管脚上不输出PSEN的选通信号。 复位:振荡器运行时,此管脚上出现两个机器周期的高电平将使器件————RST XTAL1 XTAL2 VSS VCC I 复位。 I O I I 石英晶体1:晶体振荡器的输入。此管脚可由一个外部时钟驱动。 石英晶体2:晶体振荡器的输出。XTAL2是XTAL1的反相端。 地:地电位 电源:电源工作电压 端口0:端口0是一个双向I/O口,在访问外部存储器时,端口0可用P0.0?P0.7 I/O 作低位地址/数据总线。端口0 是一个开漏极端口,在进行编程时需要连接一个外部上拉电路。 端口1:端口1是一个具有内部上拉电路的双向I/O 口。有复用功能位,如下:T2(P1.0):定时/计数器2的外部计数输入 。T2EX(P1.1):定P1.0?P1.7 I/O 时/计数器2的重装载/捕获控制。 RXD1(P1.2): 串行口2 RXD。 TXD1(P1.3): 串行口2 TXD。 INT2(P1.4): 外部中断 2 。 - 16 -

宁夏理工学院毕业设计

————INT3 (P1.5): 外部中断 3 。INT4(P1.6): 外部中断 4 。 INT5 (P1.7): 外部中断 5。 ————端口2:端口2是一个具有内部上拉电路的双向I/O 口。此端口提供访P2.0?P2.7 I/O 问外部存储器的高位地址。 端口3:端口3是一个具有内部上拉电路的双向I/O 口。所有位都有复用功能,如下: RXD(P3.0):串行口接收器输入 。 TXD(P3.1):串行口发送器输出 。INT0 (P3.2):外部中断0 。 P3.0?P3.7 I/O ————————INT1 (P3.3):外部中断1 。T0(P3.4):定时器0外部输入。 ———T1(P3.5):定时器1外部输入。 WR(P3.6):外部数据存储器写选通。 ————RD(P3.7):外部数据存储器读选通。 ————P4.0?P4.3 I/O 端口4:可位寻址的双向I/O 口P4,P4.0也提供WAIT 功能提供等待控制信号。 4.3双口 RAM 并行通信的设计

双口 RAM 两侧端口处具有独立的控制总线、地址总线和数据总线,同各种 CPU 接口设计简单,且与各种 CPU 性能具有高度的兼容性,因此易于在两个 CPU 之间实现并行通信。本文以 IDT7132 芯片为例进行双口 RAM 并行通行的设计,如图4.1所示。两侧 CPU 可以同时对双口 RAM 芯片的所有存储单元进行读写操作,实现点对点并行通信。两侧 CPU 不仅操作方便,而且可以直接将双口 RAM 互连,不需要设计额外的逻辑电路。确保双口 RAM 左右两侧的 CPU 稳定、可靠的运行是双 CPU 通信系统的稳定性至关重要的[14 ]。因此在设计中需要解决以下几个重要的问题:

(1)硬件系统和软件系统应有相应的故障冗余处理,因为两个 CPU 对整个系统而言是一个整体,一个系统出现故障,在另一个系统上能够提出来;

(2)合理设计交叉事务处理软件,因为在有些通信处理场合,一端口的处理数据处理是另一端口数据处理的必要条件,所以在软件设计中,需要考虑程序交叉处理方面;

(3)双口 RAM 存储空间的组成和访问,一个 CPU 的访问对RAM 的存储区的访问不能影响另一个 CPU 的访问。

- 17 -

宁夏理工学院毕业设计

#BUSY#INT#SEM#CE#OER/#W地址总线#BUSY#INT#SEM#CE#OER/#W地址总线IDT71324.4系统关键问题的解决

4.4.1系统故障冗余设计

在双 CPU 设计中,系统故障冗余设计是至关重要的。特别是系统的复位逻辑和故障处理方便。在程序引导程序引导阶段需要对相应的外围接口、存储空间、参数、变量进行初始化和赋值,如果某个 CPU出现“跑飞”,则需要同时启动复位电路或则重新引导程序。在复位电路设计中,可以把两个 CPU 的复位(RESET)端都连接与看门狗的 RST 端。而在引导程序中,可以把两个CPU 的不同的 bootloader 程序合并在一起组成一个 bootloader 程序,这样可以在引导出现问题时跳转到合并的 bootloader 程序,就完成了两个 CPU 的引导。 4.4.2交叉事务处理设计

交叉处理事务一般包括对外部输入数据的中断、特殊控制指令、硬件故障处理,它们往往需要很高的响应速度,较高的控制逻辑。一般有三种交叉事务仲裁方法:硬件仲裁、中断仲裁或令牌仲裁。而令牌仲裁逻辑程序设计简单,程序设计简单,其令牌不使用任何硬件资源,在高速多 CPU 通信系统中应用最广泛[ 15 ]。

双口 RAM 两侧端口各有一个#SEM 信号引脚,它具有令牌仲裁逻辑功能。令牌仲裁

- 18 -

左侧CPU右侧CPUA0-A14数据总线A0-A14数据总线D0-A7D0-A7

图4.1 双口RAM并行通信原理图