上面的程序给出了这一次读过程中读地址指针的变化情况。随着读地址指针的变化,缓冲器中的数据顺次输出到数据总线D[7…0]上去。程序中 …0]为缓冲器的读地址指针, …0]是缓冲器的输出端口, … 是 芯片的数据总线 … 。
3.5 功能的实现
在 芯片与 芯片进行数据传输的同时,双方需要一些握手信号来协调传输过程。为此,我们选择了 芯片中的 总线主控制器作为 端口,用来传输一些必要的控制和状态信息。
为了与 芯片中的 总线主控制器配合工作,我们在 芯片中编写了一个 总线从模块,使得 总线上的数据传输能够顺利进行。根据 总线传输规范,我们设定了一个状态机 ,它共有如下7个状态: 。图6给出了此状态机的状态图。
图6 总线状态机流程图
由图6可以看出,在开始条件( 产生后, 由空闲( 状态进入地址状态( 。我们在 中指定了两个寄存器用于存储从 总线上发送来的控制信号和将要发送到 总线上的状态信号,它们分别是控制寄存器 ‥0 和状态寄存器 ‥0 ,这两个寄存器地址的高4位均为“1110“。同样,我们可以把1 芯片中所有由 总线寻址的寄存器的高4位地址都设定为“1110”。如图6所示, 总线在地址期内发送的高位地址只有为“1110”时,1 才会产生响应。这样做的好处是便于扩充其它 总线设备。
总线在地址期内发送的最低地址用于指定随后的数据传输是主要设备读还是主设备写,高电平表示主设备读,低电平表示主设备写。读写状态转换如图6所示。因此,8位地址中可以用作寻址 端口的地址位为 ‥ 。
4 结束语
本文介绍了数据通信解决方案中数据传输通道和 功能的实现。实验证明,两个模块配合工作即可实现数据的正常传输,从而顺利地将 转换器的输出信号经 总线传送到上位机去。这个解决方案基于 总线设计并且结合 来进行控制,充分利用了 总线数据传输速率高、 设备可热插拨等功能和 速度快、效率高、配置灵活的特点。经实践证明,它是一个功能完备、高效稳定的解决方案。