0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用双端口RAM技术实现智能型高速并行通讯卡的接口设计

牵手一起梦 来源:电子技术应用 作者:孙成秀,陶振权, 2020-10-04 14:13 次阅读

作者:孙成秀 , 陶振权 , 张宪震

端口RAM 内存直接映象 高速并行传输 DLL动态链接在集散型控制系统中,一般将计算机或工控机用于终端图文显示,数据采集处理以及机对话接口等方面。计算机或工控机与外部设备需要建立数据传输的通讯联系。但大量数据传输,靠通常的串行通讯方式进行,必须占用CPU大量的时间进行通讯。一些控制系统往往因为传输速率慢而无法实现实时控制,不能满足系统采集和控制需要。上述问题在我们设计的汽车综合检测系统中,得到了较好的解决。系统中采用双端口RAM技术设计了一块PC总线接口的智能型高速并行通讯卡(以下简称通讯卡),实现外部数据同计算机高速并行通讯。由卡上的MCU负责分机的数据采样,将需要传输的数据按系统协议在双端口RAM内任意存取,读写速度快、可靠性高、接口简单,满足了系统设计需要。并且实现了在VB语言环境下对采用内存直接映象技术的双端口RAM的读写操作,将多主CPU采用的总线仲裁方式简单为仅仅对内存操作,在应用计算机总线扩展技术方面具有借鉴意义。

1 系统描述

在汽车综合检测系统中,需要对汽车的底盘、发动机以及综合电路等方面的信号进行采样和判断,其中包含大量的运算处理和汽车标准为资料的对比、分析、判断等环节。整个系统信号采样点多,信号的形式各不相同,系统采用MCU控制方式的分机对各测量点进行数据采集和模拟控制。由于MCU没有高效的运算功能,没有大量的指令和数据存贮空间,更不能直观显示各种汽车标准数据和测量结果,若进行大量的运算、判断、显示,其硬件、软件处理一个比较棘手的问题。因此本系统采用MCU负责采集各种信号,统一由计算机负责相应的运算处理、分析、判断,并管理汽车标准数据库、人机对话接口、显示测量结果和标准图形等等,用一块管理分机的通讯卡实现分机与主机之间数据传输。

通讯卡包含了数字滤波、数据收集、传输等功能,对系统内的并、串行通讯实现分时操作。卡上由一片MCU负责管理各个分机,通过串行通讯方式将分机采集的各种数据,收集到通讯卡内,经过判断、筛选,将有效数据存贮到双端口RAM的规定区域内;计算机从双端口RAM内将数据读入,进行运算处理,与标准数据进行比较判断,将结果或控制命令写入双端口RAM内,实现整个系统统一协调运行。本文主要针对通讯卡的软、硬件设计和在VB环境下的软件实现,作重点的分析。

2 硬件设计

通讯卡的基本硬件设计简图如图1所示。利用计算机总线做扩展卡的技术已经广为应用,但很多都是利用计算机提供固定的I/O端口地址进行读写操作,“瓶颈效应”十分明显。在对实时性要求很高、数据传输量很大的场合,数据阻塞明显,无法满足系统的大量数据高速传输的需要。本系统利用计算机内存直接映象技术,对内存物理地址直接操作,实时性和速度明显改善,完全满足本系统的速度要求。

2.1 MCU和双端口RAM的选择

此卡是实现计算机与数据采集的分机之间大量、快速的数据交换的中间环节。采用的MCU要求具有较哟的运行速度和数据管理能力,既有双端口RAM的接口总线,又具备同分机双工串行通讯能力,同时考虑到系统硬件加密的必要,选择此MCU是系统的关键。美ATMEL公司出品的89C51是本系统的首选。另一方面根据本系统的需要,数据传输的信息量在一个令牌下,2KB的吞吐量已经满足,因此我们采用美国IDT公司出品的双端口EAM IDT7132,容量为2K×8bits。IDT7132带有两套独立控制总线,可从两侧任意读写存储器中的所有单元,片内硬件端口促裁电路适合当两侧同时访问同一单元时不允许处于等待状态的89C51的操作,允许不经过外部仲裁,能经受冲突的系统进行双机同步读写存储器中的同一单元,确保了数据的准确性,简化了通讯卡的硬件电路设计,同时为软件设计免除了使用信号灯进行判断操作的繁锁过程。

2.2 双端口RAM的地址范围的选择

计算机内部高端地址中有一段保留给I/O适配卡的128KB地址空间,段地址空间为0C0000H~0DFFFFH。利用这128KB中的一段2KB空间即可满足IDT7132的使用,按PC总线的协议经过地址译码和其它控制总线选能,实现内存直接映象方式。地址范围为0D0000H~0D07FFH之间。另一侧,MCU与IDT7132的接法只将IDT7132其中一侧总线接入MCU的总线上,其接法同普通RAM没有区别,设置地址范围在 8000H~87FFH之间。

工业控制标准实行全地址线译码方式,确保全地址空间的每一个存储单元的地址在总线上唯一。

2.3 对双端口RAM访问的特殊情况处理

