关于OpenCores上的OC8051核的仿真及验证
时间:10-02
整理:3721RD
点击:
最近在学习oc8051,是参考leishangwen小编提供的《DE2上使用OC8051运行点灯程序》先来实践一下,其中(一)可以实现,但是(二)不能实现,下到板子上后led灯全亮,通过rtl仿真,看到p1口的输出,先是复位,然后0x01,然后变成0x00,之后又始终为0xFF,通过(二)给的汇编程序,发现跳转指令好像不能正确执行诶,因为rtl仿真时看到r2等寄存器好像不是按照程序变化的,不知道我理解的是否正确(仿真图如下)。我也通过网上查找一些资料,好像是说oc上下的8051存在一些bug,导致某些指令不能正常执行。
汇编程序:
仿真图:

《DE2上使用OC8051运行点灯程序》
http://download.csdn.net/detail/leishangwen/5173363
DE2上使用OC8051运行点灯程序(一)
http://wenku.baidu.com/view/8df1381b6c175f0e7cd13783.html
DE2上使用OC8051运行点灯程序(二)
http://wenku.baidu.com/view/a9c444f3aef8941ea76e05c9.html
汇编程序:
- LJMP 100h
- org 100h
- mov r2,#01
- mov p1,#0x01
- incR1:
- mov p1,r1
- call delay
- inc r1
- jmp incR1
- delay:
- mov r5,#00
- dly:
- mov r7,#00
- dly1:
- mov r6,#03
- djnz r6,$
- djnz r7,dly1
- djnz r5,dly
- ret
仿真图:

《DE2上使用OC8051运行点灯程序》
http://download.csdn.net/detail/leishangwen/5173363
DE2上使用OC8051运行点灯程序(一)
http://wenku.baidu.com/view/8df1381b6c175f0e7cd13783.html
DE2上使用OC8051运行点灯程序(二)
http://wenku.baidu.com/view/a9c444f3aef8941ea76e05c9.html
暂时发现的一些问题:
1.目前从OpenCores网站上下载的OC8051在执行DA和JBC两条指令的时候是有BUG的,而且OC8051的单时钟周期指令是在使用流水线的情况下完成的,如果遇到指令流水线冲突的情况(如下一条指令需要读取上一条指令写的寄存器),那么指令就需要2个时钟周期完成。所以OC8051每条指令的执行时间不是固定的。
2.网上的一些资料有提到:MOV MOVC MOVX SETB JBC DA等指令可能存在错误。
3.关于某些错误修改,可参考《在FPGA上对OC8051IP核的修改与测试_杨先文》一文。
自己顶一下,假期没怎么接触了,回来再好好研究下。
关于OpenCores上的OC8051核的仿真及验证
栏目分类
射频专业培训教程推荐