微波EDA网,见证研发工程师的成长! 2025年02月19日 星期三
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 关于OpenCores上的OC8051核的仿真及验证

关于OpenCores上的OC8051核的仿真及验证

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

  1. LJMP 100h
  2.      org 100h
  3.      mov r2,#01
  4.      mov p1,#0x01
  5. incR1:
  6.      mov p1,r1
  7.      call delay
  8.      inc r1
  9.      jmp incR1

  10. delay:
  11.      mov r5,#00
  12. dly:
  13.      mov r7,#00
  14. dly1:
  15.      mov r6,#03
  16.      djnz r6,$
  17.      djnz r7,dly1
  18.      djnz r5,dly
  19.      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核的仿真及验证

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top