IDT7132 两侧的BUSY线分别接到MCU的INT0中断上和PC总线的A10脚(IO-CH-RDY)上,作为MCU和计算机同时读写IDT7132的同一个地址单元时的“忙闲”状态线。当两侧访问不同的地址单元时,BUSY线无效,两侧操作互不影响。当两侧“几乎同时”访问同一个单元时,按IDT7132的总线仲裁逻辑,对两侧的片选信号和地址信号之一到达时间间隔只要大于5ns,就能对先到达的一侧提供读写通道,保证数据读写的真实性。同时将另一侧的BUSY 线置低,为MCU或计算机提供中断或等待信号。众所周知,89C51不具备插入等待周期延时操作的能力。当MCU一侧先行操作时,计算机一侧的BUSY线有效,PC总线上的IO-CH-RDY状态线被拉低,命令计算机CPU插入等待周期,延时等待MCU一侧完成读写操作后,再进行读写操作。当计算机一侧占据IDT7132的一个地址单元时,MCU一侧再操作该单元,MCU读写的数据无效。我们采用了判断标志位的方式解决此问题。当对应的BUSY线变低 INT0中断有效时,MCU完成该条读写指令后立即进入中断,置标志位,中断返回后,即执行查询标志位的指令同,判断此次操作是否有效。未成功,重复操作,直至读写成功。

3 软件设计

整个系统的全部软件共三部分,每一部分的设计侧重点不同。计算机方面软件实现的功能包括:用户人机对话接口、汽车技术资料库的管理和扩充、底层全部数据传输、运算处理、零点校正设定、实时监控操作、各分机的模拟信号线化处理、大量图片资料的处理与调用等等。通讯卡的软件设计包括:对各个分机的管理、数据收集分类整理、筛选判断、与计算机进行有效数据传输等等。分机的软件包括数据采集和模拟控制等部分。要求数据采集准确、一致。实际应用中采用数据滤波、指令冗余、自依断以及现场断点返回等抗干扰技术。

全部软件涉及的编程语言共三种。分机和通讯卡的软件设计采用汇编语言,计算机方面采用Visual Basic6.0、Visual C++ 6.0两种语言,分机方面的软件这里不作介绍,本文主要针对在通讯卡上以及在Visual Basic 6.0环境下对双端口RAM的操作软件设计作详细介绍。

Visual Basic 6.0不具备对计算机底层地址操作的功能,不如Visual C++ 6.0、Delphi等。特别在本系统中采用的高速并行通信方式,对内存物理地址读写操作的频率很高,按常规应改用其它语言。但系统其它方面的工作,不是其它语言所能替代的,所以必须将VB语言环境下不能对底层地址读写操作的问题加以解决。经过实验,通过如下方法实现。

笔者采用的方法是调用动态链接库DLL。用VisualC++ 6.0编写对内存物理地址进行读写操作的DLL动态链接库函数,进行数据采集和发送;用Visual Basic 6.0调用DLL实现数据通信,从而弥补VB对底层数据操作的缺陷,使VB环境下开发数据通信系统软件更为方便。

(1)首先使用Visual C++ 6.0创建一个MFC Appwizard dll项目,这样就可以在DLL中编写程序。因为我们要对直接映象在高端内在范围内的地址进行操作,所以在编写程序时,要使用如下方法:

-asm{ mov A B

mov ……

…………

mov i A}

return i;

-asm{}是嵌入式汇编函数,在Visual C++6.0中只有使用此方法才可以访问高端内存地睛。还要在DLL中编写两个函数。一个从内存地址读数函数,一个对内存地址写数函数。这样才能完成对高端内存地址读写的操作,实现底层的数据传输。

(2)使用Visual Basic 6.0调用DLL动态链接库函数。

第一步:运行VB6.0时,新建一个工程项目,在项目中添加模块,在模块中声明两个API函数:

Declare Function write% lib“C:兡?#12;C”

(ByVal localport%,ByVal value%)

Declare Function read% lib “C:兡?#12;C”

(ByVal localport%)

其中:write( )函数是向高端内存地址写数据;

read( )函数是从高端内存地址读数据。

第二步:在窗体中放入三个文本框(Text 1,Text2,Text3),一个命令按扭(Command 1),就可以在代码窗口中编写代码:

Option Explicit

Dim Port 1 ‘内存地址 如:0D0000H

Dim Port 2 ‘16进制数 如:12H

Private Sub Command 1-click()

Dim Gg As Integer ‘声明一个返回整数

Dim Salp As Integer ‘声明一个返回整数

Port 1=Val(Text 1.Text) ‘把Text 1赋给port 1

Port 2=Val(Text 2.Text) ‘把Text 2赋给port 2

Gg=“write”(port 1,port2) ‘往Port 1地址中写Port 2

Salp=“read”(port 1) ‘从Port 1地址中读数

Text3.Text=Salp ‘在Text3中显示

Salp

End Sub

两个函数的调用过程如上所述,可根据编程的意图放在任何位置。特别注意,函数地址不能与其它硬件的地址或系统内存地址冲突,否则会造成计算机死机。

