基于51单片机嵌入式系统仿真设计

2020-05-23来源: elecfans关键字:51单片机  嵌入式系统  仿真设计

本文介绍一种嵌入式系统仿真方法,通过一种特殊设计的指令集仿真器ISS将软件调试器软件Keil uVision2和硬件语言仿真器软件Modelsim连接起来,实现了软件和硬件的同步仿真。


缩略词解释:

BFM:总线功能模块。在HDL硬件语言仿真中,BFM完成抽象描述数据和具体的时序信号之间的转换。

PLI:Verilog编程语言接口,是C语言模块和Verilog语言模块之间交换数据的接口定义。

TCL:字面意思是工具命令语言,是一种解释执行语言,流行EDA软件一般都集成有TCL。使用TCL用户可以编写控制EDA工具的脚本程序,实现工具操作自动化。

ISS:CPU指令集仿真器,可以执行CPU的机器码。

TFTP:简单文件传输协议,Windows的tftp.exe既是该协议的客户端实现。

SMART MEDIA:一种存储卡,常用于数码相机、MP3。

DMA:直接内存访问。用于外部设备之间高速数据转移。

MAC:媒体接入控制器。本文中是指网卡芯片。


前言

传统的嵌入式系统中,设计周期、硬件和软件的开发是分开进行的,并在硬件完成后才将系统集成在一起,很多情况下,硬件完成后才开始进行实时软件和整体调试。软硬件联合仿真是一种在物理原型可用前,能尽早开始调试程序的技术。


软硬件联合仿真有可能使软件设计工程师在设计早期着手调试,而采用传统的方法,设计工程师直到硬件设计完成才能进行除错处理。有些软件可在没有硬件支持的情况下完成任务的编码,如不涉及到硬件的算法。与硬件相互作用的编码在获得硬件之前编写,但只有在硬件上运行后,才能真正对编码进行调试。通过采用软硬件联合仿真技术,可在设计早期开始这一设计调试过程。由于软件的开发通常在系统开发的后段完成,在设计周期中较早的开始调试有可能将使这一项目提早完成,该技术会降低首次将硬件和软件连接在一起时出现意外而致使项目延期完成所造成的风险。


在取得物理原型前,采用软硬件联合仿真技术对硬件和软件之间的接口进行验证,将使你不会花太多的时间在后期系统调试上。当你确实拿到物理原型开始在上面跑软件的时候,你会发现经过测试的软件部分将会正常工作,这会节省项目后期的大量时间及努力。

基于51单片机嵌入式系统仿真设计
 

软硬件联合仿真系统由一个硬件执行环境和一个软件执行环境组成,通常软件环境和硬件环境都有自己的除错和控制界面,软件通过一系列由处理器启动的总线周期与硬件的交互作用。本文以一个Mini Web卡的开发介绍一种软硬件联合仿真系统。


该方案的核心是采用一个51单片机仿真引擎GoldBull ISS51(以下简称ISS51),ISS51是51单片机开发环境Keil uVision2的一个插件,ISS51具有连接Keil和硬件仿真环境Modelsim的接口,可以实现软硬件同步仿真。在该系统中,Keil作为软件调试界面,Modelsim作为硬件仿真和调试界面,ISS51负责软件执行、监控软件断点、单步执行、内存和寄存器数据返回给Keil、CPU总线时序产生和捕获、内部功能模块(如定时器,串口)的运行等功能。


Mini Web卡介绍

Mini Web卡是一个运行在单片机上的Web服务器,提供网口连接,有大容量文件系统,提供TFTP和HTTP服务。尽管软件系统比较复杂,但优化编译后,执行代码还不足25K,为后续升级留下了足够空间。


51CPU采用SST89系列,这种CPU具有ISP功能,可以通过RS232串口,直接将目标码下载到CPU。


DMA控制逻辑是一个可编程逻辑器件,采用的是ALTERA的CPLD EPM240,主要功能是实现外围器件之间的DMA传递。因为51CPU进行IO访问是很低效的,需要24个时钟周期才能进行一次IO访问,在外围设备之间转移数据则需要更多的时钟周期,使用DMA控制逻辑可以达到3个时钟周期就能转移一个字节。本系统中处理多种网络协议,需要大量报文收发和文件系统访问,采用DMA可以极大地提高51单片机的数据处理速度。DMA通道主要有MAC芯片与RAM之间的数据块转移,SMART MEDIA和RAM之间的数据块转移。


网卡芯片采用的是AX88796,主要的优点是可以和51CPU方便地接口;支持100M以太网,速度高;有较大的接收报文缓存,能够平滑网络流量,减少因51CPU处理速度慢导致的报文丢弃和重发。


SMART MEDIA是一个移动存储卡,主要用于存储文件,Mini Web卡支持8M到256M的SMD卡。

文件系统是Mini Web卡的新开发模块,文件系统的测试主要通过TFTP来进行,为此Mini Web卡上的TFTP服务程序进行了特殊设计,支持格式化SMART MEDIA,获取剩余空间,获取文件名列表,上传、下载和删除文件。


