CN103645887B - 双指令多浮点操作数加/减、乘、除运算控制器 - Google Patents
双指令多浮点操作数加/减、乘、除运算控制器 Download PDFInfo
- Publication number
- CN103645887B CN103645887B CN201310694831.9A CN201310694831A CN103645887B CN 103645887 B CN103645887 B CN 103645887B CN 201310694831 A CN201310694831 A CN 201310694831A CN 103645887 B CN103645887 B CN 103645887B
- Authority
- CN
- China
- Prior art keywords
- operand
- output terminal
- write
- read
- input terminus
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Programmable Controllers (AREA)
Abstract
一种双指令多浮点操作数加/减、乘、除运算控制器,包括双端口只读只写存储器、命令字及其多操作数写时序控制模块、浮点操作数读时序控制模块、存储器数据空标志控制器和操作数配置及运算控制模块;该控制器应用FPGA设计硬连接控制电路,内部产生的写时序脉冲控制命令字和操作数的连续写入;产生与Clock同步的读时序脉冲自主控制四则混合运算;控制器能够存储两条指令,其中,一条指令执行,另一条指令待执行;或一条指令正在执行,另一条指令写入;或一条指令正在写入,同时被执行;运算命令执行过程不占用系统总线,执行一条指令相当于微处理器执行多条指令,减少了系统对指令的取指、译码、浮点操作数传输和运算结果写回的操作次数。
Description
技术领域
本发明涉及一种双指令多浮点操作数加/减、乘、除运算控制器,尤其涉及一种基于采用FPGA并行操作电路硬连接的双指令多浮点操作数加/减、乘、除四则混合运算控制电路及其时序控制方法。
背景技术
浮点数加/减、乘、除的四则混合运算是高精度数据运算应用频率非常高的算术运算,每个运算类型的运算器实现2个32位符合IEEE754标准的浮点数运算;对于大多数微处理器的算术运算指令,每条指令执行2个操作数的运算;对于高级语言的四则混合运算命令都是采用自然的书写方式表达,高级语言的编译或翻译系统中将四则混合运算公式转化为微处理器能够识别的二进制代码的指令序列,即2个操作数的运算组成一条运算指令,以及若干条操作数传输指令和运算结果传输指令;微处理器需要逐条读出指令进行译码,传输操作数、运算、结果写回的操作;浮点数加/减、乘、除的四则混合运算中,加/减运算花费时钟周期时间最少,乘法运算次之,除法运算比加/减运算、乘法运算将花费数倍的时间周期,采用流水线执行浮点数加/减、乘、除的四则混合运算的指令序列,下次运算必须应用上次运算结果,每次运算时间周期和结果写回运算器操作数输入端是影响执行浮点数加/减、乘、除的四则混合运算指令序列速度的瓶颈。
发明内容
本发明的目的在于提供一种双指令多浮点操作数加/减、乘、除运算控制器,应用FPGA设计双指令多浮点操作数加/减、乘、除四则混合运算控制器的硬连接电路;该控制器对于一条多浮点操作数运算指令的命令字及其多操作数采取连续写入存储的方法,其写入存储过程占用系统总线;控制器在执行多浮点操作数加/减、乘、除运算命令过程中,内部产生与系统时钟Clock信号同步的读时序脉冲信号,读时序脉冲的周期根据每个浮点操作数的运算符能够自动调整,在读时序脉冲信号控制下自主完成读出操作数执行运算,多浮点操作数运算指令的命令执行过程不占用系统总线;该控制器能够存储两条多浮点操作数四则混合运算指令,控制器处于一条指令正在执行处理,另一条指令待执行;或一条指令正在执行运算处理,另一条指令的命令字及其多操作数正在写入控制器;或一条指令的多操作数正在写入控制器,且操作数同时被读出;控制器在执行指令的运算命令处理过程中,系统能够读出执行运算命令过程中的中间运算结果和最终运算结果。
解决上述技术问题的技术方案是:一种双指令多浮点操作数加/减、乘、除运算控制器,包括双端口只读只写存储器、命令字及多操作数写时序控制模块、浮点操作数读时序控制模块、存储器数据空标志控制器和操作数配置及运算控制模块;
所述双端口只读只写存储器与命令字及多操作数写时序控制模块、浮点操作数读时序控制模块、操作数配置及运算控制模块连接;
所述命令字及多操作数写时序控制模块还与浮点操作数读时序控制模块、存储器数据空标志控制器、操作数配置及运算控制模块连接;
所述浮点操作数读时序控制模块还与存储器数据空标志控制器、操作数配置及运算控制模块连接;
所述双端口只读只写存储器为双端口存储器,一个只写端口,一个只读端口,用于储存两条指令的浮点操作数(下称为操作数);所述双端口只读只写存储器分为存储器1和存储器2两个存储区域;所述双端口只读只写存储器的写地址高位输入端AB4_1为“0”,或读地址高位输入端AB4_2为“0”,选中双端口只读只写存储器的13个低地址存储单元,即存储器1;写地址高位输入端AB4_1为“1”,或读地址高位输入端AB4_2为“1”,选中双端口只读只写存储器的13个高地址存储单元,即存储器2;
所述命令字及多操作数写时序控制模块控制完成指令的写入和存储,需要占用系统总线;一条指令包括32位命令字和若干个操作数,操作数最多为13个;所述命令字及多操作数写时序控制模块在双端口只读只写存储器的存储器1或存储器2为数据空,输出写指令允许信号,方允许被系统选中;当被系统选中写命令字时,在系统WR信号的作用下,写入命令字;当被系统选中写操作数时,其内部产生与系统WR信号同步的写时序脉冲;在写时序脉冲的控制下,将操作数存储在双端口只读只写存储器的存储器1或存储器2中;一条指令的最后一个操作数被写入存储后,转换双端口只读只写存储器的写高位地址输入端AB4_1状态;如果双端口只读只写存储器的存储器1和存储器2都非空,停止命令字及多操作数写时序控制模块的工作;
所述命令字及多操作数写时序控制模块将写入的命令字分为待执行命令字存储和执行命令字的存储,执行命令字分为第1个操作数类型、第1个操作数除法运算方式和操作数个数的存储、每个操作数的运算符标志的存储;
所述浮点操作数读时序控制模块在内部读时序脉冲的控制下,自主完成浮点操作数从双端口只读只写存储器中的读出,不需要占用系统总线;所述浮点操作数读时序控制模块产生与系统时钟Clock信号同步的读时序脉冲序列,按顺序将操作数读出参与运算,按照每个操作数的运算符自动调整运算周期;当参与运算的最后一个操作数读出之后,产生读地址溢出信号,然后再经过一个该操作数的运算周期,发出读运行状态结束的信号,产生一个时钟周期Clock的结果锁存脉冲,然后再发出启动使能信号;
所述浮点操作数读时序控制模块依据存储器数据空标志控制器的空标志状态读出操作数,有下面4种工作状态:
1)所述存储器数据空标志控制器无存储器1空、存储器2空的标志输出,表明存储器1、存储器2都为数据非空,一个非空的存储器正在写入指令或写入指令过程已结束,另一个存储器正在读出操作数;若正在执行的命令运算过程结束,启动使能信号由“1”→“0”,转为一个存储器空,另一个存储器非空的状态,此时在命令运算过程结束后的第1个系统时钟Clock的下降沿作为时序脉冲发生的启动信号,向系统发送写指令允许信号;启动浮点操作数读时序控制模块的工作;
2)所述存储器数据空标志控制器输出任何一个存储器空的标志空,会处于两种操作状态,一是非空的存储器正在写入操作数,该存储器同时执行读出操作;二是非空的存储器写入指令过程已结束,正在执行读出操作;若命令运算过程结束,启动使能信号由“1”→“0”,转为存储器1和存储器2都空的状态;
3)所述存储器数据空标志控制器同时输出存储器1空、存储器2空的标志,停止浮点操作数读时序控制模块的工作,向系统发送写指令允许信号;
4)所述存储器数据空标志控制器同时输出存储器1空、存储器2空的标志,且命令字及多操作数写时序控制模块再次被系统选中写入命令字,命令字及多操作数写时序控制模块输出写预置脉冲作为浮点操作数读时序控制模块的内部时序脉冲发生器的启动信号;
所述操作数配置及运算控制模块根据命令字及多操作数写时序控制模块输出的运算符选择参与运算的每个操作数对应的运算器进行运算,根据输出的第1个操作数的类型选通配置参与加/减或乘法运算的操作数1和操作数2,第1个操作数为除法运算时,还需要根据第1个操作数除法运算方式选通配置参与除法运算的操作数a和操作数b;所述操作数配置及运算控制模块能够锁存每次运算的运算结果,并判断运算结果是否异常;系统能够从操作数配置及运算控制模块中读出中间运算结果和命令执行的最终运算结果。
其进一步技术方案是:所述命令字及多操作数写时序控制模块包括模块地址识别、写高位地址控制器、写端口地址计数器、写端口脉冲发生控制器、待执行命令字寄存器、方式类型个数寄存器、运算符移位寄存器、非门Ⅰ、非门Ⅱ、或门Ⅰ、或门Ⅱ、或门Ⅲ、与门Ⅰ、与门Ⅱ和与门Ⅲ;
所述模块地址识别输入端和系统地址总线AB的A31到A27线连接,CS1输出端和或门Ⅱ的一个输入端连接,CS2输出端和或门Ⅲ的一个输入端、写端口脉冲发生控制器的使能输入端、操作数配置及运算控制模块连接;
所述模块地址识别内部设置两个地址值,一个是写命令字地址值,一个是写操作数地址值;所述模块地址识别输入的A31到A27地址值与模块地址识别中设置的地址值进行比较,如果和写命令字地址值相等,则输出CS1为“0”,如果和写操作数地址值相等,则输出CS2为“0”;在任何时刻,CS1和CS2只有一个输出为“0”,或输出都为“1”;
所述写高位地址控制器的锁存信号输入端与写端口地址计数器的写溢出输出端连接,写高位地址输入端和非门Ⅱ的输出端连接,复位输入端和与门Ⅱ的输出端连接,输出端和非门Ⅱ的输入端、双端口只读只写存储器的写地址高位输入端AB4_1、存储器数据空标志控制器连接;
所述写高位地址控制器输出的是双端口只读只写存储器的最高位地址值AB4_1;当双端口只读只写存储器的存储器1和存储器2的数据都空时,或者当系统复位信号Rst为“0”时,复位写高位地址控制器,其输出为“0”;当写高位地址控制器的锁存信号输入端由“1”→“0”时,写高位地址控制器输出端输出的AB4_1状态翻转;
所述写高位地址控制器的操作数个数输入端与系统数据总线DB的D3到D0线连接,写预置脉冲输入端和或门Ⅱ的输出端连接,写计数脉冲输入端与写端口脉冲发生控制器的脉冲②_1输出端连接,写复位输入端和系统复位信号Rst线连接,写地址输出端与双端口只读只写存储器的写地址输入端AB_1连接,写溢出输出端还和写端口脉冲发生控制器的写溢出输入端、非门Ⅰ的输入端、存储器数据空标志控制器连接;
所述写端口地址计数器实质上是一个减1计数器,系统数据总线DB的D3到D0传输的是参与加/减、乘、除运算的操作数个数值,当双端口只读只写存储器的存储器1空或存储器2空,且满足模块地址识别的CS2输出端为“0”时,WR信号作为写预置脉冲将操作数个数值作为双端口只读只写存储器写端口的低4位地址初值预置给写端口地址计数器,并将写溢出输出端设置为“1”状态;
所述写端口地址计数器的写地址输出端输出双端口只读只写存储器的写端口低4位地址值AB_1;当写计数脉冲输入端来一个计数脉冲时,写端口地址计数器进行一次-1操作,直到写地址输出端为“0”,AB_1为“0”,此时写溢出信号输出端由“1”→“0”,写溢出信号作为写端口地址计数器停止工作的标志,使得写高位地址控制器的锁存信号输入端由“1”→“0”时,写高位地址控制器输出的AB4_1状态翻转;写端口地址计数器在系统复位信号Rst的作用下,复位写端口地址计数器,使得写溢出信号输出端为“0”状态;
所述写端口脉冲发生控制器的同步脉冲输入端与系统写信号WR线连接,启动输入端和与门Ⅲ的输出端连接,复位输入端和系统复位信号Rst线连接,脉冲①_1输出端和双端口只读只写存储器的写信号输入端WR_1连接;
所述写端口脉冲发生控制器的使能输入端为“0”,在启动输入端的脉冲信号作用下启动工作,发出与系统WR脉冲同步的脉冲①_1和脉冲②_1,脉冲①_1作为双端口只读只写存储器的写入信号WR_1,脉冲②_1作为写端口地址计数器的写计数脉冲;所述写端口地址计数器的写溢出信号输出端由“1”→“0”,写端口脉冲发生控制器停止工作,脉冲①_1和脉冲②_1的输出端为“1”状态;
所述待执行命令字寄存器的命令字输入端和系统数据总线DB的D31到D0线连接,锁存信号输入端和或门Ⅱ的输出端连接,输出端的低6位与方式类型个数寄存器的输入端连接,输出端的高26位与运算符移位寄存器的输入端连接;
所述方式类型个数寄存器的锁存信号输入端与浮点操作数读时序控制模块连接,类型输出端、读操作数个数输出端与浮点操作数读时序控制模块连接,方式输出端与操作数配置及运算控制模块连接;
所述运算符移位寄存器的锁存信号输入端与浮点操作数读时序控制模块连接,移位脉冲输入端与浮点操作数读时序控制模块连接,运算符输出端与浮点操作数读时序控制模块和操作数配置及运算控制模块连接;
所述非门Ⅰ的输出端和或门Ⅰ的一个输入端连接;
所述或门Ⅰ的另一个输入端和与门Ⅰ的输出端连接,输出端向系统输出写指令允许信号;
所述或门Ⅱ的另二个输入端分别和与门Ⅰ的输出端、系统WR写信号线连接,输出端作为写预置信号还与浮点操作数读时序控制模块连接;
所述或门Ⅲ的另一个输入端与系统WR写信号线连接,输出端和与门Ⅲ的一个输入端连接;
所述与门Ⅰ的二个输入端分别与存储器数据空标志控制器的存储器1空输出端、存储器2空输出端连接,输出端还和与门Ⅲ的另一个输入端连接;
所述与门Ⅱ的一个输入端与存储器数据空标志控制器的存储器1存储器2都空输出端连接,另一个输入端与系统Rst复位信号线连接。
其进一步技术方案是:所述浮点操作数读时序控制模块包括读高位地址控制器、读端口地址计数器、读端口脉冲发生控制器、异或非门、非门Ⅲ、非门Ⅳ、或门Ⅳ、或门Ⅴ、与门Ⅳ、与门Ⅴ、与门Ⅵ、与门Ⅶ和与门Ⅷ;
所述读高位地址控制器的锁存信号输入端与读端口地址计数器的读溢出输出端连接,读高位地址输入端和非门Ⅲ的输出端连接,复位输入端和与门Ⅳ的输出端连接,输出端和双端口只读只写存储器的读地址高位输入端AB4_2、非门Ⅲ的输入端、存储器数据空标志控制器连接;
所述读高位地址控制器输出的是双端口只读只写存储器读端口的最高位地址值AB4_2,当双端口只读只写存储器的存储器1和存储器2的数据都空时,或者当系统复位信号Rst为“0”时,复位读高位地址控制器,其输出端为“0”;当读高位地址控制器的锁存信号输入端由“1”→“0”时,读高位地址控制器输出的AB4_2状态翻转;
所述读端口地址计数器的读预置脉冲输入端与读端口脉冲发生控制器的脉冲②_2输出端连接,读计数脉冲输入端和与门Ⅷ的输出端连接,复位输入端和与门Ⅵ的输出端连接,读操作数个数输入端与方式类型个数寄存器的读操作数个数输出端连接,读溢出输出端还与读端口脉冲发生控制器的读溢出输入端、存储器数据空标志控制器的读溢出输入端连接,读地址输出端与双端口只读只写存储器的读地址输入端AB_2连接;
所述读端口地址计数器实质上是一个减1计数器,读预置脉冲将来自方式类型个数寄存器输出的读操作数个数预置给读端口地址计数器,使得读端口地址计数器的读地址输出端输出的地址值AB_2为读操作数个数,读端口地址计数器从读操作数个数开始进行-1计数,;当读计数脉冲输入端来一个计数脉冲时,读端口地址计数器输出的读地址值-1,直到读地址输出端为“0”,AB_2为“0”,表示正在执行命令的最后一个操作数已读出,读溢出信号输出端由“1”→“0”,读溢出信号也是读端口地址计数器停止工作的标志;当输入复位信号为“0”时,复位读端口地址计数器,读端口地址计数器停止计数工作,读溢出输出端为“0”;
所述读端口脉冲发生控制器的同步脉冲输入端与系统时钟信号Clock线连接,启动输入端和与门Ⅴ的输出端连接,复位输入端和与门Ⅵ的输出端连接,类型输入端与方式类型个数寄存器的类型输出端连接,运算符输入端与运算符移位寄存器的运算符输出端连接;脉冲①_2输出端与方式类型个数寄存器和运算符移位寄存器的锁存信号输入端连接,脉冲③_2输出端和与门Ⅶ的一个输入端、操作数配置及运算控制模块连接,脉冲④_2输出端和与门Ⅷ的一个输入端、操作数配置及运算控制模块连接,脉冲⑤_2输出端和与门Ⅶ的另一个输入端连接,脉冲⑥_2输出端和与门Ⅷ的另一个输入端连接,脉冲⑦_2输出端和操作数配置及运算控制模块连接,脉冲⑧_2输出端和操作数配置及运算控制模块连接,读运行状态输出端与存储器数据空标志控制器的读运行状态输入端连接,启动使能输出端和或门Ⅴ的一个输入端、存储器数据空标志控制器的启动使能输入端连接;
所述读端口脉冲发生控制器输出的脉冲与系统时钟Clock同步;当双端口只读只写存储器的存储器1或存储器2为数据空,启动使能输出端由“1”→“0”时,启动读端口脉冲发生控制器开始工作;当双端口只读只写存储器的存储器1和存储器2都为数据空时,在写预置脉冲的作用下启动输出端由“1”→“0”,启动读端口脉冲发生控制器开始工作;启动的同时置读端口脉冲发生控制器的读运行状态输出端为“0”和启动使能输出端为“1”状态;当读运行状态为“1”时,表明当前命令的运算过程已执行结束;当启动使能信号为“0”时,表明没有命令在执行,以及执行命令的运算结果已锁存;
所述读端口脉冲发生控制器根据类型输入信号为“0”还是为“1”,确定控制双端口只读只写存储器中读操作数的脉冲序列;读端口地址计数器输出的读溢出信号由“1”→“0”,置脉冲⑥_2输出端为“1”,读端口脉冲发生控制器再经过一个运算周期时间,读运行状态输出端由“0”→“1”,并发出一个系统时钟Clock周期锁存最终运算结果的脉冲⑦_2,启动使能输出端由“1”→“0”,停止读端口脉冲发生控制器的工作,置所有脉冲输出端为“1”状态;当输入的复位信号为“0”时,复位读端口脉冲发生控制器,复位使得读运行状态输出端为“1”状态,启动使能输出端为“0”,置所有脉冲输出端为“1”状态,并停止读端口脉冲发生控制器的工作;
所述读端口脉冲发生控制器根据运算符输入端输入的每个参与运算的操作数运算符,自动调整对应每个操作数的运算周期时间;
所述异或非门的二个输入端分别与存储器数据空标志控制器的存储器1空输出端、存储器2空输出端连接,输出端和或门Ⅴ的另一个输入端连接;
所述非门Ⅳ的输入端和或门Ⅱ的写预置信号输出端连接,输出端和或门Ⅳ的一个输入端连接;
所述或门Ⅳ的另一个输入端和存储器数据空标志控制器的存储器1存储器2都空输出端连接,输出端和与门Ⅴ的一个输入端连接;
所述或门Ⅴ的输出端和与门Ⅴ的另一个输入端连接;
所述与门Ⅳ的一个输入端与存储器数据空标志控制器的存储器1存储器2都空输出端连接,另一个输入端和系统复位信号Rst线连接;
所述与门Ⅵ的一个输入端与系统复位信号Rst线连接,另一个输入端和操作数配置及运算控制模块连接;
所述与门Ⅶ的输出端与双端口只读只写存储器的读操作数输入端RD_2、运算符移位寄存器的移位脉冲输入端连接;
所述与门Ⅶ的输出是双端口只读只写存储器读端口的读操作数信号RD_2,也是运算符移位寄存器的移位脉冲,从双端口只读只写存储器读出一个操作数,运算符移位寄存器中的运算符数据按照顺序向右移位2位,其最低2位作为运算符输出,每个操作数的运算类型由输出的2位运算符决定。
其进一步技术方案是:所述操作数配置及运算控制模块包括选通器、结果寄存器、浮点数加/减运算器、浮点数乘运算器、浮点数除运算器、操作数交换器、运算异常标志控制、32位三态门组、与门Ⅸ、与门Ⅹ、或门Ⅵ和或门Ⅶ;
所述选通器的一个输入端与双端口只读只写存储器的读数据输出端DB_2连接,另一个输入端与浮点数加/减运算器、浮点数乘运算器和浮点数除运算器的运算结果输出端连接,选通控制输入端和与门Ⅸ的输出端连接,输出端与结果寄存器的输入端连接;
所述结果寄存器的锁存信号输入端和与门Ⅹ的输出端连接,输出端与浮点数加/减运算器、浮点数乘运算器的操作数1输入端连接、操作数交换器的操作数1输入端连接,以及与32位三态门组的输入端连接;
所述浮点数加/减运算器的操作数2输入端和双端口只读只写存储器的操作数输出端DB_2连接,运算符输入端和运算符移位寄存器的运算符输出端连接,运算结果输出端还与运算异常标志控制的输入端连接;
所述浮点数乘运算器的操作数2输入端和双端口只读只写存储器的操作数输出端DB_2连接,运算符输入端和运算符移位寄存器的运算符输出端连接,运算结果输出端还与运算异常标志控制的输入端连接;
所述浮点数除运算器的操作数a和操作数b输入端分别与操作数交换器的二个输出端连接;运算符输入端和运算符移位寄存器的运算符输出端连接,输出端还与运算异常标志控制的输入端连接;
所述操作数交换器的操作数2输入端和双端口只读只写存储器的操作数输出端DB_2连接,交换控制端和或门Ⅵ的输出端连接;
所述运算异常标志控制的锁存信号输入端与读端口脉冲发生控制器的锁存结果脉冲⑦_2输出端连接;IRQ输出端和与门Ⅵ的一个输入端连接,IRQ输出端还向系统输出中断请求信号IRQ;当中间运算结果或最终运算结果出现异常时,所述运算异常标志控制向系统发出中断请求信号IRQ,并复位读端口地址计数器和读端口脉冲发生控制器,停止浮点操作数读时序控制模块的工作;
所述32位三态门组的输出端与系统数据总线DB连接,控制端和或门Ⅶ的输出端连接;
所述与门Ⅸ的二个输入端分别与读端口脉冲发生控制器的脉冲③_2、脉冲④_2输出端连接;
所述与门Ⅹ的二个输入端分别与读端口脉冲发生控制器的脉冲④_2、脉冲⑦_2输出端连接;
所述或门Ⅵ的二个输入端分别与读端口脉冲发生控制器的脉冲⑧_2输出端、方式类型个数寄存器的方式输出端连接;
所述或门Ⅶ的二个输入端分别与模块地址识别的CS2信号输出端、系统读信号RD线连接;当CS2为“0”时,在系统RD信号的作用下,读出中间运算结果或命令执行的最终运算结果。
其进一步技术方案是:所述浮点操作数读时序控制模块与方式类型个数寄存器的类型输出端连接;所述操作数配置及运算控制模块与方式类型个数寄存器的方式输出端、运算符移位寄存器的运算符输出端连接;所述方式类型个数寄存器输出的类型是指从双端口只读只写存储器读出的第1个操作数的类型,输出的方式是指类型0时,第1个操作数参加除法运算的处理方式;运算符移位寄存器输出的运算符是操作数参与运算的符号;
运算符由二位代码标识组成:00:加法运算;01:减法运算;10:乘法运算;11:除法运算;
操作数类型由一位代码标识组成:0:操作数类型0;1:操作数类型1;
当读出第1个操作数参与加/减或乘法运算时,类型信号控制第1个操作数的运算方式;
操作数类型0:第1个操作数作为参与加/减或乘法运算的操作数2,运算结果作为操作数1,执行运算结果与第1个操作数运算;
操作数类型1:第1个操作数作为参与加/减、乘法运算的操作数1,第2个操作数作为操作数2,执行第1个操作数/第2个操作数的运算;
当操作数类型为“1”时,所述读端口脉冲发生控制器输出脉冲③_2、脉冲④_2;当脉冲③_2或脉冲④_2为“0”时,选通器的选通控制输入端为“0”,输出从双端口只读只写存储器读出的第1个操作数;当脉冲③_2和脉冲④_2都为“1”时,输出运算结果;
所述方式类型个数寄存器输出的类型和方式信号控制第1个操作数参加除法运算的操作数类型和除法方式:
当操作数类型为“0”时:操作数交换器的操作数1输入端为运算结果;操作数交换器的操作数2输入端为第1个操作数;
除法方式0:第1个操作数作为浮点数除运算器的操作数a,运算结果作为操作数b;当读第1个操作数和执行第1个操作数除法运算时,脉冲⑧_2为“0”有效,由于方式为“0”状态,使得操作数交换器的控制端为“0”,操作数交换器的2个输入和2个输出进行交换,执行第1操作数/运算结果的运算;
除法方式1:第1个操作数作为浮点数除运算器的操作数a,运算结果作为操作数b;当读第1个操作数和执行第1个操作数除法运算时,脉冲⑧_2为“0”有效,但方式为“1”状态,使得操作数交换器的控制端为“1”,操作数交换器的2个输入和2个输出不进行交换,执行第1个操作数/运算结果的运算;
当操作数类型为“1”时:第1个操作数的除法运算方式与输入的方式信号状态无关;所述读端口脉冲发生控制器不产生脉冲⑧_2信号,脉冲⑧_2输出端为“1”状态,使得操作数交换器的控制端为“1”,操作数交换器的2个输入和2个输出不进行交换;第1个操作数作为浮点数除运算器的操作数a,第2个操作数作为操作数b,执行第1个操作数/第2个操作数的运算。
由于采用以上结构,本发明之多浮点操作数加/减、乘、除运算控制器具有以下有益效果:
一、一条指令的命令字及其多浮点操作数能够连续写入存储
本发明之双指令多浮点操作数加/减、乘、除运算控制器内部设置有一个双端口只读只写存储器,在指令的命令字被写入后,在内部与系统WR脉冲同步的写操作数时序脉冲的控制之下,按照顺序连续写入浮点操作数并存储在双端口只读只写存储器中。
二、自主控制完成多浮点操作数加/减、乘、除的四则混合运算
本发明之双指令多浮点操作数加/减、乘、除运算控制器在指令的命令执行过程中,控制器内部产生与系统时钟Clock脉冲同步的读浮点操作数时序脉冲,根据每个浮点操作数的运算符,自动调整时序脉冲周期,控制器在读操作数时序脉冲的控制之下,自主完成指令的所有浮点操作数的加/减、乘、除的四则混合运算,控制器执行多浮点操作数的运算命令过程不受系统控制。
三.一条指令完成多个浮点操作数的加/减、乘、除运算
本发明之双指令多浮点操作数加/减、乘、除运算控制器中,每条指令能够有13个操作数,这样一条指令相当于相同加/减、乘、除运算的多条指令,减少了系统对指令的取指和译码、浮点操作数传输和运算结果写回的操作过程;另一方面,控制器能够使用上一条指令的运算结果与新写入指令的第1个浮点操作数进行运算。
四、自动选择执行第1个浮点操作数进行除法运算的处理方式
本发明之双指令多浮点操作数加/减、乘、除运算控制器按指令的要求,自主选择第1个浮点操作数的处理方式,即针对第1个浮点操作数进行除法运算时,对第1个浮点操作数有三种处理方式,一是第1个浮点操作数作为被除数,实施第1个浮点操作数/第2个浮点操作数的运算;二是第1个浮点操作数作为被除数,实施第1个浮点操作数/运算结果的运算;三是第1个浮点操作数作为除数,实施运算结果/第1个浮点操作数的运算。
五、双指令并行处理功能
本发明之双指令多浮点操作数加/减、乘、除运算控制器的双端口只读只写存储器分为存储器1和存储器2两个存储区域,用于存储两条指令的多浮点操作数;控制器能够处于正在读出一条指令的浮点操作数执行处理,另一条指令的运算命令待执行;或正在读出一条指令的浮点操作数执行运算处理,另一条指令正在从系统写入控制器;或正在从系统写入一条指令的浮点多操作数,且同时正在读出该指令的浮点操作数执行运算处理。
六、控制器性价比高
本发明之双指令多浮点操作数加/减、乘、除运算控制器以FPGA的硬连接控制电路为核心,实现多浮点操作数加/减、乘、除的四则混合运算,双指令的并行处理操作,运算过程不受系统控制;正在执行指令的运算命令过程中,能够读出中间运算结果,一条指令的运算命令执行结束,能够读出最终运算结果;一条多浮点操作数加/减、乘、除运算指令相当于相同运算的多条指令,减少了系统对指令的取指和译码、浮点操作数传输和运算结果写回的操作过程,提高了处理速度,具有较高的性价比。
下面结合附图和实施例对本发明之双指令多浮点操作数加/减、乘、除运算控制器的技术特征作进一步的说明。
附图说明
图1:本发明之双指令多浮点操作数加/减、乘、除运算控制器的系统结构框图;
图2:本发明之双指令多浮点操作数加/减、乘、除运算控制器的双端口只读只写存储器端口图;
图3:本发明之双指令多浮点操作数加/减、乘、除运算控制器的命令字及多操作数写时序控制模块的电路连接图;
图4:本发明之双指令多浮点操作数加/减、乘、除运算控制器的存储器数据空标志控制器端口图;
图5:本发明之双指令多浮点操作数加/减、乘、除运算控制器的浮点操作数读时序控制模块的电路连接图;
图6:本发明之双指令多浮点操作数加/减、乘、除运算控制器的操作数配置及运算控制模块的电路连接图;
图7:本发明之双指令多浮点操作数加/减、乘、除运算控制器的存储器1空逻辑判断图;
图8:本发明之双指令多浮点操作数加/减、乘、除运算控制器的存储器2空逻辑判断图;
图9:本发明之双指令多浮点操作数加/减、乘、除运算控制器的命令字格式图;
图10:本发明之双指令多浮点操作数加/减、乘、除运算控制器的写时序图;
图11:本发明之双指令多浮点操作数加/减、乘、除运算控制器的的存储器1或存储器2空启动时序图;
图12:本发明之双指令多浮点操作数加/减、乘、除运算控制器的存储器1和存储器2都空启动时序图;
图13:本发明之双指令多浮点操作数加/减、乘、除运算控制器的类型0读浮点操作数和结果锁存时序图;
图14:本发明之双指令多浮点操作数加/减、乘、除运算控制器的类型1读浮点操作数和结果锁存时序图;
图15:本发明之双指令多浮点操作数加/减、乘、除运算控制器的实施例二变换图。
图中:
Ⅰ—双端口只读只写存储器,Ⅱ—命令字及多其操作数写时序控制模块,Ⅲ—浮点操作数读时序控制模块,Ⅳ—存储器数据空标志控制器,Ⅴ—操作数配置及运算控制模块;
1—模块地址识别,2—写高位地址控制器,3—写端口地址计数器,4—写端口脉冲发生控制器,5—待执行命令字寄存器,6—方式类型个数寄存器,7—运算符移位寄存器,8—非门Ⅰ,9—非门Ⅱ,10—或门Ⅰ,11—或门Ⅱ,12—或门Ⅲ,13—与门Ⅰ,14—与门Ⅱ,15—与门Ⅲ,16—读高位地址控制器,17—读端口地址计数器,18—读端口脉冲发生控制器,19—异或非门,20—非门Ⅲ,21—非门Ⅳ,22—或门Ⅳ,23—或门Ⅴ,24—与门Ⅳ,25—与门Ⅴ,26—与门Ⅵ,27—与门Ⅶ,28—与门Ⅷ,29—选通器,30—结果寄存器,31—浮点数加/减运算器,32—浮点数乘运算器,33—浮点数除运算器,34—操作数交换器,35—运算异常标志控制,36—32位三态门组,37—与门Ⅸ,38—与门Ⅹ,39—或门Ⅵ,40—或门Ⅶ。
文中缩略语说明:
FPGA-FieldProgrammableGateArray,现场可编程门阵列;
DB-DataBus,数据总线;
AB-AddressBus,地址总线;
CS-ChipSelect,片选或使能,图中CS代表“使能信号”;
Clock-时钟;
RD-Read,读,图中代表“读信号”;
WR-Write,写,图中代表“写信号”;
IRQ-InterruptRequest,中断申请,图中代表“中断请求信号”;
Rst-Reset,复位。
具体实施方式
实施例一:一种双指令多浮点操作数加/减、乘、除运算控制器,如图1所示,该控制器包括双端口只读只写存储器Ⅰ、命令字及多操作数写时序控制模块Ⅱ、浮点操作数读时序控制模块Ⅲ、存储器数据空标志控制器Ⅳ和操作数配置及运算控制模块Ⅴ;
所述双端口只读只写存储器Ⅰ与命令字及多操作数写时序控制模块Ⅱ、浮点操作数读时序控制模块Ⅲ、操作数配置及运算控制模块Ⅴ连接;
所述命令字及多操作数写时序控制模块Ⅱ还与浮点操作数读时序控制模块Ⅲ、存储器数据空标志控制器Ⅳ、操作数配置及运算控制模块Ⅴ连接;
所述浮点操作数读时序控制模块Ⅲ还与存储器数据空标志控制器Ⅳ、操作数配置及运算控制模块Ⅴ连接;
所述双端口只读只写存储器Ⅰ为双端口存储器,一个只写端口,一个只读端口,用于储存两条指令的浮点操作数(下称为操作数);所述双端口只读只写存储器Ⅰ分为存储器1和存储器2两个存储区域;所述双端口只读只写存储器Ⅰ的写地址高位输入端AB4_1为“0”,或读地址高位输入端AB4_2为“0”,选中双端口只读只写存储器Ⅰ的13个低地址存储单元,即存储器1;写地址高位输入端AB4_1为“1”,或读地址高位输入端AB4_2为“1”,选中双端口只读只写存储器Ⅰ的13个高地址存储单元,即存储器2;
所述命令字及多操作数写时序控制模块Ⅱ控制完成指令的写入和存储,需要占用系统总线;一条指令包括32位命令字和若干个操作数,操作数最多为13个;所述命令字及多操作数写时序控制模块Ⅱ在双端口只读只写存储器Ⅰ的存储器1或存储器2为数据空,输出写指令允许信号,方允许被系统选中;当被系统选中写命令字时,在系统WR信号的作用下,写入命令字;当被系统选中写操作数时,其内部产生与系统WR信号同步的写时序脉冲;在写时序脉冲的控制下,将操作数存储在双端口只读只写存储器Ⅰ的存储器1或存储器2中;一条指令的最后一个操作数被写入存储后,转换双端口只读只写存储器Ⅰ的写高位地址输入端AB4_1状态;如果双端口只读只写存储器Ⅰ的存储器1和存储器2都非空,停止命令字及多操作数写时序控制模块Ⅱ的工作;
所述命令字及多操作数写时序控制模块Ⅱ将写入的命令字分为待执行命令字存储和执行命令字的存储,执行命令字分为第1个操作数类型、第1个操作数除法运算方式和操作数个数的存储、每个操作数的运算符标志的存储;
所述浮点操作数读时序控制模块Ⅲ在内部读时序脉冲的控制下,自主完成浮点操作数从双端口只读只写存储器Ⅰ中的读出,不需要占用系统总线;所述浮点操作数读时序控制模块Ⅲ产生与系统时钟Clock信号同步的读时序脉冲序列,按顺序将操作数读出参与运算,按照每个操作数的运算符自动调整运算周期;当参与运算的最后一个操作数读出之后,产生读地址溢出信号,然后再经过一个该操作数的运算周期,发出读运行状态结束的信号,产生一个时钟周期Clock的结果锁存脉冲,然后再发出启动使能信号;
所述浮点操作数读时序控制模块Ⅲ依据存储器数据空标志控制器Ⅳ的空标志状态读出操作数,有下面4种工作状态:
1)所述存储器数据空标志控制器Ⅳ无存储器1空、存储器2空的标志输出,表明存储器1、存储器2都为数据非空,一个非空的存储器正在写入指令或写入指令过程已结束,另一个存储器正在读出操作数;若正在执行的命令运算过程结束,启动使能信号由“1”→“0”,转为一个存储器空,另一个存储器非空的状态,此时在命令运算过程结束后的第1个系统时钟Clock的下降沿作为时序脉冲发生的启动信号,向系统发送写指令允许信号;启动浮点操作数读时序控制模块Ⅲ的工作;
2)所述存储器数据空标志控制器Ⅳ输出任何一个存储器空的标志,会处于两种操作状态,一是非空的存储器正在写入操作数,该存储器同时执行读出操作;二是非空的存储器写入指令过程已结束,正在执行读出操作;若命令运算过程结束,启动使能信号由“1”→“0”,转为存储器1和存储器2都空的状态;
3)所述存储器数据空标志控制器Ⅳ同时输出存储器1空、存储器2空的标志,停止浮点操作数读时序控制模块Ⅲ的工作,向系统发送写指令允许信号;
4)所述存储器数据空标志控制器Ⅳ同时输出存储器1空、存储器2空的标志,且命令字及多操作数写时序控制模块Ⅱ再次被系统选中写入命令字,命令字及多操作数写时序控制模块Ⅱ输出写预置脉冲作为浮点操作数读时序控制模块Ⅲ的内部时序脉冲发生器的启动信号;
所述操作数配置及运算控制模块Ⅴ根据命令字及多操作数写时序控制模块Ⅱ输出的运算符选择参与运算的每个操作数对应的运算器进行运算,根据输出的第1个操作数的类型选通配置参与加/减或乘法运算的操作数1和操作数2,第1个操作数为除法运算时,还需要根据第1个操作数除法运算方式选通配置参与除法运算的操作数a和操作数b;所述操作数配置及运算控制模块Ⅴ能够锁存每次运算的运算结果,并判断运算结果是否异常;系统能够从操作数配置及运算控制模块Ⅴ中读出中间运算结果和命令执行的最终运算结果。
如图3所示,所述命令字及多操作数写时序控制模块Ⅱ包括模块地址识别1、写高位地址控制器2、写端口地址计数器3、写端口脉冲发生控制器4、待执行命令字寄存器5、方式类型个数寄存器6、运算符移位寄存器7、非门Ⅰ8、非门Ⅱ9、或门Ⅰ10、或门Ⅱ11、或门Ⅲ12、与门Ⅰ13、与门Ⅱ14和与门Ⅲ15;
所述模块地址识别1输入端和系统地址总线AB的A31到A27线连接,CS1输出端和或门Ⅱ11的一个输入端连接,CS2输出端和或门Ⅲ12的一个输入端、写端口脉冲发生控制器4的使能输入端、操作数配置及运算控制模块Ⅴ连接;
所述模块地址识别1内部设置两个地址值,一个是写命令字地址值,一个是写操作数地址值;所述模块地址识别1输入的A31到A27地址值与模块地址识别1中设置的地址值进行比较,如果和写命令字地址值相等,则输出CS1为“0”,如果和写操作数地址值相等,则输出CS2为“0”;在任何时刻,CS1和CS2只有一个输出为“0”,或输出都为“1”;
所述写高位地址控制器2的锁存信号输入端与写端口地址计数器3的写溢出输出端连接,写高位地址输入端和非门Ⅱ9的输出端连接,复位输入端和与门Ⅱ14的输出端连接,输出端和非门Ⅱ9的输入端、双端口只读只写存储器Ⅰ的写地址高位输入端AB4_1、存储器数据空标志控制器Ⅳ连接;
所述写高位地址控制器2输出的是双端口只读只写存储器Ⅰ的最高位地址值AB4_1;当双端口只读只写存储器Ⅰ的存储器1和存储器2的数据都空时,或者当系统复位信号Rst为“0”时,复位写高位地址控制器2,其输出为“0”;当写高位地址控制器2的锁存信号输入端由“1”→“0”时,写高位地址控制器2输出端输出的AB4_1状态翻转;
所述写端口地址计数器3的操作数个数输入端与系统数据总线DB的D3到D0线连接,写预置脉冲输入端和或门Ⅱ11的输出端连接,写计数脉冲输入端与写端口脉冲发生控制器4的脉冲②_1输出端连接,写复位输入端和系统复位信号Rst线连接,写地址输出端与双端口只读只写存储器Ⅰ的写地址输入端AB_1连接,写溢出输出端还和写端口脉冲发生控制器4的写溢出输入端、非门Ⅰ8的输入端、存储器数据空标志控制器Ⅳ连接;
所述写端口地址计数器3实质上是一个减1计数器,系统数据总线DB的D3到D0传输的是参与加/减、乘、除运算的操作数个数值,当双端口只读只写存储器Ⅰ的存储器1空或存储器2空,且满足模块地址识别1的CS2输出端为“0”时,WR信号作为写预置脉冲将操作数个数值作为双端口只读只写存储器Ⅰ写端口的低4位地址初值预置给写端口地址计数器3,并将写溢出输出端设置为“1”状态;
所述写端口地址计数器3的写地址输出端输出双端口只读只写存储器Ⅰ的写端口低4位地址值AB_1;当写计数脉冲输入端来一个计数脉冲时,写端口地址计数器3进行一次-1操作,直到写地址输出端为“0”,AB_1为“0”,此时写溢出信号输出端由“1”→“0”,写溢出信号作为写端口地址计数器3停止工作的标志,使得写高位地址控制器2的锁存信号输入端由“1”→“0”时,写高位地址控制器2输出的AB4_1状态翻转;写端口地址计数器3在系统复位信号Rst的作用下,复位写端口地址计数器3,使得写溢出信号输出端为“0”状态;
所述写端口脉冲发生控制器4的同步脉冲输入端与系统写信号WR线连接,启动输入端和与门Ⅲ15的输出端连接,复位输入端和系统复位信号Rst线连接,脉冲①_1输出端和双端口只读只写存储器Ⅰ的写信号输入端WR_1连接;
所述写端口脉冲发生控制器4的使能输入端为“0”,在启动输入端的脉冲信号作用下启动工作,发出与系统WR脉冲同步的脉冲①_1和脉冲②_1,脉冲①_1作为双端口只读只写存储器Ⅰ的写入信号WR_1,脉冲②_1作为写端口地址计数器3的写计数脉冲;所述写端口地址计数器3的写溢出信号输出端由“1”→“0”,写端口脉冲发生控制器4停止工作,脉冲①_1和脉冲②_1的输出端为“1”状态;
所述待执行命令字寄存器5的命令字输入端和系统数据总线DB的D31到D0线连接,锁存信号输入端和或门Ⅱ11的输出端连接,输出端的低6位与方式类型个数寄存器6的输入端连接,输出端的高26位与运算符移位寄存器7的输入端连接;
所述方式类型个数寄存器6的锁存信号输入端与浮点操作数读时序控制模块Ⅲ连接,类型输出端、读操作数个数输出端与浮点操作数读时序控制模块Ⅲ连接,方式输出端与操作数配置及运算控制模块Ⅴ连接;
所述运算符移位寄存器7的锁存信号输入端与浮点操作数读时序控制模块Ⅲ连接,移位脉冲输入端与浮点操作数读时序控制模块Ⅲ连接,运算符输出端与浮点操作数读时序控制模块Ⅲ和操作数配置及运算控制模块Ⅴ连接;
所述非门Ⅰ8的输出端和或门Ⅰ10的一个输入端连接;
所述或门Ⅰ10的另一个输入端和与门Ⅰ13的输出端连接,输出端向系统输出写指令允许信号;
所述或门Ⅱ11的另二个输入端分别和与门Ⅰ13的输出端、系统WR写信号线连接,输出端作为写预置信号还与浮点操作数读时序控制模块Ⅲ连接;
所述或门Ⅲ12的另一个输入端与系统WR写信号线连接,输出端和与门Ⅲ15的一个输入端连接;
所述与门Ⅰ13的二个输入端分别与存储器数据空标志控制器Ⅳ的存储器1空输出端、存储器2空输出端连接,输出端还和与门Ⅲ15的另一个输入端连接;
所述与门Ⅱ14的一个输入端与存储器数据空标志控制器Ⅳ的存储器1存储器2都空输出端连接,另一个输入端与系统Rst复位信号线连接。
如图5所示,所述浮点操作数读时序控制模块Ⅲ包括读高位地址控制器16、读端口地址计数器17、读端口脉冲发生控制器18、异或非门19、非门Ⅲ20、非门Ⅳ21、或门Ⅳ22、或门Ⅴ23、与门Ⅳ24、与门Ⅴ25、与门Ⅵ26、与门Ⅶ27和与门Ⅷ28;
所述读高位地址控制器16的锁存信号输入端与读端口地址计数器17的读溢出输出端连接,读高位地址输入端和非门Ⅲ20的输出端连接,复位输入端和与门Ⅳ24的输出端连接,输出端和双端口只读只写存储器Ⅰ的读地址高位输入端AB4_2、非门Ⅲ20的输入端、存储器数据空标志控制器Ⅳ连接;
所述读高位地址控制器16输出的是双端口只读只写存储器Ⅰ读端口的最高位地址值AB4_2,当双端口只读只写存储器Ⅰ的存储器1和存储器2的数据都空时,或者当系统复位信号Rst为“0”时,复位读高位地址控制器16,其输出端为“0”;当读高位地址控制器16的锁存信号输入端由“1”→“0”时,读高位地址控制器16输出的AB4_2状态翻转;
所述读端口地址计数器17的读预置脉冲输入端与读端口脉冲发生控制器18的脉冲②_2输出端连接,读计数脉冲输入端和与门Ⅷ28的输出端连接,复位输入端和与门Ⅵ26的输出端连接,读操作数个数输入端与方式类型个数寄存器6的读操作数个数输出端连接,读溢出输出端还与读端口脉冲发生控制器18的读溢出输入端、存储器数据空标志控制器Ⅳ的读溢出输入端连接,读地址输出端与双端口只读只写存储器Ⅰ的读地址输入端AB_2连接;
所述读端口地址计数器17实质上是一个减1计数器,读预置脉冲将来自方式类型个数寄存器6输出的读操作数个数预置给读端口地址计数器17,使得读端口地址计数器17的读地址输出端输出的地址值AB_2为读操作数个数,读端口地址计数器17从读操作数个数开始进行-1计数;当读计数脉冲输入端来一个计数脉冲时,读端口地址计数器17输出的读地址值-1,直到读地址输出端为“0”,AB_2为“0”,表示正在执行命令的最后一个操作数已读出,读溢出信号输出端由“1”→“0”,读溢出信号也是读端口地址计数器17停止工作的标志;当输入复位信号为“0”时,复位读端口地址计数器17,读端口地址计数器17停止计数工作,读溢出输出端为“0”;
所述读端口脉冲发生控制器18的同步脉冲输入端与系统时钟信号Clock线连接,启动输入端和与门Ⅴ25的输出端连接,复位输入端和与门Ⅵ26的输出端连接,类型输入端与方式类型个数寄存器6的类型输出端连接,运算符输入端与运算符移位寄存器7的运算符输出端连接;脉冲①_2输出端与方式类型个数寄存器6和运算符移位寄存器7的锁存信号输入端连接,脉冲③_2输出端和与门Ⅶ27的一个输入端、操作数配置及运算控制模块Ⅴ连接,脉冲④_2输出端和与门Ⅷ28的一个输入端、操作数配置及运算控制模块Ⅴ连接,脉冲⑤_2输出端和与门Ⅶ27的另一个输入端连接,脉冲⑥_2输出端和与门Ⅷ28的另一个输入端连接,脉冲⑦_2输出端和操作数配置及运算控制模块Ⅴ连接、脉冲⑧_2输出端和操作数配置及运算控制模块Ⅴ连接,读运行状态输出端与存储器数据空标志控制器Ⅳ的读运行状态输入端连接,启动使能输出端和或门Ⅴ23的一个输入端、存储器数据空标志控制器Ⅳ的启动使能输入端连接;
所述读端口脉冲发生控制器18输出的脉冲与系统时钟Clock同步;当双端口只读只写存储器Ⅰ的存储器1或存储器2为数据空,启动使能输出端由“1”→“0”时,启动读端口脉冲发生控制器18开始工作;当双端口只读只写存储器Ⅰ的存储器1和存储器2都为数据空时,在写预置脉冲的作用下启动输出端由“1”→“0”,启动读端口脉冲发生控制器18开始工作;启动的同时置读端口脉冲发生控制器18的读运行状态输出端为“0”和启动使能输出端为“1”状态;当读运行状态为“1”时,表明当前命令的运算过程已执行结束;当启动使能信号为“0”时,表明没有命令在执行,以及执行命令的运算结果已锁存;
所述读端口脉冲发生控制器18根据类型输入信号为“0”还是为“1”,确定控制双端口只读只写存储器Ⅰ中读操作数的脉冲序列;读端口地址计数器17输出的读溢出信号由“1”→“0”,置脉冲⑥_2输出端为“1”,读端口脉冲发生控制器18再经过一个运算周期时间,读运行状态输出端由“0”→“1”,并发出一个系统时钟Clock周期锁存最终运算结果的脉冲⑦_2,启动使能输出端由“1”→“0”,停止读端口脉冲发生控制器18的工作,置所有脉冲输出端为“1”状态;当输入的复位信号为“0”时,复位读端口脉冲发生控制器18,复位使得读运行状态输出端为“1”状态,启动使能输出端为“0”,置所有脉冲输出端为“1”状态,并停止读端口脉冲发生控制器18的工作;
所述读端口脉冲发生控制器18根据运算符输入端输入的每个参与运算的操作数运算符,自动调整对应每个操作数的运算周期时间;
所述异或非门19的二个输入端分别与存储器数据空标志控制器Ⅳ的存储器1空输出端、存储器2空输出端连接,输出端和或门Ⅴ23的另一个输入端连接;
所述非门Ⅳ21的输入端和或门Ⅱ11的写预置信号输出端连接,输出端和或门Ⅳ22的一个输入端连接;
所述或门Ⅳ22的另一个输入端和存储器数据空标志控制器Ⅳ的存储器1存储器2都空输出端连接,输出端和与门Ⅴ25的一个输入端连接;
所述或门Ⅴ23的输出端和与门Ⅴ25的另一个输入端连接;
所述与门Ⅳ24的一个输入端与存储器数据空标志控制器Ⅳ的存储器1存储器2都空输出端连接,另一个输入端和系统复位信号Rst线连接;
所述与门Ⅵ26的一个输入端与系统复位信号Rst线连接,另一个输入端和操作数配置及运算控制模块Ⅴ连接;
所述与门Ⅶ27的输出端与双端口只读只写存储器Ⅰ的读操作数输入端RD_2、运算符移位寄存器7的移位脉冲输入端连接;
所述与门Ⅶ27的输出是双端口只读只写存储器Ⅰ读端口的读操作数信号RD_2,也是运算符移位寄存器7的移位脉冲,从双端口只读只写存储器Ⅰ读出一个操作数,运算符移位寄存器7中的运算符数据按照顺序向右移位2位,其最低2位作为运算符输出,每个操作数的运算类型由输出的2位运算符决定。
如图6所示,所述操作数配置及运算控制模块Ⅴ包括选通器29、结果寄存器30、浮点数加/减运算器31、浮点数乘运算器32、浮点数除运算器33、操作数交换器34、运算异常标志控制35、32位三态门组36、与门Ⅸ37、与门Ⅹ38、或门Ⅵ39和或门Ⅶ40;
所述选通器29的一个输入端与双端口只读只写存储器Ⅰ的读数据输出端DB_2连接,另一个输入端与浮点数加/减运算器31、浮点数乘运算器32和浮点数除运算器33的运算结果输出端连接,选通控制输入端和与门Ⅸ37的输出端连接,输出端与结果寄存器30的输入端连接;
所述结果寄存器30的锁存信号输入端和与门Ⅹ38的输出端连接,输出端与浮点数加/减运算器31、浮点数乘运算器32的操作数1输入端连接、操作数交换器34的操作数1输入端连接,以及与32位三态门组36的输入端连接;
所述浮点数加/减运算器31的操作数2输入端和双端口只读只写存储器Ⅰ的操作数输出端DB_2连接,运算符输入端和运算符移位寄存器7的运算符输出端连接,运算结果输出端还与运算异常标志控制35的输入端连接;
所述浮点数乘运算器32的操作数2输入端和双端口只读只写存储器Ⅰ的操作数输出端DB_2连接,运算符输入端和运算符移位寄存器7的运算符输出端连接,运算结果输出端还与运算异常标志控制35的输入端连接;
所述浮点数除运算器33的操作数a和操作数b输入端分别与操作数交换器34的二个输出端连接;运算符输入端和运算符移位寄存器7的运算符输出端连接,输出端还与运算异常标志控制35的输入端连接;
所述操作数交换器34的操作数2输入端和双端口只读只写存储器Ⅰ的操作数输出端DB_2连接,交换控制端和或门Ⅵ39的输出端连接;
所述运算异常标志控制35的锁存信号输入端与读端口脉冲发生控制器18的锁存结果脉冲⑦_2输出端连接;IRQ输出端和与门Ⅵ26的一个输入端连接,IRQ输出端还向系统输出中断请求信号IRQ;当中间运算结果或最终运算结果出现异常时,所述运算异常标志控制35向系统发出中断请求信号IRQ,并复位读端口地址计数器17和读端口脉冲发生控制器18,停止浮点操作数读时序控制模块Ⅲ的工作;
所述32位三态门组36的输出端与系统数据总线DB连接,控制端和或门Ⅶ40的输出端连接;
所述与门Ⅸ37的二个输入端分别与读端口脉冲发生控制器18的脉冲③_2、脉冲④_2输出端连接;
所述与门Ⅹ38的二个输入端分别与读端口脉冲发生控制器18的脉冲④_2、脉冲⑦_2输出端连接;
所述或门Ⅵ39的二个输入端分别与读端口脉冲发生控制器18的脉冲⑧_2输出端、方式类型个数寄存器6的方式输出端连接;
所述或门Ⅶ40的二个输入端分别与模块地址识别1的CS2信号输出端、系统读信号RD线连接;当CS2为“0”时,在系统RD信号的作用下,读出中间运算结果或命令执行的最终运算结果。
如图3、图5和图6所示,所述浮点操作数读时序控制模块Ⅲ与方式类型个数寄存器6的类型输出端连接;所述操作数配置及运算控制模块Ⅴ与方式类型个数寄存器6的方式输出端、运算符移位寄存器7的运算符输出端连接;所述方式类型个数寄存器6输出的类型是指从双端口只读只写存储器Ⅰ读出的第1个操作数的类型,输出的方式是指类型0时,第1个操作数参加除法运算的处理方式;运算符移位寄存器7输出的运算符是操作数参与运算的符号;
运算符由二位代码标识组成:00:加法运算;01:减法运算;10:乘法运算;11:除法运算;
操作数类型由一位代码标识组成:0:操作数类型0;1:操作数类型1;
当读出第1个操作数参与加/减或乘法运算时,类型信号控制第1个操作数的运算方式;
操作数类型0:第1个操作数作为参与加/减或乘法运算的操作数2,运算结果作为操作数1,执行运算结果与第1个操作数运算;
操作数类型1:第1个操作数作为参与加/减、乘法运算的操作数1,第2个操作数作为操作数2,执行第1个操作数/第2个操作数的运算;
当操作数类型为“1”时,所述读端口脉冲发生控制器18输出脉冲③_2、脉冲④_2;当脉冲③_2或脉冲④_2为“0”时,选通器29的选通控制输入端为“0”,输出从双端口只读只写存储器Ⅰ读出的第1个操作数;当脉冲③_2和脉冲④_2都为“1”时,输出运算结果;
所述方式类型个数寄存器6输出的类型和方式信号控制第1个操作数参加除法运算的操作数类型和除法方式:
当操作数类型为“0”时:操作数交换器34的操作数1输入端为运算结果;操作数交换器34的操作数2输入端为第1个操作数;
除法方式0:第1个操作数作为浮点数除运算器33的操作数a,运算结果作为操作数b;当读第1个操作数和执行第1个操作数除法运算时,脉冲⑧_2为“0”有效,由于方式为“0”状态,使得操作数交换器34的控制端为“0”,操作数交换器34的2个输入和2个输出进行交换,执行第1操作数/运算结果的运算;
除法方式1:第1个操作数作为浮点数除运算器33的操作数a,运算结果作为操作数b;当读第1个操作数和执行第1个操作数除法运算时,脉冲⑧_2为“0”有效,但方式为“1”状态,使得操作数交换器34的控制端为“1”,操作数交换器34的2个输入和2个输出不进行交换,执行第1个操作数/运算结果的运算;
当操作数类型为“1”时:第1个操作数的除法运算方式与输入的方式信号状态无关;所述读端口脉冲发生控制器18不产生脉冲⑧_2信号,脉冲⑧_2输出端为“1”状态,使得操作数交换器34的控制端为“1”,操作数交换器34的2个输入和2个输出不进行交换;第1个操作数作为浮点数除运算器33的操作数a,第2个操作数作为操作数b,执行第1个操作数/第2个操作数的运算。
实施例二:
一种多浮点操作数加/减、乘运算控制器;
实施例二是本发明实施例一的一种变换结构,该多浮点操作数加/减、乘运算控制器的基本结构同实施例一;所不同之处在于:取消实施例一图3的方式类型个数寄存器6的方式输出端,图5的读端口脉冲发生控制器18的脉冲⑧_2输出端;取消实施例一图13的类型0:⑧_2的脉冲波形曲线;取消实施例一图6的浮点数除运算器33、操作数交换器34,或门Ⅵ39,转换为图15的操作数配置及运算控制模块。
Claims (5)
1.一种双指令多浮点操作数加/减、乘、除运算控制器,其特征在于:该控制器包括双端口只读只写存储器(Ⅰ)、命令字及多操作数写时序控制模块(Ⅱ)、浮点操作数读时序控制模块(Ⅲ)、存储器数据空标志控制器(Ⅳ)和操作数配置及运算控制模块(Ⅴ);
所述双端口只读只写存储器(Ⅰ)与命令字及多操作数写时序控制模块(Ⅱ)、浮点操作数读时序控制模块(Ⅲ)、操作数配置及运算控制模块(Ⅴ)连接;
所述命令字及多操作数写时序控制模块(Ⅱ)还与浮点操作数读时序控制模块(Ⅲ)、存储器数据空标志控制器(Ⅳ)、操作数配置及运算控制模块(Ⅴ)连接;
所述浮点操作数读时序控制模块(Ⅲ)还与存储器数据空标志控制器(Ⅳ)、操作数配置及运算控制模块(Ⅴ)连接;
所述双端口只读只写存储器(Ⅰ)为双端口存储器,一个只写端口,一个只读端口,用于储存两条指令的浮点操作数;所述双端口只读只写存储器(Ⅰ)分为存储器1和存储器2两个存储区域;所述双端口只读只写存储器(Ⅰ)的写地址高位输入端AB4_1为“0”,或读地址高位输入端AB4_2为“0”,选中双端口只读只写存储器(Ⅰ)的13个低地址存储单元,即存储器1;写地址高位输入端AB4_1为“1”,或读地址高位输入端AB4_2为“1”,选中双端口只读只写存储器(Ⅰ)的13个高地址存储单元,即存储器2;
所述命令字及多操作数写时序控制模块(Ⅱ)控制完成指令的写入和存储,需要占用系统总线;一条指令包括32位命令字和若干个操作数,操作数最多为13个;所述命令字及多操作数写时序控制模块(Ⅱ)在双端口只读只写存储器(Ⅰ)的存储器1或存储器2为数据空,输出写指令允许信号,方允许被系统选中;当被系统选中写命令字时,在系统写信号WR的作用下,写入命令字;当被系统选中写操作数时,其内部产生与系统写信号WR同步的写时序脉冲;在写时序脉冲的控制下,将操作数存储在双端口只读只写存储器(Ⅰ)的存储器1或存储器2中;一条指令的最后一个操作数被写入存储后,转换双端口只读只写存储器(Ⅰ)的写地址高位输入端AB4_1状态,如果双端口只读只写存储器(Ⅰ)的存储器1和存储器2都非空,停止命令字及多操作数写时序控制模块(Ⅱ)的工作;
所述命令字及多操作数写时序控制模块(Ⅱ)将写入的命令字分为待执行命令字存储和执行命令字的存储,执行命令字分为第1个操作数类型、第1个操作数除法运算方式和操作数个数的存储、每个操作数的运算符标志的存储;
所述浮点操作数读时序控制模块(Ⅲ)在内部读时序脉冲的控制下,自主完成浮点操作数从双端口只读只写存储器(Ⅰ)中的读出,不需要占用系统总线;所述浮点操作数读时序控制模块(Ⅲ)产生与系统时钟Clock信号同步的读时序脉冲序列,按顺序将操作数读出参与运算,按照每个操作数的运算符自动调整运算周期;当参与运算的最后一个操作数读出之后,产生读地址溢出信号,然后再经过一个该操作数的运算周期,发出读运行状态结束的信号,产生一个系统时钟Clock周期的结果锁存脉冲,然后再发出启动使能信号;
所述浮点操作数读时序控制模块(Ⅲ)依据存储器数据空标志控制器(Ⅳ)的空标志状态读出操作数,有下面4种工作状态:
1)所述存储器数据空标志控制器(Ⅳ)无存储器1空、存储器2空的标志输出,表明存储器1、存储器2都为数据非空,一个非空的存储器正在写入指令或写入指令过程已结束,另一个存储器正在读出操作数;若正在执行的命令运算过程结束,启动使能信号由“1”→“0”,转为一个存储器空,另一个存储器非空的状态,此时在命令运算过程结束后的第1个系统时钟Clock的下降沿作为时序脉冲发生的启动信号,向系统发送写指令允许信号;启动浮点操作数读时序控制模块(Ⅲ)的工作;
2)所述存储器数据空标志控制器(Ⅳ)输出任何一个存储器空的标志,会处于两种操作状态,一是非空的存储器正在写入操作数,该存储器同时执行读出操作;二是非空的存储器写入指令过程已结束,正在执行读出操作;若命令运算过程结束,启动使能信号由“1”→“0”,转为存储器1和存储器2都空的状态;
3)所述存储器数据空标志控制器(Ⅳ)同时输出存储器1空、存储器2空的标志,停止浮点操作数读时序控制模块(Ⅲ)的工作,向系统发送写指令允许信号;
4)所述存储器数据空标志控制器(Ⅳ)同时输出存储器1空、存储器2空的标志,且命令字及多操作数写时序控制模块(Ⅱ)再次被系统选中写入命令字,命令字及多操作数写时序控制模块(Ⅱ)输出写预置脉冲作为浮点操作数读时序控制模块(Ⅲ)的内部时序脉冲发生器的启动信号;
所述操作数配置及运算控制模块(Ⅴ)根据命令字及多操作数写时序控制模块(Ⅱ)输出的运算符选择参与运算的每个操作数对应的运算器进行运算,根据输出的第1个操作数的类型选通配置参与加/减或乘法运算的操作数1和操作数2,第1个操作数为除法运算时,还需要根据第1个操作数除法运算方式选通配置参与除法运算的操作数a和操作数b;所述操作数配置及运算控制模块(Ⅴ)能够锁存运算结果,并判断运算结果是否异常;系统能够从操作数配置及运算控制模块(Ⅴ)中读出中间运算结果和命令执行的最终运算结果。
2.如权利要求1所述的双指令多浮点操作数加/减、乘、除运算控制器,其特征在于:所述命令字及多操作数写时序控制模块(Ⅱ)包括模块地址识别(1)、写高位地址控制器(2)、写端口地址计数器(3)、写端口脉冲发生控制器(4)、待执行命令字寄存器(5)、方式类型个数寄存器(6)、运算符移位寄存器(7)、非门Ⅰ(8)、非门Ⅱ(9)、或门Ⅰ(10)、或门Ⅱ(11)、或门Ⅲ(12)、与门Ⅰ(13)、与门Ⅱ(14)和与门Ⅲ(15);
所述模块地址识别(1)的输入端和系统地址总线AB的A31到A27线连接,CS1输出端和或门Ⅱ(11)的一个输入端连接,CS2输出端和或门Ⅲ(12)的一个输入端、写端口脉冲发生控制器(4)的使能输入端、操作数配置及运算控制模块(Ⅴ)连接;
所述模块地址识别(1)内部设置两个地址值,一个是写命令字地址值,一个是写操作数地址值;所述模块地址识别(1)输入的A31到A27地址值与模块地址识别(1)中设置的地址值进行比较,如果和写命令字地址值相等,则输出CS1为“0”,如果和写操作数地址值相等,则输出CS2为“0”;在任何时刻,CS1和CS2只有一个输出为“0”,或输出都为“1”;
所述写高位地址控制器(2)的锁存信号输入端与写端口地址计数器(3)的写溢出输出端连接,写高位地址输入端和非门Ⅱ(9)的输出端连接,复位输入端和与门Ⅱ(14)的输出端连接,输出端和非门Ⅱ(9)的输入端、双端口只读只写存储器(Ⅰ)的写地址高位输入端AB4_1、存储器数据空标志控制器(Ⅳ)连接;
所述写高位地址控制器(2)输出的是双端口只读只写存储器(Ⅰ)的最高位地址值AB4_1;当双端口只读只写存储器(Ⅰ)的存储器1和存储器2的数据都空时,或者当系统复位信号Rst为“0”时,复位写高位地址控制器(2),其输出为“0”;当写高位地址控制器(2)的锁存信号输入端由“1”→“0”时,写高位地址控制器(2)输出端输出的AB4_1状态翻转;
所述写端口地址计数器(3)的操作数个数输入端与系统数据总线DB的D3到D0线连接,写预置脉冲输入端和或门Ⅱ(11)的输出端连接,写计数脉冲输入端与写端口脉冲发生控制器(4)的脉冲②_1输出端连接,写复位输入端和系统复位信号Rst线连接,写地址输出端与双端口只读只写存储器(Ⅰ)的写地址输入端AB_1连接,写溢出输出端还和写端口脉冲发生控制器(4)的写溢出输入端、非门Ⅰ(8)的输入端、存储器数据空标志控制器(Ⅳ)连接;
所述写端口地址计数器(3)是一个减1计数器,系统数据总线DB的D3到D0传输的是参与加/减、乘、除运算的操作数个数值,当双端口只读只写存储器(Ⅰ)的存储器1空或存储器2空,且满足模块地址识别(1)的CS2输出端为“0”时,WR信号作为写预置脉冲将操作数个数值作为双端口只读只写存储器(Ⅰ)写端口的低4位地址初值预置给写端口地址计数器(3),并将写溢出输出端设置为“1”状态;
所述写端口地址计数器(3)输出双端口只读只写存储器(Ⅰ)的写端口低4位地址值AB_1;当写计数脉冲输入端来一个计数脉冲时,写端口地址计数器(3)进行一次-1操作,直到写地址输出端为“0”,AB_1为“0”,此时写溢出信号输出端由“1”→“0”,写溢出信号作为写端口地址计数器(3)停止工作的标志,使得写高位地址控制器(2)的锁存信号输入端由“1”→“0”时,写高位地址控制器(2)输出的AB4_1状态翻转;写端口地址计数器(3)在系统复位信号Rst的作用下,复位写端口地址计数器(3),使得写溢出信号输出端为“0”状态;
所述写端口脉冲发生控制器(4)的同步脉冲输入端与系统写信号WR线连接,启动输入端和与门Ⅲ(15)的输出端连接,复位输入端和系统复位信号Rst线连接,脉冲①_1输出端和双端口只读只写存储器(Ⅰ)的写信号输入端WR_1连接;
所述写端口脉冲发生控制器(4)的使能输入端为“0”,在启动输入端的脉冲信号作用下启动工作,发出与系统WR脉冲同步的脉冲①_1和脉冲②_1,脉冲①_1作为双端口只读只写存储器(Ⅰ)的写入信号WR_1,脉冲②_1作为写端口地址计数器(3)的写计数脉冲;所述写端口地址计数器(3)的写溢出信号输出端由“1”→“0”,写端口脉冲发生控制器(4)停止工作,脉冲①_1和脉冲②_1的输出端为“1”状态;
所述待执行命令字寄存器(5)的命令字输入端和系统数据总线DB的D31到D0线连接,锁存信号输入端和或门Ⅱ(11)的输出端连接,输出端的低6位与方式类型个数寄存器(6)的输入端连接,输出端的高26位与运算符移位寄存器(7)的输入端连接;
所述方式类型个数寄存器(6)的锁存信号输入端与浮点操作数读时序控制模块(Ⅲ)连接,类型输出端、读操作数个数输出端与浮点操作数读时序控制模块(Ⅲ)连接,方式输出端与操作数配置及运算控制模块(Ⅴ)连接;
所述运算符移位寄存器(7)的锁存信号输入端与浮点操作数读时序控制模块(Ⅲ)连接,移位脉冲输入端与浮点操作数读时序控制模块(Ⅲ)连接,运算符输出端与浮点操作数读时序控制模块(Ⅲ)和操作数配置及运算控制模块(Ⅴ)连接;
所述非门Ⅰ(8)的输出端和或门Ⅰ(10)的一个输入端连接;
所述或门Ⅰ(10)的另一个输入端和与门Ⅰ(13)的输出端连接,输出端向系统输出写指令允许信号;
所述或门Ⅱ(11)的另二个输入端分别和与门Ⅰ(13)的输出端、系统WR写信号线连接,输出端作为写预置信号还与浮点操作数读时序控制模块(Ⅲ)连接;
所述或门Ⅲ(12)的另一个输入端与系统WR写信号线连接,输出端和与门Ⅲ(15)的一个输入端连接;
所述与门Ⅰ(13)的二个输入端分别与存储器数据空标志控制器(Ⅳ)的存储器1空输出端、存储器2空输出端连接,输出端还和与门Ⅲ(15)的另一个输入端连接;
所述与门Ⅱ(14)的一个输入端与存储器数据空标志控制器(Ⅳ)的存储器1存储器2都空输出端连接,另一个输入端与系统Rst复位信号线连接。
3.如权利要求2所述的双指令多浮点操作数加/减、乘、除运算控制器,其特征在于:所述浮点操作数读时序控制模块(Ⅲ)包括读高位地址控制器(16)、读端口地址计数器(17)、读端口脉冲发生控制器(18)、异或非门(19)、非门Ⅲ(20)、非门Ⅳ(21)、或门Ⅳ(22)、或门Ⅴ(23)、与门Ⅳ(24)、与门Ⅴ(25)、与门Ⅵ(26)、与门Ⅶ(27)和与门Ⅷ(28);
所述读高位地址控制器(16)的锁存信号输入端与读端口地址计数器(17)的读溢出输出端连接,读高位地址输入端和非门Ⅲ(20)的输出端连接,复位输入端和与门Ⅳ(24)的输出端连接,输出端和双端口只读只写存储器(Ⅰ)的读地址高位输入端AB4_2、非门Ⅲ(20)的输入端、存储器数据空标志控制器(Ⅳ)连接;
所述读高位地址控制器(16)输出的是双端口只读只写存储器(Ⅰ)读端口的最高位地址值AB4_2,当双端口只读只写存储器(Ⅰ)的存储器1和存储器2的数据都空时,或者当系统复位信号Rst为“0”时,复位读高位地址控制器(16),其输出端为“0”;当读高位地址控制器(16)的锁存信号输入端由“1”→“0”时,读高位地址控制器(16)输出的AB4_2状态翻转;
所述读端口地址计数器(17)的读预置脉冲输入端与读端口脉冲发生控制器(18)的脉冲②_2输出端连接,读计数脉冲输入端和与门Ⅷ(28)的输出端连接,复位输入端和与门Ⅵ(26)的输出端连接,读操作数个数输入端与方式类型个数寄存器(6)的读操作数个数输出端连接,读溢出输出端还与读端口脉冲发生控制器(18)的读溢出输入端、存储器数据空标志控制器(Ⅳ)的读溢出输入端连接,读地址输出端与双端口只读只写存储器(Ⅰ)的读地址输入端AB_2连接;
所述读端口地址计数器(17)是一个减1计数器,读预置脉冲将来自方式类型个数寄存器(6)输出的读操作数个数预置给读端口地址计数器(17),使得读端口地址计数器(17)的读地址输出端输出的地址值AB_2为读操作数个数,读端口地址计数器(17)从读操作数个数开始进行-1计数;当读计数脉冲输入端来一个计数脉冲时,读端口地址计数器(17)输出的读地址值-1,直到读地址输出端为“0”,AB_2为“0”,表示正在执行命令的最后一个操作数已读出,读溢出信号输出端由“1”→“0”,读溢出信号也是读端口地址计数器(17)停止工作的标志;当输入复位信号为“0”时,复位读端口地址计数器(17),读端口地址计数器(17)停止计数工作,读溢出输出端为“0”;
所述读端口脉冲发生控制器(18)的同步脉冲输入端与系统时钟信号Clock线连接,启动输入端和与门Ⅴ(25)的输出端连接,复位输入端和与门Ⅵ(26)的输出端连接,类型输入端与方式类型个数寄存器(6)的类型输出端连接,运算符输入端与运算符移位寄存器(7)的运算符输出端连接;脉冲①_2输出端与方式类型个数寄存器(6)和运算符移位寄存器(7)的锁存信号输入端连接,脉冲③_2输出端和与门Ⅶ(27)的一个输入端、操作数配置及运算控制模块(Ⅴ)连接,脉冲④_2输出端和与门Ⅷ(28)的一个输入端、操作数配置及运算控制模块(Ⅴ)连接,脉冲⑤_2输出端和与门Ⅶ(27)的另一个输入端连接,脉冲⑥_2输出端和与门Ⅷ(28)的另一个输入端连接,脉冲⑦_2输出端和操作数配置及运算控制模块(Ⅴ)连接,脉冲⑧_2输出端和操作数配置及运算控制模块(Ⅴ)连接,读运行状态输出端与存储器数据空标志控制器(Ⅳ)的读运行状态输入端连接,启动使能输出端和或门Ⅴ(23)的一个输入端、存储器数据空标志控制器(Ⅳ)的启动使能输入端连接;
所述读端口脉冲发生控制器(18)输出的脉冲与系统时钟Clock同步;当双端口只读只写存储器(Ⅰ)的存储器1或存储器2为数据空,启动使能输出端由“1”→“0”时,启动读端口脉冲发生控制器(18)开始工作;当双端口只读只写存储器(Ⅰ)的存储器1和存储器2都为数据空时,在写预置脉冲的作用下启动输出端由“1”→“0”,启动读端口脉冲发生控制器(18)开始工作;启动的同时置读端口脉冲发生控制器(18)的读运行状态输出端为“0”和启动使能输出端为“1”状态;当读运行状态为“1”时,表明当前命令的运算过程已执行结束;当启动使能信号为“0”时,表明没有命令在执行,以及执行命令的运算结果已锁存;
所述读端口脉冲发生控制器(18)根据类型输入信号为“0”还是为“1”,确定控制双端口只读只写存储器(Ⅰ)中读操作数的脉冲序列;读端口地址计数器(17)输出的读溢出信号由“1”→“0”,置脉冲⑥_2输出端为“1”,读端口脉冲发生控制器(18)再经过一个运算周期时间,读运行状态输出端由“0”→“1”,并发出一个系统时钟Clock周期锁存最终运算结果的脉冲⑦_2,启动使能输出端由“1”→“0”,停止读端口脉冲发生控制器(18)的工作,置所有脉冲输出端为“1”状态;当输入的复位信号为“0”时,复位读端口脉冲发生控制器(18),复位使得读运行状态输出端为“1”状态,启动使能输出端为“0”,置所有脉冲输出端为“1”状态,并停止读端口脉冲发生控制器(18)的工作;
所述读端口脉冲发生控制器(18)根据运算符输入端输入的每个参与运算的操作数运算符,自动调整对应每个操作数的运算周期时间;
所述异或非门(19)的二个输入端分别与存储器数据空标志控制器(Ⅳ)的存储器1空输出端、存储器2空输出端连接,输出端和或门Ⅴ(23)的另一个输入端连接;
所述非门Ⅳ(21)的输入端和或门Ⅱ(11)的写预置信号输出端连接,输出端和或门Ⅳ(22)的一个输入端连接;
所述或门Ⅳ(22)的另一个输入端和存储器数据空标志控制器(Ⅳ)的存储器1存储器2都空输出端连接,输出端和与门Ⅴ(25)的一个输入端连接;
所述或门Ⅴ(23)的输出端和与门Ⅴ(25)的另一个输入端连接;
所述与门Ⅳ(24)的一个输入端与存储器数据空标志控制器(Ⅳ)的存储器1存储器2都空输出端连接,另一个输入端和系统复位信号Rst线连接;
所述与门Ⅵ(26)的一个输入端与系统复位信号Rst线连接,另一个输入端和操作数配置及运算控制模块(Ⅴ)连接;
所述与门Ⅶ(27)的输出端与双端口只读只写存储器(Ⅰ)的读操作数信号RD_2输入端、运算符移位寄存器(7)的移位脉冲输入端连接;
所述与门Ⅶ(27)的输出是双端口只读只写存储器(Ⅰ)读端口的读操作数信号RD_2,也是运算符移位寄存器(7)的移位脉冲,从双端口只读只写存储器(Ⅰ)读出一个操作数,运算符移位寄存器(7)中的运算符数据按照顺序向右移位2位,其最低2位作为运算符输出,每个操作数的运算类型由输出的2位运算符决定。
4.如权利要求3所述的双指令多浮点操作数加/减、乘、除运算控制器,其特征在于:所述操作数配置及运算控制模块(Ⅴ)包括选通器(29)、结果寄存器(30)、浮点数加/减运算器(31)、浮点数乘运算器(32)、浮点数除运算器(33)、操作数交换器(34)、运算异常标志控制(35)、32位三态门组(36)、与门Ⅸ(37)、与门Ⅹ(38)、或门Ⅵ(39)和或门Ⅶ(40);
所述选通器(29)的一个输入端与双端口只读只写存储器(Ⅰ)的读数据输出端DB_2连接,另一个输入端与浮点数加/减运算器(31)、浮点数乘运算器(32)和浮点数除运算器(33)的运算结果输出端连接,选通控制输入端和与门Ⅸ(37)的输出端连接,输出端与结果寄存器(30)的输入端连接;
所述结果寄存器(30)的锁存信号输入端和与门Ⅹ(38)的输出端连接,输出端与浮点数加/减运算器(31)、浮点数乘运算器(32)的操作数1输入端连接、操作数交换器(34)的操作数1输入端连接,以及与32位三态门组(36)的输入端连接;
所述浮点数加/减运算器(31)的操作数2输入端和双端口只读只写存储器(Ⅰ)的操作数输出端DB_2连接,运算符输入端和运算符移位寄存器(7)的运算符输出端连接,运算结果输出端还与运算异常标志控制(35)的输入端连接;
所述浮点数乘运算器(32)的操作数2输入端和双端口只读只写存储器(Ⅰ)的操作数输出端DB_2连接,运算符输入端和运算符移位寄存器(7)的运算符输出端连接,运算结果输出端还与运算异常标志控制(35)的输入端连接;
所述浮点数除运算器(33)的操作数a和操作数b输入端分别与操作数交换器(34)的二个输出端连接;运算符输入端和运算符移位寄存器(7)的运算符输出端连接,输出端还与运算异常标志控制(35)的输入端连接;
所述操作数交换器(34)的操作数2输入端和双端口只读只写存储器(Ⅰ)的操作数输出端DB_2连接,交换控制端和或门Ⅵ(39)的输出端连接;
所述运算异常标志控制(35)的锁存信号输入端与读端口脉冲发生控制器(18)的锁存结果脉冲⑦_2输出端连接;IRQ输出端和与门Ⅵ(26)的一个输入端连接,IRQ输出端还向系统输出中断请求信号IRQ;当中间运算结果或最终运算结果出现异常时,所述运算异常标志控制(35)向系统发出中断请求信号IRQ,并复位读端口地址计数器(17)和读端口脉冲发生控制器(18),停止浮点操作数读时序控制模块(Ⅲ)的工作;
所述32位三态门组(36)的输出端与系统数据总线DB连接,控制端和或门Ⅶ(40)的输出端连接;
所述与门Ⅸ(37)的二个输入端分别与读端口脉冲发生控制器(18)的脉冲③_2、脉冲④_2输出端连接;
所述与门Ⅹ(38)的二个输入端分别与读端口脉冲发生控制器(18)的脉冲④_2、脉冲⑦_2输出端连接;
所述或门Ⅵ(39)的二个输入端分别与读端口脉冲发生控制器(18)的脉冲⑧_2输出端、方式类型个数寄存器(6)的方式输出端连接;
所述或门Ⅶ(40)的二个输入端分别与模块地址识别(1)的CS2信号输出端、系统读信号RD线连接;当CS2为“0”时,在系统读信号RD的作用下,读出中间运算结果或命令执行的最终运算结果。
5.如权利要求4所述的双指令多浮点操作数加/减、乘、除运算控制器,其特征在于::所述浮点操作数读时序控制模块(Ⅲ)与方式类型个数寄存器(6)的类型输出端连接;所述操作数配置及运算控制模块(Ⅴ)与方式类型个数寄存器(6)的方式输出端、运算符移位寄存器(7)的运算符输出端连接;所述方式类型个数寄存器(6)输出的类型是指从双端口只读只写存储器(Ⅰ)读出的第1个操作数的类型,输出的方式是指类型0时,第1个操作数参加除法运算的处理方式;运算符移位寄存器(7)输出的运算符是操作数参与运算的符号;
运算符由二位代码标识组成:00:加法运算;01:减法运算;10:乘法运算;11:除法运算;
操作数类型由一位代码标识组成:0:操作数类型0;1:操作数类型1;
当读出第1个操作数参与加/减或乘法运算时,类型信号控制第1个操作数的运算方式;
操作数类型0:第1个操作数作为参与加/减或乘法运算的操作数2,运算结果作为操作数1,执行运算结果与第1个操作数运算;
操作数类型1:第1个操作数作为参与加/减、乘法运算的操作数1,第2个操作数作为操作数2,执行第1个操作数与第2个操作数的运算;
当操作数类型为“1”时,所述读端口脉冲发生控制器(18)输出脉冲③_2、脉冲④_2;当脉冲③_2或脉冲④_2为“0”时,选通器(29)的选通控制输入端为“0”,输出从双端口只读只写存储器(Ⅰ)读出的第1个操作数;当脉冲③_2和脉冲④_2都为“1”时,输出运算结果;
所述方式类型个数寄存器(6)输出的类型和方式信号控制第1个操作数参加除法运算的操作数类型和除法方式:
当操作数类型为“0”时:操作数交换器(34)的操作数1输入端为运算结果;操作数交换器(34)的操作数2输入端为第1个操作数;
除法方式0:第1个操作数作为浮点数除运算器(33)的操作数a,运算结果作为操作数b;当读第1个操作数和执行第1个操作数除法运算时,脉冲⑧_2为“0”有效,由于方式为“0”状态,使得操作数交换器(34)的控制端为“0”,操作数交换器(34)的2个输入和2个输出进行交换,执行第1操作数/运算结果的运算;
除法方式1:第1个操作数作为浮点数除运算器(33)的操作数a,运算结果作为操作数b;当读第1个操作数和执行第1个操作数除法运算时,脉冲⑧_2为“0”有效,但方式为“1”状态,使得操作数交换器(34)的控制端为“1”,操作数交换器(34)的2个输入和2个输出不进行交换,执行第1个操作数/运算结果的运算;
当操作数类型为“1”时:第1个操作数的除法运算方式与输入的方式信号状态无关;所述读端口脉冲发生控制器(18)不产生脉冲⑧_2信号,脉冲⑧_2输出端为“1”状态,使得操作数交换器(34)的控制端为“1”,操作数交换器(34)的2个输入和2个输出不进行交换;第1个操作数作为浮点数除运算器(33)的操作数a,第2个操作数作为操作数b,执行第1个操作数/第2个操作数的运算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310694831.9A CN103645887B (zh) | 2013-12-13 | 2013-12-13 | 双指令多浮点操作数加/减、乘、除运算控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310694831.9A CN103645887B (zh) | 2013-12-13 | 2013-12-13 | 双指令多浮点操作数加/减、乘、除运算控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103645887A CN103645887A (zh) | 2014-03-19 |
CN103645887B true CN103645887B (zh) | 2016-06-08 |
Family
ID=50251111
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310694831.9A Expired - Fee Related CN103645887B (zh) | 2013-12-13 | 2013-12-13 | 双指令多浮点操作数加/减、乘、除运算控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103645887B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107179895B (zh) * | 2017-05-17 | 2020-08-28 | 北京中科睿芯科技有限公司 | 一种应用复合指令加快数据流结构中指令执行速度的方法 |
CN111124497B (zh) * | 2018-10-11 | 2022-03-29 | 上海寒武纪信息科技有限公司 | 运算方法、装置、计算机设备和存储介质 |
CN113377441B (zh) * | 2021-06-16 | 2023-07-11 | 南方科技大学 | 用于量子物理实验平台的通用时序控制器架构 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101393516A (zh) * | 2008-10-21 | 2009-03-25 | 中兴通讯股份有限公司 | 一种实现移动通信终端计算器四则运算法则的方法和装置 |
CN101706712A (zh) * | 2009-11-27 | 2010-05-12 | 北京龙芯中科技术服务中心有限公司 | 浮点向量乘加运算装置和方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7353368B2 (en) * | 2000-02-15 | 2008-04-01 | Intel Corporation | Method and apparatus for achieving architectural correctness in a multi-mode processor providing floating-point support |
US6922771B2 (en) * | 2002-04-24 | 2005-07-26 | Portalplayer, Inc. | Vector floating point unit |
-
2013
- 2013-12-13 CN CN201310694831.9A patent/CN103645887B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101393516A (zh) * | 2008-10-21 | 2009-03-25 | 中兴通讯股份有限公司 | 一种实现移动通信终端计算器四则运算法则的方法和装置 |
CN101706712A (zh) * | 2009-11-27 | 2010-05-12 | 北京龙芯中科技术服务中心有限公司 | 浮点向量乘加运算装置和方法 |
Non-Patent Citations (2)
Title |
---|
ARM+FPGA组成的PLC结构的通信系统;侯鸿佳等;《广西工学院学报》;20120331;第23卷(第1期);第14-19页 * |
FPGA automatic re-synchronisation for pipelined,floating point control systems applications;Beniamin Apopei等;《Design automation for embedded systems》;20111231;第15卷(第3-4期);第247-288页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103645887A (zh) | 2014-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104866452B (zh) | 基于fpga和tl16c554a的多串口扩展方法 | |
CN204667101U (zh) | 一种变频器控制器 | |
CN103345448B (zh) | 寻址与存储一体化两读出一写入存储控制器 | |
CN103645887B (zh) | 双指令多浮点操作数加/减、乘、除运算控制器 | |
CN103984560A (zh) | 基于大规模粗粒度嵌入式可重构系统及其处理方法 | |
CN202120300U (zh) | Arm+fpga组成的计数器装置 | |
CN103677742B (zh) | 多浮点操作数加/减运算控制器 | |
CN103645886B (zh) | 多浮点操作数加/减、乘、除运算控制器 | |
CN107844321A (zh) | 一种mcu处理系统 | |
CN203746056U (zh) | 多操作数四则混合定点算术运算控制器 | |
CN203689501U (zh) | 多浮点操作数加/减运算控制器 | |
CN203812229U (zh) | 多浮点操作数加/减、乘、除运算控制器 | |
CN202281998U (zh) | 一种标量浮点运算加速器 | |
CN103645880B (zh) | 双指令多浮点操作数加/减运算控制器 | |
CN203386203U (zh) | 寻址与存储一体化两读出一写入存储控制器 | |
CN105425662A (zh) | 基于fpga的集散控制系统中的主处理器及其控制方法 | |
CN203689500U (zh) | 多浮点操作数除运算控制器 | |
CN203689502U (zh) | 双指令多浮点操作数加/减、乘、除运算控制器 | |
CN102033733B (zh) | 新型mcu结构 | |
CN103645878B (zh) | 多操作数四则混合定点算术运算控制器 | |
CN103631559B (zh) | 双指令多浮点操作数除运算控制器 | |
CN102693118A (zh) | 一种标量浮点运算加速器 | |
CN203746054U (zh) | 双指令多浮点操作数除运算控制器 | |
CN103677740B (zh) | 浮点数加/减、乘、除运算执行控制器 | |
CN203746057U (zh) | 双指令多浮点操作数加/减运算控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160608 Termination date: 20201213 |