PT2000 Dev Studio产生的微码解析一-微核简介
0、目的和背景
本文针对PT2000SWUG.pdf(NXP官网可下载)的主要内容提炼说明,不对整个文件进行介绍
1、block diagram
如下图,主要资源如下:
1)有5个通用寄存器(16bit),GPR0~GPR4
2)有1个立即寄存器(16bit)
3)2个乘法寄存器(16bit),GPR6(储存32bit的高16bit)和GPR7(储存32bit的低16bit)
4)运算逻辑状态寄存器(16bit),存储运算过程中的状态,如指示运算完成、有符号运算的上下溢出、无符号运算的上下溢出、加减法正负号指示位、进位等,具体在PT2000SWUG.pdf的2.2.1章节详细说明,应该不难,熟读资料可以理解,不赘述。
5)运算逻辑内核
主要完成加减法、乘法、逻辑运算、移位等,PT2000SWUG.pdf(NXP官网可下载)的2.2章节详细说明。
6)指令解码器
主要完成指令的解码,基本可执行以下四种:
a.直接跳转
b.有条件跳转
c.子程序执行
d.等待状态
关于寄存器关键字在以下,还有上文未提到的辅助寄存器、4个计数器(cnt1~cnt4)和4个结束计数器(eoc1~eoc4)等
2、start管理
主要提供如下功能:
1)对start硬线输入信号消抖
2)转换为内部的gen_start(产生start信号)、start_latch(锁存start信号)
3)管理smart latch模式
主要原理是start1和start2同时来信号时,必须发送reset_start_latch后start2方能gen_start信号,理解为避免同一个bank的start1和start2同时工作。
3、等待指令
等待指令只要有以下3个,这些也是常用到。
等待表(就是满足什么条件做什么事情,一般为满足条件跳转到哪段微码执行,基本就是跳转)仅有6个可使用,如下:
1)cwef指令
创建等待表
注意:仅为等待表的创建,程序是不执行什么具体任务的。如要执行可使用wait rowx,就是等待等待表满足条件跳转到指定位置的微码执行)
主要有三个参数
a.op1,可选只有jr1和jr2寄存器(跳转寄存器1和2),意味者满足条件后跳转到jr1或jr2里存的入口地址对应的代码运行。
b.cond
条件参数有很多,举例如设为 _start表示满足start为低电平时候跳转到jr1或jr2存的入口地址对应的微码行运行。
c.Entry
就是把上面的设置放下面的哪个row
2)cwer指令
和cwef指令的区别只有第1个参数由op1(jr1或jr2)换成了dest(目标)。
dest可以是微码里编程的文字标签(此文字标签IDE编译器自动分配入口地址)
3)wait指令
wait指令需与cwef或cwer配合使用。就是cwef或cwer创建了等待表(即rowx)后,使用wait rowx去触发等待表运行。
4、子程序指令
子程序跳转指令有3个
1)jtsf
就是跳转到op1(即jr1或jr2)里存的入口地址对应的微码
2)jtsr
就是跳转到dest里存的入口地址(可以是行标签编译后的地址)对应的微码
3)rfs
从子程序里返回到辅助寄存器存的入口地址对应的微码
未完待续