其他人没有意见,吕辰在存储模块那一栏写了几个字:“kL-mc:配合LoadstoRe实现。”
Io读写指令一共1o条。
In、out、Ins、outs、Read_adnetcodeR、set_steppeR
“这一类指令最多。”
吕辰的声音提高了一些,“工业控制的核心就是读传感器、写执行器。这1o条指令,每一条都对应一种或几种Io操作。”
他在黑板上画了一张表,左边写上指令,右边空着。
“现在,咱们来讨论各Io读写指令的对应芯片。”
钱兰道:“按照咱们的架构,Io操作要放在专用芯片里,所以这些指令,不全部做在主控制核心里。”
吕辰点了点头:“主控核心只负责指挥,不负责干活。干活的事,交给专用芯片。这样主控核心的设计就简单了,不需要集成各种模拟电路和接口逻辑。”
经过讨论,Inout放在数字量输入输出芯片;Insouts放在串行通信控制器;Read_adc放在模拟量输入芯片……
移位指令仅有4条,分别是shL、shR、RoL、RoR。
这个比较好定,移位指令用于数据处理,比如协议解析、编解码。
这些指令逻辑简单,但执行频率不低。
因此,放在主控核心的aLu里,和算术逻辑单元共用数据通路。
位操作指令也只有3条,bset、bcLR、btst,这些指令硬件实现很容易,放主控核心。
系统控制指令虽然同样是3条,但是就比较考量。
nop是空操作,haLt是停机,dR是看门狗复位。
dR指令很重要,工业控制不能死机,看门狗定时器需要程序定期‘喂狗’,如果程序跑飞了,没有及时喂狗,看门狗就会自动复位系统。
因此,dR指令需要和电源管理芯片里的看门狗定时器配合。
在执行dR时,主控核心通过控制总线告诉电源管理芯片喂狗了,定时器清零。
最后是两条特殊指令I和RdtIm,前者是软件中断,用于系统调用。后者是读时钟,用于实时任务调度。
讨论完毕,吕辰在黑板上写完最后一行字,放下粉笔,转过身。
“48条指令,分配完毕。咱们来总结一下。”
“主控制核心,硬件实现4o条高频指令,算术逻辑、分支跳转、数据传送、移位、位操作、系统控制、特殊指令中的I和RdtIm。冗余监控核心同上,2颗定点运算器,实现乘除法和移位操作,加运算,存储模块……”
吕辰讲完,会议室里安静了几秒。
钱兰第一个开口:“吕辰,你把Io指令和专用芯片的对应关系写成一张表,这个方法不错,以后写微程序的时候,程序员能查。”
曾祺赞同:“依我看,咱们得整理一个《Io指令与芯片映射手册》,我看这个事,我来负责吧。”
诸葛彪问了一句:“那8条没有硬件化的低频指令,放在程序存储器里的微程序,谁来写?”
吕辰想了想:“这点事情不大,不用麻烦程序设计院,我拿去交给李师兄,这些没有硬件化的指令,最终都是要放进工业计算机的微程序库的。”
诸葛彪把烟掐灭在烟灰缸里,站起来伸了个懒腰。