5.读内部RAM和SFR,包括读“字节”和读“位”。此进程为一纯组合逻辑电路。RAM和SFR任何单元的内容的改变均可以启动该进程,同时地址信号也是进程的敏感信号之一。每一次读的过程会读到两个值,一个是“字节”数据,一个是“位”数据,至于状态机在指令的执行过程中会使用“字节”数据还是“位”数据,由状态机根据当前指令自己决定。
6.根据状态机发出的各种多路选择器的值,输出相应的地址和数据的值。多路选择器的作用是根据状态机的指示,即时的输出内部RAM的地址、内部RAM数据(包括“位”数据和“字节”数据)、外部RAM的地址等。
7.计算下一个指令指针的值。它根据状态机的指示,实现对程序计数器值的改写。
control_fsm模块的作用则很单一,就是实现指令系统。不过需要说明的是,这个状态机在接收到来自control_mem模块的有关中断源有变化的信号时,它会优先发出控制指令,指示control_mem模块改变指令指针的值,进入中断。没有中断发生的时候,它就会根据程序存储器的指令来运作。关于指令状态机的设计细节读者可以参阅参考文献【4】。
3.5.外围存储器模块的实现
由于对存储器容量在不同的场合有不同的要求,且实现的方式多种多样,故本设计才把整个设计分为MCS-51内核和存储器两个大的部分。这样做一方面可以方便裁减,使IP核可以在更多的可编程器件上综合;另外实现起来也相对容易。
MAX+ plusⅡ中为了增加原件库的灵活性,为一些常用的功能模块提供了参数化的元件,这些元件的规模以及具体功能可以由用户直接指定,如同可编程元件。这一类元件就是MAX+ plusⅡ中的LPM,即——可调参数元件。利用LPM所提供的RAM、ROM例化设计文件,设计实现了128字节内部RAM和4k ROM模块,其中ROM模块是一个空结构实体,在有内部程序时换成相应的结构。内部程序必须以ASCII码形式或十六进制形式的文件写入,表明每个地址的初始值,用于设计的仿真和综合。
4.功能仿真
下面通过几条简单的指令,来对所设计的IP核进行软件仿真。几条仿真的指令助记符和指令的操作码、操作数、字节数、周期数如下表1所示。仿真的结果如图5所示。图中rom_data_i表示的程序存储器中的数据;rom_adr_o是程序计数器PC的值;state_i为芯片内部信号,指示的是指令执行的状态,“7”表示在取指令状态,其他值为执行状态。acc_o是内部寄存器ACC的值。从图中可以清楚的看到各信号的变化。
表1 仿真指令表
指令助记符 | 操作码 | 操作数 | 指令字节 | 指令周期 |
AJMP FFH | 01H | FFH | 2 | 2 |
CPL | F4H | / | 1 | 1 |
MOV A,#23H | 74H | 23H | 2 | 2 |
MOV R0,A | F8H | / | 1 | 1 |
MOV23H,#05H | 75H | 23H,5H | 3 | 3 |
ADDC A, @R0 | 36H | / | 1 | 2 |
图4 8051-Core软件仿真图
5 结束语
嵌入式微处理器具有广泛的应用前景,特别是随着信息技术的发展,信息安全性和可靠性正逐步受到人们的重视。在FPGA的可用门和性能对高档功能的支持中,IP核的价值正在充分展现。IP核已成为有效地进行大规模设计和缩短设计时间的基础。因此,积极开发具有自主知识产权的IP模块,在SoC领域占有一席之地,即符合我国国情,有具有重要意义。本课题设计出的MSC-51系列单片机IP核不仅通过了软件仿真,而且其功能已经通过了硬件测试,所以其不仅是一个成熟的软IP核,也是一个成熟的硬IP核。
本项目经济效益:本IP核主要应用于SoC中,向相关有偿机构购买类似IP核一次的使用价格在3美元左右,但是附带开发工具在300美元左右,本IP核完全利用免费版本的MAX+plusⅡ进行设计以及后期使用,因此若本IP核应用3000次,那么项目的经济效益在8万元左右。
本文作者创新点:本次要设计的兼容MCS-51单片机IP核有以下特色:1.完全同步的设计,系统在统一的时钟下工作。2.指令集与工业标准的MCS-51系列单片机完全兼容。3.指令周期较原MCS-51系列大幅提高,所有指令都可在1到4个时钟周期内完成,时钟周期只与所选用的FPGA/CPLD芯片的延时有关,而与设计无关。4.没有复用的I/O口。5.IP核升级方便,对于不需要的部件可以任意裁减。