DE2上使用OC8051运行点灯程序(二).docVIP

  • 32
  • 0
  • 约4.66千字
  • 约 7页
  • 2017-01-22 发布于重庆
  • 举报
DE2上使用OC8051运行点灯程序(二)

DE2上使用OC8051运行点灯程序(二) 在“DE2上使用OC8051运行点灯程序(一)”中已经使用OC8051进行了功能仿真、时序仿真,并且下载到DE2上运行,查看执行效果了,但实际上这里有一个问题,而由于上一节ROM中指令只有一条,占三个字节,所以将问题掩盖住了,一旦程序长度增加,就会暴露出问题。具体原因是:oc8051中ROM设计的是4096*8bit,一次读取4个字节,所以输出数据宽度是32bit,而上一节设计的ROM是4096*32bit,这样做的原因是为了使得一次读出32bit。所以在读取地址0时,第一种方式取出0-3地址空间的数据,第二种方式(即上一节设计的ROM)只取出0地址空间的数据。如下: 由于oc8051一次读出4个字节,所以开机复位的时候两种方式读出的数据是一样的,随后pc值加4,在第一种方式中读出紧接着的4个字节,而在第二种方式中会读出地址4中存储的内容。所以第二种方式只在低两位为00的地址存储数据,但是即使这样也会出现异常情况,如果存在跳转指令,比如:转移到地址0x3处,此时应该读出的是0x3、0x4、0x5、0x6处的四字节指令,使用上一节中修改后的ROM就无法实现这一点,所以还需要修改ROM,有两种修改方法: 1、使用8bit宽度的数组实现ROM 这样就可以方便的实现上述要求,唯一的缺点是初始化ROM的时候比较麻烦,需要在源文件中依次添加指

文档评论(0)

1亿VIP精品文档

相关文档