传真通信不仅能传送图像/ 图形信息,而且可以保留其具体的形式,因此,真迹传送是传真通信又一主要特点,也是最具魅力的特点。随着因特网的发展,收发电子邮件已经成为大部分公司与个人或其他公司进行通信联系的主要方式。在公司内部,相比使用电话进行通信,人们更愿意使用电子邮件,电子邮件已经成为大多数人的第二种主要通信手段。相比传统传真,电子邮件有一个显着的优点: 成本很低。基于这种原因,人们自然会联想到通过因特网发送传真,这就是网络传真。
双网数字传真机与普通传真机的最大区别是增加了网络传输接口,具有普通电话网和因特网两种传输模式,增强了传真机的功能,扩展其适用范围,提高了传输效率和传输可靠性,保证良好的图像质量,并大幅度地降低了传真所带来的长途通信费用。
双网数字传真机是一个双处理器结构( 主处理器是SCE214,从处理器是A RM S3C4510B) 的嵌入式系统,要实现网络传真功能首先必须实现系统内的双机通信,即主处理器与从处理器的信息交换。
1 双机通信的硬件实现
采用IDT 公司的2K ×8 b 的高速双口RAMIDT7132 来实现双机通信。双口RAM 是常见的共享式多端口存储器,如图1 所示,双口RAM 最大的特点是存储数据共享,一个存储器配备两套独立的地址、数据和控制线,允许两个独立的CPU 或控制器同时异步地访问存储单元。既然数据共享,就必须存在访问仲裁控制。内部仲裁逻辑控制提供以下功能: 对同一地址单元访问的时序控制; 存储单元数据块的访问权限分配;信令交换逻辑
( 例如中断信号) 等。
图1 双口RAM 的功能框图。
它允许两个( 左、右) 端口同时读写数据,每个端口具有自己独立的控制信号线、地址线和数据线; 允许数据高速存取,最快存取时间为20 ns; 功耗低,工作在省电模式时,功耗为5 mW; 其数据保存电压为2 V,便于用电池完成数据的掉电保护。IDT 7132 可以作为8 位双口RAM 单独使用,也可以与IDT7142 组成主从式系统,将数据线扩展到16 位,甚至更宽。IDT7132 支持从其两个端El 对器件的任何存储空间进行完全异步的读/ 写操作。通过的控制,IDT7132 自动工作在省电模式下,而且还可以通过接电池达到数据保护的目的。
IDT7132 工作情况如下: 当左右端口不对同一地址单元存取时,,可正常存储,其中: H 表示高电平,L 表示低电平。当左右端口对同一地址单元存取时,有一端口的= L,禁止数据的存取。此时,两个端口中,哪个存取请求信号出现在前,则其对应的= H,允许存取; 哪个存取请求信号出现在后,则其对应的= L,禁止其写入数据。需要注意的是,两端口间的存取请求信号出现时间要相差在5 ns 以上,否则仲裁逻辑无法判定哪一个端口的存取请求信号在前; 在无法判定哪个端口先出现存取请求信号时,控制线只有一个为低电平,不会同时为低电平。这样,就能保证一个对应于=H 的端口能进行正常存取,对应于= L 的端口不存取,避免双端口存取出现错误。非竞争真值表见表1,竞争真值表见表2。
表1 IDT7132 非竞争真值表。
表2 IDT7132 竞争真值表。
图2 是IDT7132 在本系统中的连接框图。IDT7132 的写入时序图和读出时序如图3,图4 所示。
在写入时序图中,由脉冲上升沿控制写入操作,在读出时序图中,由脉冲上升沿控制读出操作。
图2双口RAM 芯片IDT7132 连接框图。
图3 IDT7132 写入时序图。
图4 IDT7132 读出时序图。
SCE214 和ARM 处理器间数据交换的软件实现是采用轮询方式分别读/ 写双口RAM。它们的读/ 写操作过程基本相同,工作流程如图5 所示。
图5 主、从处理器读/ 写双口RAM 流程图。
SCE214 处理器采用汇编语言实现对双口RAM 的读/ 写; ARM( S3C4510B) 处理器采用C+ + 语言编程,并基于嵌入式操作系统VxWorks 实现对双口RAM 的读/ 写。
当SCE214 与S3C4510B 同时向同一存储单元( # 07FF) 写入数据时,如果对侧地址信号的稳态先于本侧的时,本侧信号输出& L.,表示禁止本侧处理器写入,本侧写入脉冲中加入等待周期; 若对侧地址信号的稳态晚于本侧时,本侧信号输出" H".,表示本侧处理器可以执行写入操作;不能同时为" L".。
图6 是双口RAM IDT7132 存储器映射图,IDT7132 空间大小为2 KB,存储空间划分为两部分: 控制区和数据区。数据区分又分为两部分: 1# 区和2#区,其空间均为512 B,1# 区用于实现SCE214 写入数据和S3C4510B 读出数据,2# 区用于实现SCE214 读出数据和S3C4510B 写入数据。控制区包含读/ 写标志、1 # 数据区起始地址及有效数据最大地址偏移、2#数据区起始地址及有效数据最大地址偏移。
图6 双口RAM IDT7132 存储器映射图。
处理器对双口RAM 的操作过程如下:
( 1) SCE214 有写入数据时,将数据写入1# 区,有效数据起始地址写入$ 07FE、$ 07FD 存储单元中( 按小端格式存放) ,有效数据地址最大偏移量写入$ 07FC、$ 07FB,并将$ 07FF 的Bit0 置为1;( 2) S3C4510B 读双口RAM 时,先判断$ 07FF 的Bit0 是否为1,若为1,从$ 07FE、$ 07FD 存储单元中取出有效数据起始地址,从$ 07FC、$ 07FB 存储单元中取出有效数据地址最大偏移量,根据有效数据起始地址和最大偏移量,读出双口RAM 中的数据,并将$ 07FF 的Bit0 置为0;( 3) S3C4510B 读双口RAM 时,若判断出$ 07FF的Bit0 为0,则S3C4510B 认为SCE214 无数据发送来。这时S3C4510B 若有数据需要写入双口RAM,则将数据写入2# 区,有效数据起始地址写入$ 07FA、$ 07F9存储单元中( 按小端格式存放) ,有效数据地址最大偏移量写入$ 07F8、$ 07F7,并将$ 07FF 的Bit3 置为1;( 4) SCE214 轮循到读双口RAM 操作时,先判断$ 07FF 的Bit3 是否为1,若为1,从$ 07FA、$ 07F9 存储单元中取出有效数据起始地址,从$ 07F8、$ 07F7 存储单元中取出最后一个有效数据的地址偏移,根据有效数据起始地址和最大偏移量,读出双口RAM 中的数据,并将$ 07FF 的Bit3 置为0;( 5) SCE214 轮循到读双口RAM 操作时,若判断出$ 07FF 的Bit3 为0,SCE214 认为S3C4510B 无数据发送来。
如此重复( 1) ~ ( 5) 的操作,即可完成SCE214 与S3C4510B 的双向通信,最大一次可传送512 B数据。
2 结论
双机通信在嵌入式系统中应用比较广泛,本文介绍的设计方案主要用于速率要求高、成本适中的场合。
由于本系统采用的是双处理器结构设计,给系统的稳定性带来一定的隐患,有待于在以后的研发中能将双处理器集成为单片处理器。双网数字传真机研发的亮点在网络传真,其网络传真实现的业务不是实时传真,加之因特网本身的时延较大,有待用户检验,但其市场前景仍比较乐观。