软硬件联合仿真的必要性:

Mini Web卡软件模块多,软件开发风险较大。软件对硬件的依赖较强,FLASH存储器的访问驱动、网卡驱动、DMA驱动,需要软硬件协同调试。


文件系统的开发,在仿真环境下更容易和快捷。比如在仿真结束时,可以将SMART MEDIA仿真模型中的数据倒换到磁盘文件中,在仿真开始时,将磁盘文件中的数据加载到SMART MEDIA仿真模型中,在定位文件系统的问题时,这一个功能很有用。


采用软硬件联合仿真,便于系统前期设计。51单片机的外部RAM访问效率较低,内存拷贝、外部器件之间的数据块转移很浪费时间。将大量数据的拷贝操作或数据块校验、比较操作在CPLD内实现,可以大大改进51单片机处理数据的能力。通过软硬件联合仿真,可以评估CPLD处理数据对性能的改进。


Mini Web卡软硬件联合仿真系统:

软硬件联合仿真主要解决的问题是系统功能设计与验证,它不解决电源、滤波电容、总线电平兼容问题。


做系统仿真,首先要对硬件系统建模。我们关注的是系统设计的正确性和可执行性。


系统中的串口只是用来支持ISP下载软件,软件部分没有对串口做任何操作,所以系统仿真可以不必考虑。

网卡芯片AX88796,厂商没有提供仿真模型。它与CPU的接口符合ISA接口标准,软件对AX88796的操作是根据NE2000标准网卡芯片设计的,由此我们建立了一个网卡芯片的仿真模型。我们设计了一个MAC BFM来仿真网卡芯片的ISA接口,NE2000定义的寄存器在C模型中实现,MAC BFM与NE2000寄存器C模型通过PLI接*换数据。


SRAM仿真模型是很容易获取的,很多器件生产商都提供Verilog仿真模型,但器件生产商提供的Verilog仿真模型都包含复杂的延时控制代码,这会影响仿真速度。根据经验,我们可以确保SRAM在单板设计中被正确应用,不会产生时序问题,所以我们可以采用一个简化的SRAM仿真模型,这是我们自己设计的,有效代码只有十几行。


51CPU BFM 负责单片机管脚时序的产生和捕获。51CPU BFM是与ISS51紧密捆绑的,由ISS51安装程序提供。


SMART MEDIA是三星公司提供的仿真模型,我们使用的也是三星公司的同类型存储卡。该模型可以用于验证软件操作SMART MEDIA的正确性和DMA Controller的接口时序。


DMA Controller是Mini Web卡硬件开发的一部分,将逻辑设计代码应用于仿真,既能检测逻辑设计的正确性,又能使整个仿真系统得以正常运转。


将上述硬件模型连接起来,产生下图所示硬件系统模型图:

基于51单片机嵌入式系统仿真设计

图2. Mini Web卡硬件模块电路图


图2中U11为SMART MEDIA仿真模型,U4为DMA Controller模型。

虚拟网卡

做系统仿真,必须输入来自真实世界的激励,并将仿真系统的输出传递到真实世界。即便是不能连接到真实世界,也应该提供模拟真实世界的输入,并对仿真系统的输出进行检测和分析。


对于Mini Web卡来说,它和真实环境是通过网口连接的。使用虚拟网卡技术,能够将图3中的MAC C Model与虚拟网卡进行通讯。

基于51单片机嵌入式系统仿真设计



对于运行在Windows系统上的应用程序来说,它并不知道网卡是虚拟的还是真实的,应用程序通过虚拟网卡收发数据,事实上是与仿真系统在进行网络通信。


这样就可以使用TFTP向Mini Web卡仿真系统传递网页文件,使用IE浏览Mini Web卡仿真系统中的网页,Mini Web卡的所有功能都能够被检验。


使用网络臭探器Sniffer可以监控虚拟网卡的报文流,方便协议调试。


仿真加速技术

软硬件联合仿真,影响仿真速度的瓶颈在HDL代码部分的仿真。如果不设法提高HDL代码部分的仿真速度,软件调试就非常低效。


提高硬件仿真速度的方法之一是软件硬件仿真采用事件同步,只在CPU访问IO时保持软件和硬件是同步的。


仿真加速方法之二是硬件仿真系统时钟休眠。对于Mini Web卡来说,只有DMA Controller是受时钟控制的,软件没有操作DMA Controller的期间,DMA Controller的运作是毫无意义的,所以可以在非DMA操作期间,对时钟进行休眠;ISS51在每次IO访问时,给出与上次IO访问的时间差,这个时间差经过处理可以作为时钟休眠的时间段。如果ISS51连续进行IO访问,就不会产生时钟休眠了。DMA Controller工作于查询方式,可以采用时钟休眠技术,而不会导致仿真与真实结果的不一致。