本文采用双端口RAM器件设计的智能型高速并行通讯卡,在监控软件、硬件,以及在VB环境下对直接映象方式的高端内存进行读写操作的实现,具有通用性。尤其在自动控制领域设计A/D、D/A转换、实现闭环控制,以及设计虚拟仪器、视频信号数字化处理、语音处理、各种系统动态仿真等需要高速数据传输的场合,都具有借鉴意义。总之,智能化板卡在PC总线工业控制的应用,是今后发展的主流。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制系统
    +关注

    关注

    41

    文章

    6548

    浏览量

    110495
  • 接口
    +关注

    关注

    33

    文章

    8516

    浏览量

    150853
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1367

    浏览量

    114536
收藏 人收藏

    评论

    相关推荐

    智能型顶板离层仪的研制与应用

    智能型顶板离层仪的研制与应用根据顶板离层的测量原理, 结合现场实际, 提出了以霍尔元件为基础的直线位移传感器, 实现顶板离层量的非接触测量, 采用以单片机为核心的微电子技术
    发表于 06-19 21:20

    如何判断/区分智能型与非智能型编程器?

    如何判断智能型与非智能型编程器?     智能型编程器的主要特征是自带高速单片机。大多数智能型编程器产品选用MCS51系
    发表于 08-12 00:42

    基于FPGA的RAM实现及应用

    的应用。采用FPGA技术构造RAM,实现高速信号采集系统中的海量数据存储和时钟匹配。功能仿真
    发表于 04-24 09:44

    如何利用端口RAM实现PCI总线接口

    如何利用端口RAM实现PCI总线接口
    发表于 05-06 06:30

    怎么实现高速扫描采样单片机与PC机接口板的设计?

    本文采用两片端口RAM为信箱以ISA的形式完成单片机与PC机的高速
    发表于 05-31 06:40

    基于RAMCPU并行通信的研究与实现

    本文从现代通信系统的要求出发,详细研究了利用RAM实现CPU 之间高速并行数据通信,
    发表于 08-26 11:56 40次下载

    高速扫描采样单片机与PC机接口板的软硬件设计

    为色谱-质谱联用仪设计了高速采样扫描接口电路。介绍了采用ISA形式以两片端口
    发表于 07-16 15:39 11次下载

    基于Actel FPGA的端口RAM设计

    基于Actel FPGA 的端口RAM 设计端口RAM 芯片主要应用于
    发表于 11-15 17:44 82次下载

    端口RAM的并口设计应用

    端口RAM的并口设计应用 摘要:IDT7132/IDT7142是一种高速2k×8端口静态
    发表于 03-03 19:25 1872次阅读
    <b class='flag-5'>双</b><b class='flag-5'>端口</b><b class='flag-5'>RAM</b>的并口设计应用

    端口RAM实现与PCI总线接口数据通讯

      提出了一种使用CPLD解决端口RAM地址译码和PCI接口芯片局部总线仲裁的的硬件设计方案,并给出了PCI总线接口芯片
    发表于 01-07 12:13 2060次阅读
    用<b class='flag-5'>双</b><b class='flag-5'>端口</b><b class='flag-5'>RAM</b><b class='flag-5'>实现</b>与PCI总线<b class='flag-5'>接口</b>数据<b class='flag-5'>通讯</b>

    基于端口RAM高速数据采集系统

    文章给出了一种基于端口 SRAM 技术高速数据采集系统的设计。采用高速
    发表于 07-13 17:59 99次下载
    基于<b class='flag-5'>双</b><b class='flag-5'>端口</b><b class='flag-5'>RAM</b>的<b class='flag-5'>高速</b>数据采集系统

    端口RAM原理介绍及其应用

    传统的并行接口和串行接口设计无论在通信速率,还是在可靠性方面都不易满足要求。而端口RAM则是一个较好的
    发表于 12-29 09:45 2w次阅读
    <b class='flag-5'>双</b><b class='flag-5'>端口</b><b class='flag-5'>RAM</b>原理介绍及其应用

    端口RAM实现ARM与DSP高速数据通信设计

    本文通过使用IDT70261端口RAM实现了ARM与TMS320C6211 DSP之间的高速实时数据通信,给出了
    发表于 07-27 11:33 4057次阅读
    <b class='flag-5'>双</b><b class='flag-5'>端口</b><b class='flag-5'>RAM</b><b class='flag-5'>实现</b>ARM与DSP<b class='flag-5'>高速</b>数据通信设计

    并行端口接口为低压系统供电

    SOT 降压 DC-DC 转换器可有效地从并行端口“窃取”电源,同时 SIM/智能卡电平转换集成电路 (IC) 完成接口。这允许
    的头像 发表于 01-10 15:15 1172次阅读
    <b class='flag-5'>并行</b><b class='flag-5'>端口</b><b class='flag-5'>接口</b>为低压系统供电

    fpgaram的使用

    FPGARAM的使用主要涉及配置和使用端口RAM模块。
    的头像 发表于 03-15 13:58 931次阅读