- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MC8051_IP核简单指令的仿真步骤
1. MC8051 IP 核简单指令的仿真步骤
(作者:老邹 zouzhibin@
MC8051 IP核下载地址 http://oregano.at/ip/8051.htm)
为了能够比较仔细的观察、分析、验证 MC8051 IP 核,我让MC8051 IP 核运行一个简单
的程序,利用ModelSim仿真,然后和工业标准的8051微控制器指令集对比结果,查看MC8051
IP Core 和工业标准 8051是否兼容。
1.1仿真步骤
整个仿真过程步骤如下:
1、设计程序,输出 hex 文件
利用 Keil 公司的 C51 开发工具 uVision3 建立工程,编写仿真程序,编译工程,输出以
Intel HEX 文件格式保存下来的 hex 文件。Intel HEX 文件是由一行行符合 Intel HEX 文件
格式的文本所构成的 ASCII 文本文件。Intel HEX由任意数量的十六进制记录组成。每个记
录包含 5 个域,它们按以下格式排列::LLAAAATT[DD...]CC
每一组字母对应一个不同的域,每一个字母对应一个十六进制编码的数字。每一个域由
至少两个十六进制编码数字组成,它们构成一个字节,就像以下描述的那样:
: 每个Intel HEX 记录都由冒号开头.
LL 是数据长度域,它代表记录当中数据字节(DD)的数量.
AAAA 是地址域,它代表记录当中数据的起始地址.
TT 是代表 HEX 记录类型的域,它可能是以下数据当中的一个:
00–数据记录 01-文件结束记录 02–扩展段地址记录 04–扩展线性地址记录
DD 是数据域,它代表一个字节的数据.一个记录可以有许多数据字节.记录当中数据字
节的数量必须和数据长度域(LL)中指定的数字相符.
CC 是校验和域,它表示这个记录的校验和.校验和的计算是通过将记录当中所有十六进
制编码数字对的值相加,以 256 为模进行以下补足.
2、 导入 ROM 文件
利用工具 hex2dual.exe(在目录 mc8051_design\msim 中有 hex2dual.c,编译可得 exe
文件)将 hex 文件转换成程序 ROM 数据格式 dua 文件,将此文件更名为 mc8051_rom.dua,
拷贝到” mc8051_design\msim”目录中即可。
3、ModelSim 仿真
第一步:启动 ModelSim,将工作目录设置到 mc8051_design\msim 中,因为此目录是
MC8051 的仿真目录,里面存储了很多用于仿真的文件。
第二步:建立 work 库。点击菜单选项 File-New-Library,在弹出的新建对话框中输
入 Library Name:work和Library Physical Name:work。也可以使用 ModelSim 的命令:
vlib work和 vmap work work,完成建库过程。
第三步:建立编译环境。因为 ModelSim 支持批处理文件,可以将想要编译的程序文件
写在一个 do文件中,比如:vcom mc8051_p.vhd,就表示编译 mc8051_p.vhd 文件。
第四步:建立仿真环境。ModelSim仿真的结果都是通过 WAVE 的方式输出的,所以一般
在仿真之前都会编写一个仿真 do 文件,将要观察的信号添加到 WAVE 窗口中。
第五步:运行仿真批处理文件,开始仿真,同时可以在 WAVE 窗口中观察仿真结果。另
外,在 ModelSim 中也支持调试。可以在源程序中设置断点,单步跟踪,不过要求代码是行
为描述方式的。
1.2仿真程序源码解析
1.2.1 源程序解析
在 uVision3工程中输入的源程序 test.asm 如下:
mov 20h,#10h ;将10H送入空间地址 20H 处
mov a,20h ;将地址 20H的值送入寄存器 a
mov a, #56h ;将56H 送入寄存器 a
subb a, #10h ;寄存器a减 10H,结果保存在寄存器 a
addc a, #23h ;寄存器a加 23H,结果保存在寄存器 a
end
本仿真主要测试 MOV、SUBB和 ADDC 三条指令,所以写了一个简单的程序。
1.2.2 hex 文件解析
uVision3 编译输出
文档评论(0)