60KS

字:
关灯 护眼
60KS > 四合院:我是雨水表哥 > 第540章 设计进行时

第540章 设计进行时(1/4)

    第二天一早,第八组设计室,工业计算机26颗芯片的分配图挂在黑板上。

    吕辰手里拿着《精简指令集体系结构与编码表》,站在黑板前。

    台下坐着诸葛彪、钱兰、曾祺,以及七个设计小队42名成员。

    “咱们的精简指令集,理论组已经设计完毕,我们在午马机上跑通了。48条指令,全部验证通过。”吕辰开门见山,“今天,咱们把这48条指令,分配到26颗芯片里。”

    他翻开编码表,指着第一页的总表。

    “按照咱们最初的设计,使用频率最高的指令,要做在主控核心和运算器里,单周期执行。I/o和特殊指令,分配到对应的专用芯片里。这些指令直接和硬件打交道,必须和对应的接口芯片协同设计。”

    他放下手,看着台下:“下面,一项一项过。”

    第一类是算术逻辑指令,一共是12条,吕辰在黑板上依次写了下来。

    Add、SUb、mUL、dIV、ANd、oR、xoR、Not、cmp、INc、dEEG

    钱兰道:“这12条指令,是工业控制最常用的,几乎每个控制回路都要用。必须全部硬件化,放在主控制核心和定点运算器里。”

    大张海举手:“mUL和dIV也硬件化?乘法器和除法器面积可不小。”

    曾祺回应道:“工业控制里的乘除,大部分是乘除常数,比如pId算法里的系数乘。做简单乘法器就够了,不需要32位乘32位的复杂单元。用移位加实现,面积小,速度够用。”

    其他人没有意见,吕辰点点头:“主控核心:算术逻辑单元ALU,支持12条指令。”

    第二类是分支跳转指令,一共8条。

    Jmp、JZ、JNZ、Jc、cALL、REt、INt

    诸葛彪道:“这些指令控制程序流程。中断、子程序调用、条件跳转,实时性要求高。”

    钱兰特别指出“INt”和“cALL”:“中断响应要在几个时钟周期内完成,所以中断现场保存必须硬件自动完成,不能用微程序。”

    其他人没有意见,吕辰在中央处理模块那一栏画了一个箭头,指向主控制核心。

    “全部放在主控制核心。”

    第三类是数据传送指令,一共6条。

    moV、LoAd、StoRE、pUSh、pop、xchG

    吕辰指着黑板:“moV是寄存器之间传数据,LoAd/StoRE是寄存器和内存之间传数据。这些指令的执行频率极高,一个温度控制回路里,有一半指令是数据传送。”

    周建国道:“LoAd/StoRE要访问内存,地址计算和总线时序怎么处理?”

    吕辰在黑板上画了一个简图。

    “地址计算放在主控制核心,总线访问由存储控制器(KL-mc)配合完成。LoAd指令执行时,主控核心把地址发到地址总线,存储控制器从内存读数据,放回数据总线,主控核心再把数据写进寄存器。”

    其他人没有意见,吕辰在存储模块那一栏写了几个字:“KL-mc:配合LoAd/StoRE实现。”

    I/o读写指令一共10条。

    IN、oUt、INS、oUtS、REAd_Adc、wRItE_dAc、REAd_tEmp、SEt_pwm、REAd_ENcodER、SEt_StEppER

    “这一类指令最多。”吕辰的声音提高了一些,“工业控制的核心就是读传感器、写执行器。这10条指令,每一条都对应一种或几种I/o操作。”

    他在黑板上画了一张表,左边写上指令,右边空着。

    “现在,咱们来讨论各I/o读写指令的对应芯片。”

    钱兰道:“按照咱们的架构,I/o操作要放在专用芯片里,所以这些指令,不全部做在主控制核心里。”

    吕辰点了点头:“主控核心只负责指挥,不负责干活。干活的事,交给专用芯片。这样主控核心的设计就简单了,不需要集成各种模拟电路和接口逻辑。”

    经过讨论,IN/oUt放在数字量输入/输出芯片;INS/oUtS放在串行通信控制器;REAd_Adc放在模拟量输入芯片……

    移位指令仅有4条,分别是ShL、ShR、RoL、RoR。

    这个比较好定,移位指令用于数据处理,比如协议解析、编解码。

    这些指令逻辑简单,但执行频率不低。

    因此,放在主控核心的ALU里,和算术逻辑单元共用数据通路。

    位操作指令也只有3条,bSEt、bcLR、btSt,这些指令硬件实现很容易,放主控核心。

    系统控制指令虽然同样是3条,但是就比较考量。

    Nop是空操作,hALt是停机,wdR是看门狗复位。

    wdR指令很重要,工业控制不能
本章未完,请点击下一页继续阅读》》
『加入书签,方便阅读』
内容有问题?点击>>>邮件反馈