在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3569|回复: 6

开源软核学习笔记08(再来看 8051 基于MC8051)——2014_8_31

[复制链接]
发表于 2014-8-31 15:50:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 oldbeginner 于 2014-8-31 15:53 编辑

**************
从 MOV D,#data 开始


**************

8051 值得多研究一下,因为结构简单,资料也多一些。主要目的是理解 MC8051

这次 先从 学习一个指令 开始。

05.JPG

01 proteus.gif

利用PROTEUS 仿真了

org 0000H
mov 20h,#010h
mov a,#020h
end


目前,只看 mov 20h,#010h

执行后的 PC 变为 0003
02.JPG
01.JPG
 楼主| 发表于 2014-8-31 16:03:19 | 显示全部楼层
************该指令的机器码

*************

利用 keil 调试,

06.JPG

  可以看出 mov 20h,#010h 的机器码 是 0x752010,是 三个字节,

这样 验证了 三字节 指令,占据 ROM 中的三个字节。

05.JPG

因为,要利用 modelsim 来仿真,所以利用 keil 和 hex2dua 来生成 dua 文件,
07.JPG


下一步就可以开始仿真了。
 楼主| 发表于 2014-8-31 16:12:32 | 显示全部楼层
*************仿真的步骤

再复习
*************

我曾经在

开源软核学习笔记03(8051软核如何仿真modelsim或C++)——2014_1_11》4、5、6楼 给出仿真步骤。 http://bbs.eetop.cn/thread-434238-1-2.html   

这里简单再重复一下,作为新的内容的开始。

原文复制

**************

现在可以研究一个指令MOV direct, #data是如何在mc8051中实现的了。

首先,编辑指令
mov 20h,#10h ;
end

编译后,再转成dua文件,改名mc8051_rom.dua,放在msim目录下

修改msim目录下的mc8051_wave.do文件,然后仿真。



                               
登录/注册后可看大图




可以看出,MOV direct, #data 对应的机器码 01110101 (75h,指令代码)



                               
登录/注册后可看大图



根据指令,设置状态,感觉不错。

然后,就是根据状态。。。



                               
登录/注册后可看大图





                               
登录/注册后可看大图





                               
登录/注册后可看大图





                               
登录/注册后可看大图
 楼主| 发表于 2014-8-31 16:36:10 | 显示全部楼层
*************从大 到小

*************

MC8051结构对我来说还是很复杂,到现在 我都一直 在考虑,有什么办法 让 MC8051 看起来简单点。

08.JPG

选择 mov 20h, #010h 作为开场是有道理,因为非常简单,不会用到 寄存器 和 ALU。

只是 理解 下面两个模块

09.JPG

不过,模块 control_mem,是时序逻辑,对我来说非常复杂;而 control_fsm 虽然更多代码,但却是最容易理解的(因为一条指令的相关内容都在一起,而且非常条理)。

   经过删减后,
10.JPG


所以理解 指令,集中到了 这两个 模块 FSM(组合逻辑)和 MEM(时序逻辑)上。
 楼主| 发表于 2014-8-31 17:04:09 | 显示全部楼层
本帖最后由 oldbeginner 于 2014-8-31 17:06 编辑

*************再来细看 一下 过程

*************

首先,是 信号的名称,感觉这些名称必须记下来,否则看得太累;更不用说其他那么多的信号了。

14.JPG

然后,因为mov 20h,#010h 也是 三周期的指令,所以,可以分成 3步
1、
11.JPG

2、
12.JPG

3、
13.JPG

   没有体现出来的是,ROM 是如何读取的,不过暂时不需要理解细节,每一时钟上升沿,MEM 从 ROM 中读取一条指令(或数据)。

10.JPG


然后 MEM 把ROM 中指令 传给 FSM,

再由FSM 计算新的信号值,然后传给 MEM。

然后,MEM 再读写寄存器或 RAM。

发表于 2014-9-2 11:12:52 | 显示全部楼层
看了楼主写的东西。觉得不错。
碰巧我也在研究这方面的内容
我研究的是mentor的8051IP核,选择它的原因是,这个IP核是个12T的,和教科书上的兼容。
目前把数据搬移类指令搞完了。
发表于 2016-8-23 17:44:18 | 显示全部楼层
开源软核学习笔记08(再来看 8051 基于MC8051)——2014_8_31
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-28 06:27 , Processed in 0.023104 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表