微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于简化HDLC规程的通信卡及驱动程序设计

基于简化HDLC规程的通信卡及驱动程序设计

时间:02-12 来源:互联网 点击:
在我国的靶场测控领域,所有的数据交换都是基于简化版的HDLC规程进行的,因此我们自行研制开发了基于简化HDLC规程的通信卡。简化HDLC规程主要是为了提高通信的实时性,将HDLC规程中所有通信联络命令帧全部简化,只保留数据通信帧,从而保证一定的实时性。由于该卡具有可靠性高,使用简单方便,工作时具有智能化等特点,被广泛地应用于测控系统数据传送的各个领域中。同时,随着WindowsXP操作系统在测控系统逐渐应用,开发通信卡WindowsXP驱动程序势在必行。因此,我们针对自行研制的通信卡开发出了核心态的驱动程序,经过广泛的用户使用,普遍反映应用好。下面介绍该通信卡的设计以及驱动程序的设计。
通信卡的硬件设计

1 通信卡的主要特点

通信卡的硬件设计目的是智能化通信:在卡上具有4个DMA通道及相应的数据缓冲存储区。在数据的接收过程中,通信卡会自动接收帧数据,判别帧长度,在帧尾将接收到的帧数据提交系统。在发送数据过程中,系统只须把发送的数据提交给本卡,具体的发送过程由该卡自行完成,不因多路通信而使主机增加开销。该卡有内/外时钟两种工作方式,近距离可省去调制解调器,波特率为600b/s~64Kb/s,提供2路符合RS-232/CCITT V.24和RS-422A标准的接口信号。

2 通信卡的电路设计



图1 通信卡框图



通信卡组成框图如图1所示。其主要由DMA控制器、总线竟争仲裁器、串行通信控制器、数据缓冲存储器SRAM、存储器I/O映像和物理地址产生器、总线接口及防护、波特率产生器、接口电路等单元电路组成。
DMA控制器作为通信卡的主设备,控制卡上的数据接收和发送(来自通信控制器和CPU),并负责仲裁优先权。由于在进行数据通信时,允许主机CPU访问本卡SRAM,且主机对其中某一路发控制命令时,不影响其余三路通信,这样将会使主机CPU与本卡DMA竟争本卡总线控制权。而总线上没有给出主机CPU指令排队状态序列,故不能直接设计多主竟争,因而在本卡总线上用门阵列设计了一个状态机,不断地监视总线争用情况,完成本卡总线竟争、仲裁功能。完成HDLC规程的串行通信的器件是INTEL8274多规程串行控制器,它能完成2个独立的串行接收/发送全双工通信。为了使4个信道在一帧数据的发送或接收过程中,主机不干预,故将发送的一帧数据在发送开始前由CPU用批命令放入卡上的SRAM中;同样,在接收过程中,卡上DMA将接收到的数据放入SRAM中,等一帧接收完成后,再用批命令取出,放入系统存储器中。卡上SRAM不占用主机内存地址,采用I/0映像,该适配器插入主机之后,主机通过系统I/O地址对其访问,这由地址产生器完成。总线接口包括数据收发器,数据开关电路,读、写及中断等控制电路,地址译码等。波特率产生器提供了一个可编程的时钟信号发生器,用户可自行设置通信速率,供工作于内时钟方式时使用。接口电路提供符合RS-232/CCITT V.24和RS-422A标准的接口信号。
3通信流程设计

如果要发送一帧数据,CPU用批命令将数据放到本卡SRAM中,然后设置相应的发送DMA通道。DMA通道是非自动重装方式,启动8274控制器发送,然后CPU就不需要管理,由卡上硬件自动发送。
如果需要接收数据,启动接收通道。接收通路自动搜索输入信号,搜索到数据帧时,由卡上DMA控制器来管理,将接收的数据放入本卡SRAM中,并向CPU请求中断,读出数据。
4 总线竟争设计
由于同时可进行四路通信,且CPU可随时对某一路发控制命令或访问卡上SRAM存储器,就将出现CPU与本卡主设备DMA争用本卡总线的状况。由于ISA总线没能给出CPU指令排队状态序列,这给总线仲裁带来了困难,而本卡的总线竟争、仲裁是由可编程逻辑器件设计的状态机来完成的。状态机使用一个4MHz信号作为时钟,共设3种状态:
① CPU控制状态。
② DMA控制状态。
③ 空闲状态, CPU及DMA均未能得到控制权。
当状态机检测到无CPU及DMA申请总线使用权时,就进入空闲状态,而一旦CPU或DMA请求总线,状态机立即将总线使用权交给CPU或DMA。如果正在CPU控制状态期间,DMA申请总线使用权,状态机仍然判定CPU控制总线,让DMA处于等待,直到检测CPU指令完成,状态机才转为DMA控制状态。如果在DMA控制状态时,CPU申请总线使用权,状态机仍然判定DMA控制总线,让CPU处于等待,直至DMA字节传送完,状态机转为CPU控制状态。CPU及DMA对总线的使用权是单个指令或字节传送,不设置总线封锁,因而CPU、DMA可频繁交换使用权,不会出现等待时间过长的现象。
通信卡的驱动程序设计
1 设备驱动程序的I/O模型
通信卡的驱动程序是利用WindowsXP的DDK软件开发的标准的核心态设备驱动程序。它使用统一的“文件”形式,用户可以通过代表通信卡设备的文件名,在WIN32子系统中用文件操作函数来访问。该设备驱动和程序可以根据用户的需要,设置为自动加载,或手动加载,也可以动态的加载该驱动程序。通信卡的驱动程序设计成为支持同步I/O模型,也可以为异步I/O模型。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top