方法之三是,缩短SMART MEDIA仿真模型中的一些长延时的时间参数。因为在等待SMART MEDIA进入就绪状态时,CPU必须连续查询IO,影响仿真速度。我们主要用于软件功能验证,这种修改也是可以接受的。


方法之四,在软件设计上,谨慎使用外部中断,因为一旦中断启动,ISS51需要在每个机器周期查询是否有中

[1] [2]
关键字:51单片机  嵌入式系统  仿真设计 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic498013.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:4×4键盘C51单片机程序源码分享
下一篇:51单片机在智能时钟控制系统中的应用设计

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

51单片机实验8:led点阵(1):点亮一个点
开发板led点阵模块电路图如下:74HC595:74HC595是一个8位串行输入、并行输出的位移缓存器。芯片第11角为数据输入时钟线,上升沿有效。芯片第12脚为输出存储器锁存时钟线,上升沿有效。芯片第13脚为输出有效(低电平)。芯片第14脚为串行数据输入。为表示出输入74HC595的8位二进制数,开发板加入了led模块(图一中绿色所示)。若要使led发光,则需将JP595接vcc。OE为输出有效控制端,低电平有效,所以务必将JOE短接片短接到GND端。_nop_();函数为延时一个机器周期,所对应头文件为intrins.h#include<reg52.h>#include<intrins.h>#define
发表于 2020-05-08
51单片机实验8:led点阵(1):点亮一个点
51单片机 4个独立按键控制LED灯 (protues仿真)(C语言版)
}}void main(){while(1){key();}}四、运行程序后成功后,打开proteus右键单击单片机AT89C51,找到编辑,然后添加hex文件
发表于 2020-05-08
51单片机 4个独立按键控制LED灯 (protues仿真)(C语言版)
51单片机课程设计——led点阵广告牌程序设计
上学期期末的课设题目是led点阵广告牌,当时的要求如下:(1)能够显示不同字符的LED点阵广告牌;(2)按键切换不同的显示效果(如闪烁,静止,平移等);(3)按键切换不同的显示内容;(4)能够显示图形或自定义字符;(5)其他功能(创新部分);(6)系统调试、分析、总结与功能实现。当时用的是我用是的普中科技的STC90C51RD+的单片机,不过只要是51单片机,换哪个51内核的芯片都可以,只要电路和程序匹配就可以。我用的那款普中科技的51单片机可以直接连线决定线路的布置,不需要自己去重新焊一个电路板。然后我根据任务要求连接了电路,写了对应的程序,还有proteus仿真。另外,觉得有趣可以点个赞;有什么有趣的想法可以评论一下,我感兴趣
发表于 2020-05-08
51单片机课程设计——led点阵广告牌程序设计
51单片机 基于LED点阵的9~0倒计数
#include <reg52.h>sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;unsigned char code image[11][8] = {{0xC3, 0x81, 0x99, 0x99, 0x99, 0x99, 0x81, 0xC3}, //数字0{0xEF, 0xE7, 0xE3, 0xE7, 0xE7, 0xE7, 0xE7, 0xC3}, //数字1{0xC3, 0x81, 0x9D, 0x87, 0xC3, 0xF9, 0xC1, 0x81}, //数字2{0xC3,
发表于 2020-05-07
基于51单片机智能红外温控风扇设计
1、设计需求及目标本产品采用单片机+最小系统+数码管显示模块+数码管驱动模块+温度采集模块+人体感应模块+风扇模块+按键模块等构成;功能描述:(1)采用DS18B20温度传感器测温,人体感应模块检测是否有人。(2)共3个按键:1键切换/设置、2键加、3键减。(3)本设计共三种模式:自动模式、手动模式和自然风模式。(4)自动模式,按一下1键可以设置温度上限,再按下设置温度下限,均可以按键加减调整。数码管第一位不显示,后三位显示温度值。人体感应模块检测有人时,温度小于下限风扇不转,温度在上下限之间50%转动,大于上限时,风扇全速转动。人离开后,延迟几秒风扇停止转动,起到节能环保的作用。(5)手动模式,数码管第一位显示风扇档位,后三位
发表于 2020-05-07
基于51单片机智能红外温控风扇设计
C51单片机数码管动态显示
数码管作为最廉价的输出设备,在各种自动化设备中有很大的应用,最简单普通的显示方式为动态刷新显示,称为假动态显示,即通过分时扫描每一位,利于人眼的视觉停留现象,造成一种静态显示的效果,如下图所示:C51单片机由于运行速度很慢,在高刷新频率下,单片机的资源耗费很厉害,这样单片机就不可以再进行大量的计算工作,实际上,单片机在刷新时,只需要周期性的改变GPIO口的状态就可以了,剩下的时间其实都是在空转的状态下,我们能不能将这个空转的状态拿来用呢?当然是可以的啦,这里,我们利用单片机的定时器周期地产能中断,在中断内进行数码管的刷新工作,就可以将等待中断的这个CPU时间拿来做别的事情了。硬件电路:代码贴过来:主函数#include "
发表于 2020-05-07
C51单片机数码管动态显示
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved