| 网站首页 | 新闻 | SOPC | FPGA | DSP | ARM | 嵌入式操作系统 | 下载 | 网上商城 | 芯片价格参考 | 留言 | 论坛 | 网络协议 | 驱动设计 | 购买指南-HowtoBuy | 
您现在的位置: FPGA开发板 FPGA 开发板 SOPC开发板 DSP开发板 视频开发板 -嵌入式控制研究室 >> FPGA >> FPGA应用 >> 文章正文 用户登录 新用户注册
[组图]外围设备或器件软件仿真的方法及建议           ★★★ 【字体:
外围设备或器件软件仿真的方法及建议
作者:佚名    文章来源:互联网    点击数:    更新时间:2007-11-26

  1 外围设备或器件软件仿真的必要性

  有一点必须先肯定,软件仿真不能替代硬件仿真。软件仿真只是对硬件的仿真模拟,但是软件仿真仍有必要。目标系统是千变万化的,需要开发者去实现。实现可能需要相当长一段时间,甚至完成后不能随意调试,因此有必要对目标系统进行模拟或仿真,以便开发、检测嵌入式软件。

  外围设备软件仿真可以快速建立开发目标的模拟系统。由于各仿真部件是软件,因此只要部件存在,就没有采购、制作电路板的过程。将各部件按规则布置、用软件连接,就构成了目标模拟系统。

  外围设备软件仿真可以使嵌入式的软件设计与硬件设计相对独立。软件设计者可以先在模拟软件上进行功能和逻辑测试,从而减少了对硬件的依赖。

  外围设备仿真软件在一定条件下可以制作为检测硬件功能的工具。如果仿真部件的连接口可以转化为硬件接口,那么就可以在硬件上用软件仿真部件代替被仿真部件运行。

  外围设备软件仿真可以降低开发成本。过去有时为了配合软件开发,需要在硬件开发初期制作一些测试硬件。而现在,硬件开发可以按自己的需要按部就班地进行,只要在必要时与软件设计者沟通就可以了。

  外围设备软件仿真可以方便单片
机程序的调试,在程序涉及外围设备时不必做任何处理直接运行,仿真软件会自动处理对它的访问。

  2 单片机外围设备或器件的相似性

  经过几个项目的开发,会发现各项目所采用的外围设备或者器件大多相同。只是在功能不同时,才使用不同的外围设备或器件。对于不同的器件或设备,可以发现部件与单片机接口常使用如下几种:I2C、SPI、并口8(16)位、UART。

  因此,对外围设备或器件的仿真部件,在今后的各项目中被采用的可能性很大,制作仿真部件的功夫不会白费。如果将部件特有的接口与部件功能部分分开,两部分再用通用的接口连接(例如将I2C接口单独仿真,然后单独仿真器件的功能部分,再将这两部分用通用接口连接),那么经过这样的设计,由于I2C接口的通用性,I2C接口的仿真使用率会很高,同时各部件由于接口全都一样也便于各部件集成。

  3 外围设备或器件仿真方法及建议

  建议单片机软件调试器预留软件接口。这样其他程序就可以监视单片机的I/O引脚或寄存器,从而使仿真外围设备有了可能。

  将I2C、SPI、并口8(16)位、UART接口封装以Socket形式输出。由于各种单片机的调试器接口不大可能一样,所以单独封装部件接口对应付不同的单片机调试器有好处。以Socket形式输出,可使各部件功能仿真部分高度独立,仿真部件甚至可与其接口和调试器不在同一个计算机内。

  仿真部件的全部接口改为Socket形式。由于关于Socket编程的例程很多,所以不用担心其中的复杂性。经过这样设计后,仿真部件间、仿真部件和调试器间存在复杂的Socket多点连接问题。为了减少复杂的连接须做些修改,可将仿真部件与调试器连接的Socket程序单独制作程序模块,各部件功能仿真部分制作成控件,在需要时放入仿真程序中。仿真软件结构如图1所示。

仿真软件结构

  4 外围软件仿真方法实例

  (1)电路原理

  图2为电路原理框图。

电路原理框图

  AT89S52的编译调试器选择Keil C5l。Keil C5l的调试器有AGSI(Advanced Generic Simulator Interface)的软件接口。

  (2)定义通信协议

  I2C仿真接口和ZLG7290仿真器件问相互动作必须有一个通信协议。通信数据格式定义如表1所列,指令值含义如表2所列。

通信数据格式定义

  (3)I2C接口封装

  根据Keil C5l调试器关于AGSI的说明,将I2C接口封装。从Keil网站下载AGSI例程SPeriDLL,从网上搜索一个Visual C++的点对点的聊天程序。

  将SPeriDLL中不用的控件及相关代码删去(保留也可以),“按键”、“文本框”等控件的使用方法都以例程为准。修改DefineAllWatclhes函数,将监视的51芯片的引脚或存储器的参数修改为:

  Agsi.SetWatchOnSFR(Zlg7290.SDAPort.ZLG7290Write,AGSIWRITE);

  其中:Zlg7290.SDAPort为控制ZLG7290的51芯片的端口;ZLG7290Write为Zlg7290.SDAPort有动作时调用的函数。

  将DefineAllWatches中不必要的代码删除。复制Socket例程,并设置好类及变量。在ZLG7290Write函数体中添加处理I2C和调用Socket发送数据的代码。ZLG7290Write的流程如图3所示。

ZLG7290Write的流程

  在对话框消息函数中处理Socket接收信息的地方添加代码(Socket例程中是在此处处理接收数据的)。按自定义协议将接收到的仿真设备的数据存入相应的缓存,或对I2C器件的输出引脚进行操作。SPeriiDLL修改后的对话框如图4所示。

SPeriiDLL修改后的对话框

(4)用VB编制仿真软件

  从www.zlgmcu.com下载ZLG7290的例程和数据手册。选择一个VB(Visual Basic)的点到点的Socket聊天程序进行修改。增加一个“Form”,并在上面添加ZLG7290要用到的8个数码管控件(自制)、64个按钮控件和1个定时器,如图5所示。建立ZLG7290程序模块,自定义一个ZLG7290的数据类型,并用此类型定义数据变量Reg7290用于保存数据。

用VB编制仿真软件

  修改Socket控件的DataArrival事件的代码。当接收的数据为ZLG7290的地址时,数据交由ZLG7290程序模块处理。数据处理部分根据ZLG7290数据手册和通信协议编写,如果是向某地址写数据,则写到Reg7290的相应位置;如果写到命令地址,则直即执行相应动作程序。

  对按键事件进行处理,根据接键保存相应值到Reg7290的按键寄存器,并通过Socket发出按键数据和按键中断输出引脚动作。

仿真软件的显示窗

  在定时器事件中调用刷新数码管数据的程序。仿真软件的So
cket部分显示窗如图6所示。

  (5)仿真

  按照AGSI的说明文件apnt_154.pdf设置Keil C51调试器,调试器打开ZLG7290例程和I2C接口;运行VB下编制的仿真软件;用Socket连接;全速运行ZLG7290例程。数码管显示如图5所示。

  运行时,ZLG7290的例程中不停地向I2C总线查询按键和发送显示数据。在这样的情况下,仿真软件各项仿真功能工作正常,表明这种仿真方法是可行的。

  (6)说明

  在实例中只有一种接口,如果接口种类增加,则只需在VB仿真软件端增加Socket控件。如果不想用VB开发仿真软件,那么也可以选择其他语言。

  5 结论

  实践证明,本文的仿真方法是可行的,但需要单片机调试器提供软件接口。如果各种单片机调试器都有接口,那么仿真部件就可以得到充分利用。  

文章录入:fengfeiyi    责任编辑:fengfeiyi 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    FPGA的SoC和专用化趋势
    利用Altera增强型配置片实现…
    FPGA在智能仪表中的应用
    基于ARM的FPGA加载配置实现
    基于并行流水线结构的可重配…
    基于IP核的FPGA 设计方法
    基于VHDL语言的IP核验证
    基于FPGA 的高阶全数字锁相环…
    全集成设计环境中开发视频 I…
    可编程逻辑控制器在机顶盒中…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)