新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 兼容51指令的8位MCU IPCORE设计

兼容51指令的8位MCU IPCORE设计

作者:时间:2012-10-24来源:网络收藏

3.3.1 状态的

图2 状态机状态图

如图2 所示状态机共有五种状态,每个状态转换时间都对应一个时钟周期,所有共有状态为取指状态(取指令操作码)和开始状态(复位后的状态),中间的执行状态根据不同指令来分别采取1 到3 个执行步骤,比如ADD A RN 需要一个执行步骤,ADD A #DATA 需要两个执行步骤等。这样所有的指令就可以在一到四个时钟周期内完成整个指令的执行过程。

3.3.2 指令状态机的实现

51指令按功能分为五类:数据传送类;算术操作类;逻辑操作类;控制程序转移类;布尔变量操作类。出于减少内部连线和控制方便的考虑,我们将不同类的指令放在了不同的模块中解码执行。

算术操作类指令和逻辑操作类指令由指令译码控制模块实现译码,产生操作数和ALU控制命令,然后传送给算术逻辑运算单元ALU 完成运算,ALU 模块将运算结果送回指令译码控制模块,再由指令译码控制模块将结果写回目的单元。

数据传送类指令中的MOVX指令的实现需要所有外部控制时序信号的配合。在输出控制逻辑中直接产生MOVX所需的控制信号。数据的输入输出则在指令译码控制模块中实现。数据传送类中其他指令和布尔变量操作类指令中的非转移指令都直接在指令译码控制模块中实现,通过内部总线实现内部存储器、寄存器,外部存储器之间的数据传送。

控制程序转移类指令由于与程序计数器直接相关,因而这一类指令中的长调用指令、绝对调用指令、长转移指令、绝对转移指令、相对转移指令、子程序返回指令的PC计算放在了状态机时序部分PC计算模块,完成取指操作;而条件转移指令和布尔变量操作类中的测试转移指令则由指令译码控制模块完成测试比较操作,将比较结果送回PC计算模块使其根据比较结果来完成转移操作;由于数据传送类指令中的MOVC指令直接操作程序计数器,因而它的实现也放在了这个模块中。

4 核内其他单元的

4.1 中断单元的实现: 此次 共有5 个中断包括两个外部中断,三个中断。中断源的检测是在状态机时序部分完成,执行中断程序之前操作如PC 装载中断向量值,PC 值的保存,清除中断标志等是在状态机的组合逻辑部分实现。

4.2 定时计数单元和UART 的:两个多功能16 位定时/ 计数器,我们用两个进程分别来实现。定时/ 计数器1 与定时/ 计数器0 类似,但它输出一个溢出脉冲到串行接口,给串行接口提供波特率。溢出中断标志输出到中断处理模块。串行口是一个全双工通信接口,它可作UART 用,也可以作同步移位寄存器用。我们用两个进程来分别实现其收发功能。收发所需时钟在进程外实现,模式1、2、3 的区别只是时钟和位数不同,故放在一起实现。

4.3 存储器设计:核内包含256B 的存储器,其中低128 单元作为用户RAM,高128 单元作为SFR.外部RAM 和ROM 可根据需要任意扩展到64KB。此次设计采用哈佛总线结构,ROM 和RAM 区由控制模块分别提供数据,地址传送总线以及控制信号线。内部RAM 和外部RAM 的读写也采用不同的控制线独立控制。这样的并行结构加速了指令执行的过程,有利于速度的提升。

5 功能和时序仿真的结果

5.1 功能测试

编完代码后,将所有模块整合,接下来就需要搭建测试平台(testbench),写激励文件,进行功能仿真。在源代码调试阶段,编写一简单的指令来进行仿真,然后看波形就可以了。当所有指令的调试基本通过的时候,就要对其进行全功能仿真,因此,针对此核的不同功能,如外中断、定时器/计数器、UART等需要编写不同的测试文件,以保证其在多种情况下都能正常工作。

测试平台见图

图3 测试平台的建立模式



评论


相关推荐

技术专区

关闭