首页 / 专利库 / 信号处理 / 时钟信号发生器 / 双指令多浮点操作数加/减运算控制器

双指令多浮点操作数加/减运算控制器

阅读:236发布:2022-04-22

专利汇可以提供双指令多浮点操作数加/减运算控制器专利检索,专利查询,专利分析的服务。并且一种双指令多浮点操作数加/减运算 控制器 ,包括命令字及其多操作数写时序控 制模 块 、操作数 存储器 、存储器读时序 控制模块 、存储器数据空标志控制器和运算与输出控制模块;该控制器应用FPGA设计硬连接控制 电路 ,能够存储两条多浮点操作数加/减运算指令,其中,一条指令执行,另一条指令待执行;或一条指令执行,另一条指令写入;或一条指令写入,同时被读出执行;指令写入过程中,内部产生与系统WR同步的写时序脉冲序列,控制命令的写入和操作数的存储;命令执行过程中,内部产生与系统Clock同步的读时序脉冲序列,控制操作数的读出,自主完成所有的加/减运算,不受系统控制;系统能够读出每次运算的中间结果和运算的最终结果。,下面是双指令多浮点操作数加/减运算控制器专利的具体信息内容。

1.一种双指令多浮点操作数加/减运算控制器,其特征在于:该控制器包括操作数存储器(Ⅰ)、命令字及其多操作数写时序控制模(Ⅱ)、存储器读时序控制模块(Ⅲ)、存储器数据空标志控制器(Ⅳ)、运算与输出控制模块(Ⅴ);
所述操作数存储器(Ⅰ)与命令字及其多操作数写时序控制模块(Ⅱ)、存储器读时序控制模块(Ⅲ)、运算与输出控制模块(Ⅴ)连接;
所述命令字及其多操作数写时序控制模块(Ⅱ)还与存储器读时序控制模块(Ⅲ)、存储器数据空标志控制器(Ⅳ)、运算与输出控制模块(Ⅴ)连接;
所述存储器读时序控制模块(Ⅲ)还与存储器数据空标志控制器(Ⅳ)、运算与输出控制模块(Ⅴ)连接;
所述操作数存储器(Ⅰ)为双端口存储器,一个只写端口,一个只读端口,用于储存浮点操作数(下称为操作数);所述操作数存储器(Ⅰ)分为存储器1和存储器2两个存储区域;所述操作数存储器(Ⅰ)的写地址高位输入端AB5_1为“0”,或读地址高位输入端AB5_2为“0”,选中操作数存储器(Ⅰ)的26个低地址存储单元,即存储器1;写地址高位输入端AB5_1为“1”,或读地址高位输入端AB5_2为“1”,选中操作数存储器(Ⅰ)的26个高地址存储单元,即存储器2;
所述命令字及其多操作数写时序控制模块(Ⅱ)控制完成指令的写入和存储,需要占用系统总线;一条指令包括32位命令字和若干个操作数,操作数最多为26个;所述命令字及其多操作数写时序控制模块(Ⅱ)在操作数存储器(Ⅰ)的存储器1或存储器2为数据空,输出写指令允许信号,方允许被系统选中;当被系统选中写命令字时,在系统WR信号的作用下,写入加/减运算命令字;当被系统选中写操作数时,命令字及其多操作数写时序控制模块(Ⅱ)内部产生与系统WR信号同步的写时序脉冲;在写时序脉冲的控制下,将操作数存储在操作数存储器(Ⅰ)的存储器1或存储器2中;一条指令的最后一个操作数被写入存储后,转换操作数存储器(Ⅰ)的写高位地址输入端AB5_1状态,如果操作数存储器(Ⅰ)的存储器1和存储器2都非空,停止命令字及其多操作数写时序控制模块(Ⅱ)的工作;
所述存储器读时序控制模块(Ⅲ)在内部读时序脉冲的控制下,自主完成多浮点操作数从操作数存储器(Ⅰ)中读出,不需要占用系统总线;所述存储器读时序控制模块(Ⅲ)产生与系统时钟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是来自运算结果还是从操作数存储器(Ⅰ)读出的第1个操作数;运算与输出控制模块(Ⅴ)根据运算符确定进行加法还是减法运算,运算中间结果在存储器读时序控制模块(Ⅲ)发出的结果锁存信号作用下锁存运算结果,并判断运算结果是否异常,如果出现异常,向系统发出IRQ信号,停止存储器读时序控制模块(Ⅲ)的工作;当系统需要读出运算结果时,在系统RD信号的作用下能够读出中间运算结果和命令执行的最终运算结果。
2.如权利要求1所述的双指令多浮点操作数加/减运算控制器,其特征在于:所述命令字及其多操作数写时序控制模块(Ⅱ)包括模块地址识别(1)、写高位地址控制器(2)、写端口地址计数器(3)、写端口脉冲发生控制器(4)、待执行命令寄存器(5)、运算符寄存器(6)、执行命令寄存器(7)、运算符移位寄存器(8)、非Ⅰ(9)、非门Ⅱ(10)、或门Ⅰ(11)、或门Ⅱ(12)、或门Ⅲ(13)、或门Ⅳ(14)、与门Ⅰ(15)和与门Ⅱ(16);
所述模块地址识别(1)输入端和系统地址总线AB的A31到A27线连接,CS1输出端和或门Ⅱ(12)的一个输入端连接,CS2输出端和或门Ⅲ(13)的一个输入端、写端口脉冲发生控制器(4)的使能输入端、运算与输出控制模块(Ⅴ)连接;
所述模块地址识别(1)内部设置两个地址值,一个是写命令字地址值,一个是写操作数地址值;所述模块地址识别(1)输入的系统地址总线AB的A31到A27的地址值与模块地址识别(1)中设置的地址值进行比较,如果和写命令字地址值相等,则输出CS1为“0”,如果和写操作数地址值相等,则输出CS2为“0”;在任何时刻,CS1和 CS2只有一个输出为“0”,或输出都为“1”;
所述写高位地址控制器(2)的锁存信号输入端与写端口地址计数器(3)的写溢出输出端连接,写高位地址输入端和非门Ⅱ(10)的输出端连接,复位输入端和与门Ⅰ(15)的输出端连接,输出端和非门Ⅱ(10)的输入端、操作数存储器(Ⅰ)的写地址高位输入端AB5_1、存储器数据空标志控制器(Ⅳ)连接;
所述写高位地址控制器(2)输出的是操作数存储器(Ⅰ)的最高位地址值AB5_1;当操作数存储器(Ⅰ)的存储器1和存储器2的数据都空时,或者当系统复位信号Rst为“0”时,复位写高位地址控制器(2),其输出为“0”;当写高位地址控制器(2)的锁存信号输入端由“1”→“0”时,写高位地址控制器(2)输出端输出的AB5_1状态翻转;
所述写端口地址计数器(3)的操作数个数输入端与系统数据总线DB 的D4到D0线连接,写预置脉冲输入端和或门Ⅱ(12)的输出端连接,写计数脉冲输入端与写端口脉冲发生控制器(4)的脉冲②_1输出端连接,写复位输入端和系统复位信号Rst线连接,写地址输出端和操作数存储器(Ⅰ)的写地址输入端AB_1连接,写溢出输出端还和写端口脉冲发生控制器(4)的写溢出输入端、非门Ⅰ(9)的输入端、存储器数据空标志控制器(Ⅳ)连接;
所述写端口地址计数器(3)实质上是一个减1计数器,系统DB的D4到D0传输的是参与加/减运算的操作数个数值,当操作数存储器(Ⅰ)的存储器1空或存储器2空,且满足模块地址识别(1)的CS2输出端为“0”时,WR信号作为写预置脉冲将操作数个数值作为操作数存储器(Ⅰ)写端口的低5位地址初值预置给写端口地址计数器(3),并将写溢出输出端设置为“1”状态;
所述写端口地址计数器(3)输出操作数存储器(Ⅰ)的写端口低5位地址值AB_1;当写计数脉冲输入端来一个计数脉冲时,写端口地址计数器(3)进行一次-1操作,直到写地址输出端为“0”,AB_1为“0”,此时写溢出信号输出端由“1”→“0”,写溢出信号作为写端口地址计数器(3)停止工作的标志,使得写高位地址控制器(2)的锁存信号输入端由“1”→“0”时,写高位地址控制器(2)输出的AB5_1状态翻转;写端口地址计数器(3)在系统复位信号Rst的作用下,复位写端口地址计数器(3),使得写溢出信号输出端为“0”状态;
所述写端口脉冲发生控制器(4)的同步脉冲输入端与系统写信号WR线连接,启动输入端和与门Ⅱ(16)的输出端连接,脉冲①_1输出端和操作数存储器(Ⅰ)的写信号输入端WR_1连接;
所述写端口脉冲发生控制器(4)的使能输入端为“0”,在启动输入端的脉冲信号作用下启动工作,发出与系统WR脉冲同步的脉冲①_1和脉冲②_1,脉冲①_1作为操作数存储器(Ⅰ)的写入信号WR_1,脉冲②_1作为写端口地址计数器(3)的写计数脉冲;当写溢出信号输出端由“1”→“0”时,所述写端口脉冲发生控制器(4)停止工作,脉冲①_1和脉冲②_1的输出端为“1”状态;
所述待执行命令寄存器(5)的命令输入端和系统数据总线DB的D5到D0线连接,锁存信号输入端和或门Ⅱ(12)的输出端连接,输出端与执行命令寄存器(7)的命令输入端连接;
所述运算符寄存器(6)的运算符输入端和系统数据总线DB的D31到D6线连接,锁存输入端和或门Ⅱ(12)的输出端连接,输出端和运算符移位寄存器(8)的运算符输入端连接;
所述执行命令寄存器(7)的锁存信号输入端与存储器读时序控制模块(Ⅲ)连接,类型输出端、读操作数个数输出端与存储器读时序控制模块(Ⅲ)连接;
所述执行命令寄存器(7)输出的操作数类型为2种:
类型0:写入操作数存储器(Ⅰ)的存储器1或存储器2中的第1个操作数作为参与加/减运算的操作数2,运算结果作为操作数1;
类型1:写入操作数存储器(Ⅰ)的存储器1或存储器2中的第1个操作数作为参与加/减运算的操作数1,第2个操作数作为操作数2;
所述运算符移位寄存器(8)的锁存信号输入端、移位脉冲输入端与存储器读时序控制模块(Ⅲ)连接,输出端与运算与输出控制模块(Ⅴ)连接;
所述运算符移位寄存器(8)在移位脉冲的作用下,运算符移位寄存器(8)中的运算符数据按照顺序向右移1位,其最低位作为运算符输出;
所述非门Ⅰ(9)的输出端和或门Ⅰ(11)的一个输入端连接;
所述或门Ⅰ(11)的另一个输入端和或门Ⅳ(14)的输出端连接,输出端向系统输出写指令允许信号;
所述或门Ⅱ(12)的另二个输入端分别和或门Ⅳ(14)的输出端、系统WR写信号线连接,输出端作为写预置信号还与存储器读时序控制模块(Ⅲ)连接;
所述或门Ⅲ(13)的另一个输入端与系统WR写信号线连接,输出端和与门Ⅱ(16)的一个输入端连接;
所述或门Ⅳ(14)的二个输入端分别与存储器数据空标志控制器(Ⅳ)的存储器1空输出端、存储器2空输出端连接,输出端还和与门Ⅱ(16)的另一个输入端连接;
所述与门Ⅰ(15)的一个输入端与存储器数据空标志控制器(Ⅳ)的存储器1存储器2都空输出端连接,另一个输入端与系统Rst复位信号线连接。
3.如权利要求1所述的双指令多浮点操作数加/减运算控制器,其特征在于:所述存储器读时序控制模块(Ⅲ)包括读高位地址控制器(17)、读端口地址计数器(18)、读端口脉冲发生控制器(19)、异或非门(20)、非门Ⅲ(21)、非门Ⅳ(22)、或门Ⅴ(23)、或门Ⅵ(24)、与门Ⅲ(25)、与门Ⅳ(26)、与门Ⅴ(27)、与门Ⅵ(28) 和与门Ⅶ(29);
所述读高位地址控制器(17)的锁存信号输入端与读端口地址计数器(18)的读溢出输出端连接,读高位地址输入端和非门Ⅲ(21)的输出端连接,复位输入端和与门Ⅲ(25)的输出端连接,输出端和操作数存储器(Ⅰ)的读地址高位输入端AB5_2、非门Ⅲ(21)的输入端连接;
所述读高位地址控制器(17)输出的是操作数存储器(Ⅰ)读端口的最高位地址值AB5_2,当操作数存储器(Ⅰ)的存储器1和存储器2的数据都空时,或者当系统复位信号Rst为“0”时,复位读高位地址控制器(17),其输出端为“0”;当读高位地址控制器(17)的锁存信号输入端由“1”→“0”时,读高位地址控制器(17)输出的AB5_2信号翻转;
所述读端口地址计数器(18)的读预置脉冲输入端与读端口脉冲发生控制器(19)的脉冲②_2输出端连接,读计数脉冲输入端和与门Ⅶ(29)的输出端连接,复位输入端和与门Ⅴ(27)的输出端连接,读操作数个数输入端与执行命令寄存器(7)的读操作数个数输出端连接,读溢出输出端还与读端口脉冲发生控制器(19)的读溢出输入端、存储器数据空标志控制器(Ⅳ)的读溢出输入端连接,读地址输出端与操作数存储器(Ⅰ)的读地址输入端AB_2连接;
所述读端口地址计数器(18)实质上是一个减1计数器,读预置脉冲将来自执行命令寄存器(7)输出的读操作数个数预置给读端口地址计数器(18),使得读端口地址计数器(18)的读地址输出端输出的地址值AB_2为读操作数个数,读端口地址计数器(18)从读操作数个数开始进行-1计数;当读计数脉冲输入端来一个计数脉冲时,读端口地址计数器(18)输出的读地址值-1,直到读地址输出端为“0”,AB_2为“0”,表明最后一个操作数已读出,溢出信号输出端由“1”→“0”,溢出信号也是读端口地址计数器(18)停止工作的标志;当输入复位信号为“0”时,复位读端口地址计数器(18),读端口地址计数器(18)停止计数工作,溢出输出端为“0”;
所述读端口脉冲发生控制器(19)的同步脉冲输入端与时钟信号Clock线连接,启动输入端和与门Ⅳ(26)连接,复位输入端和与门Ⅴ(27)的输出端连接,类型输入端与执行命令寄存器(7)的类型输出端连接;脉冲①_2输出端与执行命令寄存器(7)和运算符移位寄存器(8)的锁存信号输入端连接,脉冲③_2输出端和与门Ⅵ(28)的一个输入端、运算与输出控制模块(Ⅴ)连接,脉冲④_2输出端和与门Ⅶ(29)的一个输入端、运算与输出控制模块(Ⅴ)连接,脉冲⑤_2输出端和与门Ⅵ(28)的另一个输入端连接,脉冲⑥_2输出端和与门Ⅶ(29)的另一个输入端连接,脉冲⑦_2输出端和运算与输出控制模块(Ⅴ)连接,读运行状态输出端与存储器数据空标志控制器(Ⅳ)的读运行状态输入端连接,启动使能输出端和或门Ⅵ(24)的一个输入端、存储器数据空标志控制器(Ⅳ)的启动使能输入端连接;
所述读端口脉冲发生控制器(19)输出的脉冲与系统时钟Clock同步;当操作数存储器(Ⅰ)的存储器1或存储器2为数据空,启动输入端由“1”→“0”时,启动读端口脉冲发生控制器(19)开始工作;当操作数存储器(Ⅰ)的存储器1和存储器2都为数据空时,在写预置脉冲的作用下启动输出端由“1”→“0”,启动读端口脉冲发生控制器(19)开始工作;启动的同时置读端口脉冲发生控制器(19)的读运行状态输出端为“0”和启动使能输出端为“1”状态;当读运行状态为“1”时,表明当前命令的运算过程已执行结束;当启动使能信号为“0”时,表明没有命令在执行,以及执行命令的运算结果已锁存;
所述读端口脉冲发生控制器(19)根据类型输入信号为“0”还是为“1”,确定读控制操作的脉冲序列;当读端口地址计数器(18)输出的溢出信号由“1”→“0”产生下降沿时,读端口脉冲发生控制器(19)再经过一个运算周期时间,读运行状态输出端由“0” →“1”,并发出一个系统时钟Clock周期存最终运算结果的脉冲⑦_2,启动使能输出端由“1” →“0”,停止读端口脉冲发生控制器(19)的工作,置所有脉冲输出端为“1”状态;当输入的复位信号为“0”时,复位读端口脉冲发生控制器(19),复位使得读运行状态输出端为“1”状态,启动使能输出端为“0”,置所有脉冲输出端为“1”状态,并停止读端口脉冲发生控制器(19)的工作;
所述异或非门(20)的二个输入端分别与存储器数据空标志控制器(Ⅳ)的存储器1空输出端、存储器2空输出端连接,输出端和或门Ⅵ(24)的另一个输入端连接;
所述非门Ⅳ(22)的输入端和或门Ⅱ(12)的输出端写预置信号连接,输出端和或门Ⅴ(23)的一个输入端连接;
所述或门Ⅴ(23)的另一个输入端和存储器数据空标志控制器(Ⅳ)的存储器1存储器2都空输出端连接,输出端和与门Ⅳ(26)的一个输入端连接;
所述或门Ⅵ(24)的输出端和与门Ⅳ(26)的另一个输入端连接;
所述与门Ⅲ(25)的一个输入端与存储器数据空标志控制器(Ⅳ)的存储器1存储器2都空输出端连接,另一个输入端和系统复位信号Rst线连接;
所述与门Ⅴ(27)的一个输入端与系统复位信号Rst线连接,另一个输入端和运算与输出控制模块(Ⅴ)连接;
所述与门Ⅵ(28)的输出端与操作数存储器(Ⅰ)的读地址输入端RD_2、运算符移位寄存器(8)的移位脉冲输入端连接。
4.如权利要求1所述的双指令多浮点操作数加/减运算控制器,其特征在于:所述运算与输出控制模块(Ⅴ)包括选通器(30)、结果寄存器(31)、浮点数加/减运算器(32a)、运算异常标志控制(33)、32位三态门组(34)、或门Ⅶ(35)、或门Ⅷ(36)和或门Ⅸ(37);
所述选通器(30)的二个输入端分别与操作数存储器(Ⅰ)的读数据输出端DB_2、浮点数加/减运算器(32a)的运算结果输出端连接,选通控制输入端和或门Ⅶ(35)的输出端连接,输出端与结果寄存器(31)的输入端连接;
所述选通器(30)根据操作数类型完成执行命令第1次运算的操作数1的选择配置,当操作数类型为“1”时,读端口脉冲发生控制器(19)发出从操作数存储器(Ⅰ)读出第一个操作数的脉冲③_2和写计数脉冲④_2;当脉冲③_2或脉冲④_2为“0”时,所述选通器(30)输出从操作数存储器(Ⅰ)读出的第1个操作数;当脉冲③_2和脉冲④_2都为“1”时,选通器(30)输出运算结果;
所述结果寄存器(31)的锁存脉冲输入端和或门Ⅷ(36)的输出端连接,输出端和浮点数加/减运算器(32a)的操作数1输入端、32位三态门组(34)输入端连接;
所述浮点数加/减运算器(32a)的操作数2输入端和操作数存储器(Ⅰ)的数据输出端DB_
2连接,运算符输入端和运算符移位寄存器(8)的运算符输出端连接,运算结果输出端还与运算异常标志控制(33)的输入端连接;
所述浮点数加/减运算器(32a)根据运算符进行加法或减法运算,当运算符输入端为“0”时,控制浮点数加/减运算器(32a)进行加法运算,当运算符输入端为“1”时,进行减法运算;
所述运算异常标志控制(33)的锁存脉冲输入端与读端口脉冲发生控制器(19)的脉冲⑦_2输出端连接,输出端和与门Ⅴ(27)的一个输入端连接,并向系统输出中断请求信号IRQ;
所述浮点数加/减运算器(32a)的运算结果锁存在结果寄存器(31)中,以及运算异常标志控制(33)模块中;当中间运算结果或最终运算结果出现异常时,运算异常标志控制(33)向系统发出中断请求信号IRQ,并复位读端口地址计数器(18)和读端口脉冲发生控制器(19),停止读端口地址计数器(18)和读端口脉冲发生控制器(19)的工作;
所述32位三态门组(34)的输出端与系统数据总线DB连接,控制端和或门Ⅸ(37)的输出端连接;
所述或门Ⅶ(35)的二个输入端分别与读端口脉冲发生控制器(19)的脉冲③_2、脉冲④_2输出端连接;
所述或门Ⅷ(36)的二个输入端分别与读端口脉冲发生控制器(19)的脉冲④_2、脉冲⑦_2输出端连接;
所述或门Ⅸ(37)的二个输入端分别与模块地址识别(1)的CS2输出端、系统读信号RD线连接,当CS2为“0”时,在系统RD信号的作用下,读出中间运算结果和命令执行的最终运算结果。

说明书全文

双指令多浮点操作数加/减运算控制器

技术领域

[0001] 本发明涉及一种双指令多浮点操作数加/减运算控制器,尤其涉及一种基于采用FPGA并行操作电路硬连接的双指令多浮点操作数加/减运算控制电路及其时序控制方法。

背景技术

[0002] 浮点数加/减运算器实现2个32位符合IEEE754标准的浮点数加/减运算;运算器输入参与运算的两个浮点操作数,一个是操作数1,一个是操作数2,执行一次加法或减法运算输出一个运算结果,在运算过程中,操作数1和操作数2必须维持稳定;运算器的操作数1输入端与一个暂存器的输出端连接,操作数2输入端直接与微处理器的内部数据总线连接,或与另一个暂存器的输出端连接;其操作过程分为两种情况,一种情况是分时通过微处理器的内部数据总线将操作数1和操作数2分别传输至运算器的两个暂存器,运算结束再通过微处理器的内部数据总线将运算结果写回存放在操作数1的暂存器中,并通过数据总线传输到存储器的一个存储单元中;第二种情况是操作数1是上次运算的结果,上次运算结果写回操作数1的暂存器中之后,再传输操作数2,然后进行运算;运算结果写回和操作数2的传输的处理过程是通过微处理器的内部数据总线分时操作,如果运算器运算时间为2个或3个时钟周期,浮点操作数的传输、运算结果的写回和运算将占用多个系统时钟周期Clock;如果有多个连续的加减运算,比如7个操作数,需要6条运算指令予以实现,执行这6条指令需要取指和指令译码6次,结果写回6次,而操作数2传送给运算器的一个输入端和结果写回到操作数1暂存器的过程是由微处理器控制部件发出控制脉冲处理,不利于进一步提高算术运算类指令执行的速度;浮点数加/减运算器的设计也采用流线执行的方式,将运算过程分为若干模,在微处理器控制部件发出的时序脉冲的控制下,多条浮点数加/减运算指令按照模块顺序执行,流水线中的每条指令运算结束都需要将运算结果写回;但对于所执行的浮点数加/减法指令需要应用上一条运算指令的运算结果作为操作数的指令,则浮点数加/减运算的流水线操作失去作用,影响了浮点数加/减运算指令执行的速度。

发明内容

[0003] 本发明的目的在于提供一种双指令多浮点操作数加/减运算控制器,应用FPGA设计双指令多浮点操作数加/减运算控制器的硬连接电路;该控制器的多浮点操作数加/减运算命令及其多操作数的写入需要占用系统总线,而命令的执行不占用系统总线;还能够存储两条多浮点操作数加/减运算指令,其中,一条指令正在执行处理,另一条指令的命令及其多浮点操作数(下称为操作数)待执行;或一条指令正在执行处理,另一条指令的命令及其多操作数正在写入控制器;或一条指令的命令及其多操作数正在写入控制器,且同时两条指令被执行处理;在一条指令的命令及其多操作数写入控制器的过程中,控制器内部产生与系统WR信号同步的写时序脉冲信号,在写时序脉冲信号的作用下,按照时序写入运算命令及操作数存储在内部操作数存储器中;在命令执行处理过程中,控制器内部产生与系统时钟Clock信号同步的读时序脉冲信号,在读时序脉冲信号控制下读出操作数执行运算,命令执行处理过程是在内部读时序脉冲信号作用下自主完成所有的加/减运算,不受系统控制;在控制器执行命令处理过程中,系统能够读出运算过程中的中间结果和最终运算结果。
[0004] 解决上述技术问题的技术方案是:一种双指令多浮点操作数加/减运算控制器,涉及一种基于采用FPGA并行操作电路硬连接的双指令多浮点操作数加/减运算控制电路及其时序控制方法,包括操作数存储器、命令字及其多操作数写时序控制模块、存储器读时序控制模块、存储器数据空标志控制器、运算与输出控制模块;
[0005] 所述操作数存储器与命令字及其多操作数写时序控制模块、存储器读时序控制模块、运算与输出控制模块连接;
[0006] 所述命令字及其多操作数写时序控制模块还与存储器读时序控制模块、存储器数据空标志控制器、运算与输出控制模块连接;
[0007] 所述存储器读时序控制模块还与存储器数据空标志控制器、运算与输出控制模块连接;
[0008] 所述操作数存储器为双端口存储器,一个只写端口,一个只读端口,用于储存浮点操作数(下称为操作数);所述操作数存储器分为存储器1和存储器2两个存储区域;所述操作数存储器的写地址高位输入端AB5_1为“0”,或读地址高位输入端AB5_2为“0”,选中操作数存储器的26个低地址存储单元,即存储器1;写地址高位输入端AB5_1为“1”,或读地址高位输入端AB5_2为“1”,选中操作数存储器的26个高地址存储单元,即存储器2;
[0009] 所述命令字及其多操作数写时序控制模块控制完成指令的写入和存储,需要占用系统总线;一条指令包括32位命令字和若干个操作数,操作数最多为26个;所述命令字及其多操作数写时序控制模块在操作数存储器的存储器1或存储器2为数据空,输出写指令允许信号,方允许被系统选中;当被系统选中写命令字时,在系统WR信号的作用下,写入加/减运算命令字;当被系统选中写操作数时,命令字及其多操作数写时序控制模块内部产生与系统WR信号同步的写时序脉冲;在写时序脉冲的控制下,将操作数存储在操作数存储器的存储器1或存储器2中,一条指令的最后一个操作数被写入存储后,转换操作数存储器的写高位地址输入端AB5_1状态;如果操作数存储器的存储器1和存储器2都非空,停止命令字及其多操作数写时序控制模块的工作;
[0010] 所述存储器读时序控制模块在内部读时序脉冲的控制下,自主完成多浮点操作数从操作数存储器中读出,不需要占用系统总线;所述存储器读时序控制模块产生与系统时钟Clock信号同步的读时序脉冲序列,按顺序将操作数读出参与加或减运算;当参与运算的最后一个操作数读出之后,产生读地址溢出信号,然后再经过一个加或减的运算周期,发出读运行状态结束的信号,产生一个时钟周期Clock的结果存脉冲,然后再发出启动使能信号;
[0011] 所述存储器读时序控制模块依据存储器数据空标志控制器的空标志状态读出操作执行,有下面4种工作状态:
[0012] 1)所述存储器数据空标志控制器无存储器1空、存储器2空的标志输出,表明存储器1、存储器2都为数据非空,一个非空的存储器正在写入指令或写入指令过程已结束,另一个存储器正在读出操作数;若正在执行的命令运算结束,启动使能信号由“1”→“0”,转为一个存储器空,另一个存储器非空的状态,此时在命令运算过程结束后的第1 个系统时钟Clock的下降沿作为时序脉冲发生的启动信号,向系统发送写指令允许信号;启动存储器读时序控制模块的工作;
[0013] 2)所述存储器数据空标志控制器输出任何一个存储器空的标志,会处于两种操作状态,一是非空的存储器正在写入操作数,该存储器同时执行读出操作;二是非空的存储器写入指令过程已结束,正在执行读出操作;若命令运算过程结束,启动使能信号由“1”→“0”,转为存储器1和存储器2都空的状态;
[0014] 3)所述存储器数据空标志控制器同时输出存储器1空、存储器2空的标志,停止存储器读时序控制模块的工作,向系统发送写指令允许信号;
[0015] 4)所述存储器数据空标志控制器同时输出存储器1空、存储器2空的标志,且命令字及其多操作数写时序控制模块再次被系统选中写入命令字,命令字及其多操作数写时序控制模块输出写预置脉冲作为浮点操作数读时序控制模块的内部时序脉冲发生器的启动信号;
[0016] 所述运算与输出控制模块根据操作数类型,对参与运算的第1个操作数进行选通控制,选通配置参与加/减运算的操作数1是来自运算结果还是从操作数存储器读出的第1个操作数;运算与输出控制模块根据运算符确定进行加法还是减法运算,运算中间结果在存储器读时序控制模块发出的结果锁存信号作用下锁存运算结果,并判断运算结果是否异常,如果出现异常,向系统发出IRQ信号,停止存储器读时序控制模块的工作;当系统需要读出运算结果时,在系统RD信号的作用下能够读出中间运算结果和命令执行的最终运算结果。
[0017] 其进一步技术方案是:所述命令字及其多操作数写时序控制模块包括模块地址识别、写高位地址控制器、写端口地址计数器、写端口脉冲发生控制器、待执行命令寄存器、运算符寄存器、执行命令寄存器、运算符移位寄存器、非Ⅰ、非门Ⅱ、或门Ⅰ、或门Ⅱ、或门Ⅲ、或门Ⅳ、与门Ⅰ和与门Ⅱ;
[0018] 所述模块地址识别输入端和系统地址总线AB的A31到A27线连接,CS1输出端和或门Ⅱ的一个输入端连接,CS2输出端和或门Ⅲ的一个输入端、写端口脉冲发生控制器的使能输入端、运算与输出控制模块连接;
[0019] 所述模块地址识别内部设置两个地址值,一个是写命令字地址值,一个是写操作数地址值;所述模块地址识别输入的系统地址总线AB的A31到A27的地址值与模块地址识别中设置的地址值进行比较,如果和写命令字地址值相等,则输出CS1为“0”,如果和写操作数地址值相等,则输出CS2为“0”;在任何时刻,CS1和 CS2只有一个输出为“0”,或输出都为“1”;
[0020] 所述写高位地址控制器的锁存信号输入端与写端口地址计数器的写溢出输出端连接,写高位地址输入端和非门Ⅱ的输出端连接,复位输入端和与门Ⅰ的输出端连接,输出端和非门Ⅱ的输入端、操作数存储器的写地址高位输入端AB5_1、存储器数据空标志控制器连接;
[0021] 所述写高位地址控制器输出的是操作数存储器的最高位地址值AB5_1;当操作数存储器的存储器1和存储器2的数据都空时,或者当系统复位信号Rst为“0”时,复位写高位地址控制器,其输出为“0”;当写高位地址控制器的锁存信号输入端由“1”→“0”时,写高位地址控制器输出端输出的AB5_1状态翻转;
[0022] 所述写端口地址计数器的操作数个数输入端与系统数据总线DB的D4到D0线连接,写预置脉冲输入端和或门Ⅱ的输出端连接,写计数脉冲输入端与写端口脉冲发生控制器的脉冲②_1输出端连接,写复位输入端和系统复位信号Rst线连接,写地址输出端和操作数存储器的写地址输入端AB_1连接,写溢出输出端还和写端口脉冲发生控制器的写溢出输入端、非门Ⅰ的输入端、存储器数据空标志控制器连接;
[0023] 所述写端口地址计数器实质上是一个减1计数器,系统DB的D4到D0传输的是参与加/减运算的操作数个数值,当操作数存储器的存储器1空或存储器2空,且满足模块地址识别的CS2输出端为“0”时,WR信号作为写预置脉冲将操作数个数值作为操作数存储器写端口的低5位地址初值预置给写端口地址计数器,并将写溢出输出端设置为“1”状态;
[0024] 所述写端口地址计数器输出操作数存储器的写端口低5位地址值AB_1;当写计数脉冲输入端来一个计数脉冲时,写端口地址计数器进行一次-1操作,直到写地址输出端为“0”, AB_1为“0”,此时写溢出信号输出端由“1”→“0”,写溢出信号作为写端口地址计数器停止工作的标志,使得写高位地址控制器的锁存信号输入端由“1”→“0”时,写高位地址控制器输出的AB5_1状态翻转;写端口地址计数器在系统复位信号Rst的作用下,复位写端口地址计数器,使得写溢出信号输出端为“0”状态;
[0025] 所述写端口脉冲发生控制器的同步脉冲输入端与系统写信号WR线连接,启动输入端和与门Ⅱ的输出端连接,脉冲①_1输出端和操作数存储器的写信号输入端WR_1连接;
[0026] 所述写端口脉冲发生控制器的使能输入端为“0”,在启动输入端的脉冲信号作用下启动工作,发出与系统WR脉冲同步的脉冲①_1和脉冲②_1,脉冲①_1作为操作数存储器的写入信号WR_1,脉冲②_1作为写端口地址计数器的写计数脉冲;所述写端口地址当写溢出信号输出端由“1”→“0”时,所述写端口脉冲发生控制器停止工作,脉冲①_1和脉冲②_1的输出端为“1”状态;
[0027] 所述待执行命令寄存器的命令输入端和系统数据总线DB的D5到D0线连接,锁存信号输入端和或门Ⅱ的输出端连接,输出端和与执行命令寄存器的命令输入端连接;
[0028] 所述运算符寄存器的运算符输入端和系统数据总线DB的D31到D6线连接,锁存输入端和或门Ⅱ的输出端连接,输出端和运算符移位寄存器的运算符输入端连接;
[0029] 所述执行命令寄存器的锁存信号输入端与存储器读时序控制模块连接,类型输出端、读操作数个数输出端与存储器读时序控制模块连接;
[0030] 所述执行命令寄存器输出的操作数类型为2种:
[0031] 类型0:写入操作数存储器的存储器1或存储器2中的第1个操作数作为参与加/减运算的操作数2,运算结果作为操作数1;
[0032] 类型1:写入操作数存储器的存储器1或存储器2中的第1个操作数作为参与加/减运算的操作数1,第2个操作数作为操作数2;
[0033] 所述运算符移位寄存器的锁存信号输入端、移位脉冲输入端与存储器读时序控制模块连接,输出端与运算与输出控制模块连接;
[0034] 所述运算符移位寄存器在移位脉冲的作用下,运算符移位寄存器中的运算符数据按照顺序向右移1位,其最低位作为运算符输出;
[0035] 所述非门Ⅰ的输出端和或门Ⅰ的一个输入端连接;
[0036] 所述或门Ⅰ的另一个输入端和或门Ⅳ的输出端连接,输出端向系统输出写指令允许信号;
[0037] 所述或门Ⅱ的另二个输入端分别和或门Ⅳ的输出端、系统WR写信号线连接,输出端作为写预置信号还与存储器读时序控制模块连接;
[0038] 所述或门Ⅲ的另一个输入端与系统WR写信号线连接,输出端和与门Ⅱ的一个输入端连接;
[0039] 所述或门Ⅳ的二个输入端分别与存储器数据空标志控制器的存储器1空输出端、存储器2空输出端连接,输出端还和与门Ⅱ的另一个输入端连接;
[0040] 所述与门Ⅰ的一个输入端与存储器数据空标志控制器的存储器1存储器2都空输出端连接,另一个输入端与系统Rst复位信号线连接。
[0041] 其进一步技术方案是:所述存储器读时序控制模块包括读高位地址控制器、读端口地址计数器、读端口脉冲发生控制器、异或非门、非门Ⅲ、非门Ⅳ、或门Ⅴ、或门Ⅵ、与门Ⅲ、与门Ⅳ、与门Ⅴ、与门Ⅵ 和与门Ⅶ;
[0042] 所述读高位地址控制器的锁存信号输入端与读端口地址计数器的读溢出输出端连接,读高位地址输入端和非门Ⅲ的输出端连接,复位输入端和与门Ⅲ的输出端连接,输出端和操作数存储器的读地址高位输入端AB5_2、非门Ⅲ的输入端连接;
[0043] 所述读高位地址控制器输出的是操作数存储器读端口的最高位地址值AB5_2,当操作数存储器的存储器1和存储器2的数据都空时,或者当系统复位信号Rst为“0”时,复位读高位地址控制器,其输出端为“0”;当读高位地址控制器的锁存信号输入端由“1”→“0”时,读高位地址控制器输出的AB5_2信号翻转;
[0044] 所述读端口地址计数器的读预置脉冲输入端与读端口脉冲发生控制器的脉冲②_2输出端连接,读计数脉冲输入端和与门Ⅶ的输出端连接,复位输入端和与门Ⅴ的输出端连接,读操作数个数输入端与执行命令寄存器的读操作数个数输出端连接,读溢出输出端还与读端口脉冲发生控制器的读溢出输入端、存储器数据空标志控制器的读溢出输入端连接,读地址输出端与操作数存储器的读地址输入端AB_2连接;
[0045] 所述读端口地址计数器实质上是一个减1计数器,读预置脉冲将来自执行命令寄存器输出的读操作数个数预置给读端口地址计数器,使得读端口地址计数器的读地址输出端输出的地址值AB_2为读操作数个数,读端口地址计数器从读操作数个数开始进行-1计数;当读计数脉冲输入端来一个计数脉冲时,读端口地址计数器输出的读地址值-1,直到读地址输出端为“0”, AB_2为“0”,表明最后一个操作数已读出,溢出信号输出端由“1”→“0”,溢出信号也是读端口地址计数器停止工作的标志;当输入复位信号为“0”时,复位读端口地址计数器,读端口地址计数器停止计数工作,溢出输出端为“0”;
[0046] 所述读端口脉冲发生控制器的同步脉冲输入端与时钟信号Clock线连接,启动输入端和与门Ⅳ连接,复位输入端和与门Ⅴ的输出端连接,类型输入端与执行命令寄存器的类型输出端连接;脉冲①_2输出端与执行命令寄存器和运算符移位寄存器的锁存信号输入端连接,脉冲③_2输出端和与门Ⅵ的一个输入端、运算与输出控制模块连接,脉冲④_2输出端和与门Ⅶ的一个输入端、运算与输出控制模块连接,脉冲⑤_2输出端和与门Ⅵ的另一个输入端连接,脉冲⑥_2输出端和与门Ⅶ的另一个输入端连接,脉冲⑦_2输出端和运算与输出控制模块连接,读运行状态输出端与存储器数据空标志控制器的读运行状态输入端连接,启动使能输出端和或门Ⅵ的一个输入端、存储器数据空标志控制器的启动使能输入端连接;
[0047] 所述读端口脉冲发生控制器输出的脉冲与系统时钟Clock同步;当操作数存储器的存储器1或存储器2为数据空,启动输入端由“1”→“0” 时,启动读端口脉冲发生控制器开始工作;当操作数存储器的存储器1和存储器2都为数据空时,在写预置脉冲的作用下启动输出端由“1”→“0”,启动读端口脉冲发生控制器开始工作;启动的同时置读端口脉冲发生控制器的读运行状态输出端为“0”和启动使能输出端为“1”状态;当读运行状态为“1”时,表明当前命令的运算过程已执行结束;当启动使能信号为“0”时,表明没有命令在执行,以及执行命令的运算结果已锁存;
[0048] 所述读端口脉冲发生控制器根据类型输入信号为“0”还是为“1”,确定读控制操作的脉冲序列;当读端口地址计数器输出的溢出信号由“1”→“0”产生下降沿时,读端口脉冲发生控制器再经过一个运算周期时间,读运行状态输出端由“0” →“1”,并发出一个系统时钟Clock周期存最终运算结果的脉冲⑦_2,启动使能输出端由“1” →“0”,停止读端口脉冲发生控制器的工作,置所有脉冲输出端为“1”状态;当输入的复位信号为“0”时,复位读端口脉冲发生控制器,复位使得读运行状态输出端为“1”状态,启动使能输出端为“0”, 置所有脉冲输出端为“1”状态,并停止读端口脉冲发生控制器的工作;
[0049] 所述异或非门的二个输入端分别与存储器数据空标志控制器的存储器1空输出端、存储器2空输出端连接,输出端和或门Ⅵ的另一个输入端连接;
[0050] 所述非门Ⅳ的输入端和或门Ⅱ的输出端写预置信号连接,输出端和或门Ⅴ的一个输入端连接;
[0051] 所述或门Ⅴ的另一个输入端和存储器数据空标志控制器的存储器1存储器2都空输出端连接,输出端和与门Ⅳ的一个输入端连接;
[0052] 所述或门Ⅵ的输出端和与门Ⅳ的另一个输入端连接;
[0053] 所述与门Ⅲ的一个输入端与存储器数据空标志控制器的存储器1存储器2都空输出端连接,另一个输入端和系统复位信号Rst线连接;
[0054] 所述与门Ⅴ的一个输入端与系统复位信号Rst线连接,另一个输入端和运算与输出控制模块连接;
[0055] 所述与门Ⅵ的输出端与操作数存储器的读地址输入端RD_2、运算符移位寄存器的移位脉冲输入端连接。
[0056] 其进一步技术方案是:所述运算与输出控制模块包括选通器、结果寄存器、浮点数加/减运算器、运算异常标志控制、32位三态门组、或门Ⅶ、或门Ⅷ和或门Ⅸ;
[0057] 所述选通器的二个输入端分别与操作数存储器的读数据输出端DB_2、浮点数加/减运算器的运算结果输出端连接,选通控制输入端和或门Ⅶ的输出端连接,输出端与结果寄存器的输入端连接;
[0058] 所述选通器根据操作数类型完成执行命令第1次运算的操作数1的选择配置,当操作数类型为“1”时,读端口脉冲发生控制器发出从操作数存储器读出第一个操作数的脉冲③_2和写计数脉冲④_2;当脉冲③_2或脉冲④_2为“0”时,所述选通器输出从操作数存储器读出的第1个操作数;当脉冲③_2和脉冲④_2都为“1”时,选通器输出运算结果;
[0059] 所述结果寄存器的锁存脉冲输入端和或门Ⅷ的输出端连接,输出端和浮点数加/减运算器的操作数1输入端、32位三态门组输入端连接;
[0060] 所述浮点数加/减运算器的操作数2输入端和操作数存储器的数据输出端DB_2连接,运算符输入端和运算符移位寄存器的运算符输出端连接,运算结果输出端还与运算异常标志控制的输入端连接;
[0061] 所述浮点数加/减运算器根据运算符进行加法或减法运算,当运算符输入端为“0”时,控制浮点数加/减运算器进行加法运算,当运算符输入端为“1”时,进行减法运算;
[0062] 所述运算异常标志控制的锁存脉冲输入端与读端口脉冲发生控制器的脉冲⑦_2输出端连接,输出端和与门Ⅴ的一个输入端连接,并向系统输出中断请求信号IRQ;
[0063] 所述浮点数加/减运算器的运算结果锁存在结果寄存器中,以及运算异常标志控制模块中;当中间运算结果或最终运算结果出现异常时,运算异常标志控制向系统发出中断请求信号IRQ,并复位读端口地址计数器和读端口脉冲发生控制器,停止读端口地址计数器和读端口脉冲发生控制器的工作;
[0064] 所述32位三态门组的输出端与系统数据总线DB连接,控制端和或门Ⅸ的输出端连接;
[0065] 所述或门Ⅶ的二个输入端分别与读端口脉冲发生控制器的脉冲③_2、脉冲④_2输出端连接;
[0066] 所述或门Ⅷ的二个输入端分别与读端口脉冲发生控制器的脉冲④_2、脉冲⑦_2输出端连接;
[0067] 所述或门Ⅸ的二个输入端分别与模块地址识别的CS2输出端、系统读信号RD线连接,当CS2为“0”时,在系统RD信号的作用下,读出中间运算结果和命令执行的最终运算结果。
[0068] 由于采用以上结构,本发明之双指令多浮点操作数加/减运算控制器具有以下有益效果:
[0069] 一、自主控制指令执行功能
[0070] 本发明之双指令多浮点操作数加/减运算控制器在指令执行过程中,控制器内部产生与系统Clock同步的读时序脉冲序列,在读时序脉冲序列的控制下,从控制器的存储器中读出操作数,自主完成该指令的所有操作数的加/减运算,不受系统控制。
[0071] 二、双指令并行处理功能
[0072] 本发明之双指令多浮点操作数加/减运算控制器内部设置了一个操作数存储器,分为存储器1和存储器2两个存储模块,能够存储两条多浮点操作数加/减运算指令的运算命令和多个操作数,命令写入过程中,内部产生与系统WR同步的写时序脉冲序列控制命令的写入和操作数的存储;命令执行过程中,内部产生与系统Clock同步的读时序脉冲序列控制操作数的读出;一条指令执行,另一条指令待执行;或一条指令正在执行,另一条指令写入;或一条命指令正在写入,同时被读出执行。
[0073] 三、一条指令执行多个操作数的加/减运算
[0074] 本发明之双指令多浮点操作数加/减运算控制器中,每条加/减运算指令能够有26个操作数,这样一条指令相当于相同加/减运算的多条指令,减少了系统对命令操作码的译码和命令传输操作过程,提高了处理速度。
[0075] 四、控制器性价比高
[0076] 本发明之双指令多浮点操作数加/减运算控制器以FPGA的硬连接控制电路为核心,应用写时序脉冲控制、读时序脉冲控制,能够达到自主完成多浮点操作数加/减运算,同时两条指令能够并行处理的目的,对于多个操作数加/减运算只需要发送一条指令即完成多操作数的加或减运算,提高了系统执行指令序列的速度,具有较高的性价比。
[0077] 下面结合附图实施例对本发明之双指令浮点数加/减运算执行控制器的技术特征作进一步的说明。

附图说明

[0078] 图1:本发明之双指令多浮点操作数加/减运算控制器的系统结构框图
[0079] 图2:本发明之双指令多浮点操作数加/减运算控制器的操作数存储器端口图;
[0080] 图3:本发明之双指令多浮点操作数加/减运算控制器的命令字及其多操作数写时序控制模块的电路连接图;
[0081] 图4:本发明之双指令多浮点操作数加/减运算控制器的存储器数据空标志控制器端口图;
[0082] 图5:本发明之双指令多浮点操作数加/减运算控制器的存储器读时序控制模块的电路连接图;
[0083] 图6:本发明之双指令多浮点操作数加/减运算控制器的运算与输出控制模块的电路连接图;
[0084] 图7:本发明之双指令多浮点操作数加/减运算控制器的存储器1空逻辑判断图;
[0085] 图8:本发明之双指令多浮点操作数加/减运算控制器的存储器2空逻辑判断图;
[0086] 图9:本发明之双指令多浮点操作数加/减运算控制器的写时序图;
[0087] 图10:本发明之双指令多浮点操作数加/减运算控制器的存储器1和存储器2空启动时序图;
[0088] 图11:本发明之双指令多浮点操作数加/减运算控制器的存储器1或存储器2空启动时序图;
[0089] 图12:本发明之双指令多浮点操作数加/减运算控制器的读时序图;
[0090] 图13:本发明实施例二之双指令多浮点操作数乘运算控制器的命令字及其多操作数写时序控制模块的电路连接图;
[0091] 图14:本发明实施例二之双指令多浮点操作数乘运算控制器的运算与输出控制模块的电路连接图。
[0092] 图中:
[0093] Ⅰ—操作数存储器,Ⅱ—命令字及其多操作数写时序控制模块,Ⅲ—存储器读时序控制模块,Ⅳ—存储器数据空标志控制器,Ⅴ—运算与输出控制模块;
[0094] 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—结果寄存器,
32a—浮点数加/减运算器,32b—浮点数乘运算器,33—运算异常标志控制,34—32位三态门组,35—或门Ⅶ,36—或门Ⅷ,37—或门Ⅸ。
[0095] 文中缩略语说明:
[0096] FPGA-Field Programmable Gate Array,现场可编程门阵列
[0097] DB-Data Bus,数据总线;
[0098] AB-Address Bus,地址总线;
[0099] CS-Chip Select,片选或使能,图中CS代表“使能信号”;
[0100] Clock-时钟;
[0101] RD-Read,读,图中代表“读信号”;
[0102] WR-Write,写,图中代表“写信号”;
[0103] IRQ-Interrupt Request,中断申请,图中代表“中断请求信号”;
[0104] Rst-Reset,复位。

具体实施方式

[0105] 实施例一:
[0106] 一种双指令多浮点操作数加/减运算控制器,如图1所示,该控制器包括操作数存储器Ⅰ、命令字及其多操作数写时序控制模块Ⅱ、存储器读时序控制模块Ⅲ、存储器数据空标志控制器Ⅳ、运算与输出控制模块Ⅴ;
[0107] 所述操作数存储器Ⅰ与命令字及其多操作数写时序控制模块Ⅱ、存储器读时序控制模块Ⅲ、运算与输出控制模块Ⅴ连接;
[0108] 所述命令字及其多操作数写时序控制模块Ⅱ还与存储器读时序控制模块Ⅲ、存储器数据空标志控制器Ⅳ、运算与输出控制模块Ⅴ连接;
[0109] 所述存储器读时序控制模块Ⅲ还与存储器数据空标志控制器Ⅳ、运算与输出控制模块Ⅴ连接;
[0110] 所述操作数存储器Ⅰ为双端口存储器,一个只写端口,一个只读端口,用于储存浮点操作数(下称为操作数);所述操作数存储器Ⅰ分为存储器1和存储器2两个存储区域;所述操作数存储器Ⅰ的写地址高位输入端AB5_1为“0”,或读地址高位输入端AB5_2为“0”,选中操作数存储器Ⅰ的26个低地址存储单元,即存储器1;写地址高位输入端AB5_1为“1”,或读地址高位输入端AB5_2为“1”,选中操作数存储器Ⅰ的26个高地址存储单元,即存储器2;
[0111] 所述命令字及其多操作数写时序控制模块Ⅱ控制完成指令的写入和存储,需要占用系统总线;一条指令包括32位命令字和若干个操作数,操作数最多为26个;所述命令字及其多操作数写时序控制模块Ⅱ在操作数存储器Ⅰ的存储器1或存储器2为数据空,输出写指令允许信号,方允许被系统选中;当被系统选中写命令字时,在系统WR信号的作用下,写入加/减运算命令字;当被系统选中写操作数时,命令字及其多操作数写时序控制模块Ⅱ内部产生与系统WR信号同步的写时序脉冲;在写时序脉冲的控制下,将操作数存储在操作数存储器Ⅰ的存储器1或存储器2中,一条指令的最后一个操作数被写入存储后,转换操作数存储器Ⅰ的写高位地址输入端AB5_1状态;如果操作数存储器Ⅰ的存储器1和存储器2都非空,停止命令字及其多操作数写时序控制模块Ⅱ的工作;
[0112] 所述存储器读时序控制模块Ⅲ在内部读时序脉冲的控制下,自主完成多浮点操作数从操作数存储器Ⅰ中读出,不需要占用系统总线;所述存储器读时序控制模块Ⅲ产生与系统时钟Clock信号同步的读时序脉冲序列,按顺序将操作数读出参与加或减运算;当参与运算的最后一个操作数读出之后,产生读地址溢出信号,然后再经过一个加或减的运算周期,发出读运行状态结束的信号,产生一个时钟周期Clock的结果锁存脉冲,然后再发出启动使能信号;
[0113] 所述存储器读时序控制模块Ⅲ依据存储器数据空标志控制器Ⅳ的空标志状态读出操作执行,有下面4种工作状态:
[0114] 1)所述存储器数据空标志控制器Ⅳ无存储器1空、存储器2空的标志输出,表明存储器1、存储器2都为数据非空,一个非空的存储器正在写入指令或写入指令过程已结束,另一个存储器正在读出操作数;若正在执行的命令运算结束,启动使能信号由“1”→“0”,转为一个存储器空,另一个存储器非空的状态,此时在命令运算过程结束后的第1 个系统时钟Clock的下降沿作为时序脉冲发生的启动信号,向系统发送写指令允许信号;启动存储器读时序控制模块Ⅲ的工作;
[0115] 2)所述存储器数据空标志控制器Ⅳ输出任何一个存储器空的标志,会处于两种操作状态,一是非空的存储器正在写入操作数,该存储器同时执行读出操作;二是非空的存储器写入指令过程已结束,正在执行读出操作;若命令运算过程结束,启动使能信号由“1”→“0”,转为存储器1和存储器2都空的状态;
[0116] 3)所述存储器数据空标志控制器Ⅳ同时输出存储器1空、存储器2空的标志,停止存储器读时序控制模块Ⅲ的工作,向系统发送写指令允许信号;
[0117] 4)所述存储器数据空标志控制器Ⅳ同时输出存储器1空、存储器2空的标志,且命令字及其多操作数写时序控制模块Ⅱ再次被系统选中写入命令字,命令字及其多操作数写时序控制模块Ⅱ输出写预置脉冲作为浮点操作数读时序控制模块Ⅲ的内部时序脉冲发生器的启动信号;
[0118] 所述运算与输出控制模块Ⅴ根据操作数类型,对参与运算的第1个操作数进行选通控制,选通配置参与加/减运算的操作数1是来自运算结果还是从操作数存储器Ⅰ读出的第1个操作数;运算与输出控制模块Ⅴ根据运算符确定进行加法还是减法运算,运算中间结果在存储器读时序控制模块Ⅲ发出的结果锁存信号作用下锁存运算结果,并判断运算结果是否异常,如果出现异常,向系统发出IRQ信号,停止存储器读时序控制模块Ⅲ的工作;当系统需要读出运算结果时,在系统RD信号的作用下能够读出中间运算结果和命令执行的最终运算结果。
[0119] 如图3所示,所述命令字及其多操作数写时序控制模块Ⅱ包括模块地址识别1、写高位地址控制器2、写端口地址计数器3、写端口脉冲发生控制器4、待执行命令寄存器5、运算符寄存器6、执行命令寄存器7、运算符移位寄存器8、非门Ⅰ9、非门Ⅱ10、或门Ⅰ11、或门Ⅱ12、或门Ⅲ13、或门Ⅳ14、与门Ⅰ15和与门Ⅱ16;
[0120] 所述模块地址识别1输入端和系统地址总线AB的A31到A27线连接,CS1输出端和或门Ⅱ12的一个输入端连接,CS2输出端和或门Ⅲ13的一个输入端、写端口脉冲发生控制器4的使能输入端、运算与输出控制模块Ⅴ连接;
[0121] 所述模块地址识别1内部设置两个地址值,一个是写命令字地址值,一个是写操作数地址值;所述模块地址识别1输入的系统地址总线AB的A31到A27的地址值与模块地址识别1中设置的地址值进行比较,如果和写命令字地址值相等,则输出CS1为“0”,如果和写操作数地址值相等,则输出CS2为“0”;在任何时刻,CS1和 CS2只有一个输出为“0”,或输出都为“1”;
[0122] 所述写高位地址控制器2的锁存信号输入端与写端口地址计数器3的写溢出输出端连接,写高位地址输入端和非门Ⅱ10的输出端连接,复位输入端和与门Ⅰ15的输出端连接,输出端和非门Ⅱ10的输入端、操作数存储器Ⅰ的写地址高位输入端AB5_1、存储器数据空标志控制器Ⅳ连接;
[0123] 所述写高位地址控制器2输出的是操作数存储器Ⅰ的最高位地址值AB5_1;当操作数存储器Ⅰ的存储器1和存储器2的数据都空时,或者当系统复位信号Rst为“0”时,复位写高位地址控制器2,其输出为“0”;当写高位地址控制器2的锁存信号输入端由“1”→“0”时,写高位地址控制器2输出端输出的AB5_1状态翻转;
[0124] 所述写端口地址计数器3的操作数个数输入端与系统数据总线DB的D4到D0线连接,写预置脉冲输入端和或门Ⅱ12的输出端连接,写计数脉冲输入端与写端口脉冲发生控制器4的脉冲②_1输出端连接,写复位输入端和系统复位信号Rst线连接,写地址输出端和操作数存储器Ⅰ的写地址输入端AB_1连接,写溢出输出端还和写端口脉冲发生控制器4的写溢出输入端、非门Ⅰ9的输入端、存储器数据空标志控制器Ⅳ连接;
[0125] 所述写端口地址计数器3实质上是一个减1计数器,系统DB的D4到D0传输的是参与加/减运算的操作数个数值,当操作数存储器Ⅰ的存储器1空或存储器2空,且满足模块地址识别1的CS2输出端为“0”时,WR信号作为写预置脉冲将操作数个数值作为操作数存储器Ⅰ写端口的低5位地址初值预置给写端口地址计数器3,并将写溢出输出端设置为“1”状态;
[0126] 所述写端口地址计数器3输出操作数存储器Ⅰ的写端口低5位地址值AB_1;当写计数脉冲输入端来一个计数脉冲时,写端口地址计数器3进行一次-1操作,直到写地址输出端为“0”,AB_1为“0”,此时写溢出信号输出端由“1”→“0”,写溢出信号作为写端口地址计数器3停止工作的标志,使得写高位地址控制器2的锁存信号输入端由“1”→“0”时,写高位地址控制器2输出的AB5_1状态翻转;写端口地址计数器3在系统复位信号Rst的作用下,复位写端口地址计数器3,使得写溢出信号输出端为“0”状态;
[0127] 所述写端口脉冲发生控制器4的同步脉冲输入端与系统写信号WR线连接,启动输入端和与门Ⅱ16的输出端连接,脉冲①_1输出端和操作数存储器Ⅰ的写信号输入端WR_1连接;
[0128] 所述写端口脉冲发生控制器4的使能输入端为“0”,在启动输入端的脉冲信号作用下启动工作,发出与系统WR脉冲同步的脉冲①_1和脉冲②_1,脉冲①_1作为操作数存储器Ⅰ的写入信号WR_1,脉冲②_1作为写端口地址计数器3的写计数脉冲;当写溢出信号输出端由“1”→“0”时,所述写端口脉冲发生控制器4停止工作,脉冲①_1和脉冲②_1的输出端为“1”状态;
[0129] 所述待执行命令寄存器5的命令输入端和系统数据总线DB的D5到D0线连接,锁存信号输入端和或门Ⅱ12的输出端连接,输出端和与执行命令寄存器7的命令输入端连接;
[0130] 所述运算符寄存器6的运算符输入端和系统数据总线DB的D31到D6线连接,锁存输入端和或门Ⅱ12的输出端连接,输出端和运算符移位寄存器8的运算符输入端连接;
[0131] 所述执行命令寄存器7的锁存信号输入端与存储器读时序控制模块Ⅲ连接,类型输出端、读操作数个数输出端与存储器读时序控制模块Ⅲ连接;
[0132] 所述执行命令寄存器7输出的操作数类型为2种:
[0133] 类型0:写入操作数存储器Ⅰ的存储器1或存储器2中的第1个操作数作为参与加/减运算的操作数2,运算结果作为操作数1;
[0134] 类型1:写入操作数存储器Ⅰ的存储器1或存储器2中的第1个操作数作为参与加/减运算的操作数1,第2个操作数作为操作数2;
[0135] 所述运算符移位寄存器8的锁存信号输入端、移位脉冲输入端与存储器读时序控制模块Ⅲ连接,输出端与运算与输出控制模块Ⅴ连接;
[0136] 所述运算符移位寄存器8在移位脉冲的作用下,运算符移位寄存器8中的运算符数据按照顺序向右移1位,其最低位作为运算符输出;
[0137] 所述非门Ⅰ9的输出端和或门Ⅰ11的一个输入端连接;
[0138] 所述或门Ⅰ11的另一个输入端和或门Ⅳ14的输出端连接,输出端向系统输出写指令允许信号;
[0139] 所述或门Ⅱ12的另二个输入端分别和或门Ⅳ14的输出端、系统WR写信号线连接,输出端作为写预置信号还与存储器读时序控制模块Ⅲ连接;
[0140] 所述或门Ⅲ13的另一个输入端与系统WR写信号线连接,输出端和与门Ⅱ16的一个输入端连接;
[0141] 所述或门Ⅳ14的二个输入端分别与存储器数据空标志控制器Ⅳ的存储器1空输出端、存储器2空输出端连接,输出端还和与门Ⅱ16的另一个输入端连接;
[0142] 所述与门Ⅰ15的一个输入端与存储器数据空标志控制器Ⅳ的存储器1存储器2都空输出端连接,另一个输入端与系统Rst复位信号线连接。
[0143] 如图5所示,所述存储器读时序控制模块Ⅲ包括读高位地址控制器17、读端口地址计数器18、读端口脉冲发生控制器19、异或非门20、非门Ⅲ21、非门Ⅳ22、或门Ⅴ23、或门Ⅵ24、与门Ⅲ25、与门Ⅳ26、与门Ⅴ27、与门Ⅵ28 和与门Ⅶ29;
[0144] 所述读高位地址控制器17的锁存信号输入端与读端口地址计数器18的读溢出输出端连接,读高位地址输入端和非门Ⅲ21的输出端连接,复位输入端和与门Ⅲ25的输出端连接,输出端和操作数存储器Ⅰ的读地址高位输入端AB5_2、非门Ⅲ21的输入端连接;
[0145] 所述读高位地址控制器17输出的是操作数存储器Ⅰ读端口的最高位地址值AB5_2,当操作数存储器Ⅰ的存储器1和存储器2的数据都空时,或者当系统复位信号Rst为“0”时,复位读高位地址控制器17,其输出端为“0”;当读高位地址控制器17的锁存信号输入端由“1”→“0”时,读高位地址控制器17输出的AB5_2信号翻转;
[0146] 所述读端口地址计数器18的读预置脉冲输入端与读端口脉冲发生控制器19的脉冲②_2输出端连接,读计数脉冲输入端和与门Ⅶ29的输出端连接,复位输入端和与门Ⅴ27的输出端连接,读操作数个数输入端与执行命令寄存器7的读操作数个数输出端连接,读溢出输出端还与读端口脉冲发生控制器19的读溢出输入端、存储器数据空标志控制器Ⅳ的读溢出输入端连接,读地址输出端与操作数存储器Ⅰ的读地址输入端AB_2连接;
[0147] 所述读端口地址计数器18实质上是一个减1计数器,读预置脉冲将来自执行命令寄存器7输出的读操作数个数预置给读端口地址计数器18,使得读端口地址计数器18的读地址输出端输出的地址值AB_2为读操作数个数,读端口地址计数器18从读操作数个数开始进行-1计数;当读计数脉冲输入端来一个计数脉冲时,读端口地址计数器18输出的读地址值-1,直到读地址输出端为“0”, AB_2为“0”,表明最后一个操作数已读出,溢出信号输出端由“1”→“0”,溢出信号也是读端口地址计数器18停止工作的标志;当输入复位信号为“0”时,复位读端口地址计数器18,读端口地址计数器18停止计数工作,溢出输出端为“0”;
[0148] 所述读端口脉冲发生控制器19的同步脉冲输入端与时钟信号Clock线连接,启动输入端和与门Ⅳ26连接,复位输入端和与门Ⅴ27的输出端连接,类型输入端与执行命令寄存器7的类型输出端连接;脉冲①_2输出端与执行命令寄存器7和运算符移位寄存器8的锁存信号输入端连接,脉冲③_2输出端和与门Ⅵ28的一个输入端、运算与输出控制模块Ⅴ连接,脉冲④_2输出端和与门Ⅶ29的一个输入端、运算与输出控制模块Ⅴ连接,脉冲⑤_2输出端和与门Ⅵ28的另一个输入端连接,脉冲⑥_2输出端和与门Ⅶ29的另一个输入端连接,脉冲⑦_2输出端和运算与输出控制模块Ⅴ连接,读运行状态输出端与存储器数据空标志控制器Ⅳ的读运行状态输入端连接,启动使能输出端和或门Ⅵ24的一个输入端、存储器数据空标志控制器Ⅳ的启动使能输入端连接;
[0149] 所述读端口脉冲发生控制器19输出的脉冲与系统时钟Clock同步;当操作数存储器Ⅰ的存储器1或存储器2为数据空,启动输入端由“1”→“0”时,启动读端口脉冲发生控制器19开始工作;当操作数存储器Ⅰ的存储器1和存储器2都为数据空时,在写预置脉冲的作用下启动输出端由“1”→“0”,启动读端口脉冲发生控制器19开始工作;启动的同时置读端口脉冲发生控制器19的读运行状态输出端为“0”和启动使能输出端为“1”状态;当读运行状态为“1”时,表明当前命令的运算过程已执行结束;当启动使能信号为“0”时,表明没有命令在执行,以及执行命令的运算结果已锁存;
[0150] 所述读端口脉冲发生控制器19根据类型输入信号为“0”还是为“1”,确定读控制操作的脉冲序列;当读端口地址计数器18输出的溢出信号由“1”→“0”产生下降沿时,读端口脉冲发生控制器19再经过一个运算周期时间,读运行状态输出端由“0” →“1”,并发出一个系统时钟Clock周期存最终运算结果的脉冲⑦_2,启动使能输出端由“1” →“0”,停止读端口脉冲发生控制器19的工作,置所有脉冲输出端为“1”状态;当输入的复位信号为“0”时,复位读端口脉冲发生控制器19,复位使得读运行状态输出端为“1”状态,启动使能输出端为“0”, 置所有脉冲输出端为“1”状态,并停止读端口脉冲发生控制器19的工作;
[0151] 所述异或非门20的二个输入端分别与存储器数据空标志控制器Ⅳ的存储器1空输出端、存储器2空输出端连接,输出端和或门Ⅵ24的另一个输入端连接;
[0152] 所述非门Ⅳ22的输入端和或门Ⅱ12的输出端写预置信号连接,输出端和或门Ⅴ23的一个输入端连接;
[0153] 所述或门Ⅴ23的另一个输入端和存储器数据空标志控制器Ⅳ的存储器1存储器2都空输出端连接,输出端和与门Ⅳ26的一个输入端连接;
[0154] 所述或门Ⅵ24的输出端和与门Ⅳ26的另一个输入端连接;
[0155] 所述与门Ⅲ25的一个输入端与存储器数据空标志控制器Ⅳ的存储器1存储器2都空输出端连接,另一个输入端和系统复位信号Rst线连接;
[0156] 所述与门Ⅴ27的一个输入端与系统复位信号Rst线连接,另一个输入端和运算与输出控制模块Ⅴ连接;
[0157] 所述与门Ⅵ28的输出端与操作数存储器Ⅰ的读地址输入端RD_2、运算符移位寄存器8的移位脉冲输入端连接。
[0158] 如图6所示,所述运算与输出控制模块Ⅴ包括选通器30、结果寄存器31、浮点数加/减运算器32a、运算异常标志控制33、32位三态门组34、或门Ⅶ35、或门Ⅷ36和或门Ⅸ37;
[0159] 所述选通器30的二个输入端分别与操作数存储器Ⅰ的读数据输出端DB_2、浮点数加/减运算器32a的运算结果输出端连接,选通控制输入端和或门Ⅶ35的输出端连接,输出端与结果寄存器31的输入端连接;
[0160] 所述选通器30根据操作数类型完成执行命令第1次运算的操作数1的选择配置,当操作数类型为“1”时,读端口脉冲发生控制器19发出从操作数存储器Ⅰ读出第一个操作数的脉冲③_2和写计数脉冲④_2;当脉冲③_2或脉冲④_2为“0”时,所述选通器30输出从操作数存储器(Ⅰ)读出的第1个操作数;当脉冲③_2和脉冲④_2都为“1”时,选通器输出运算结果;
[0161] 所述结果寄存器31的锁存脉冲输入端和或门Ⅷ36的输出端连接,输出端和浮点数加/减运算器32a的操作数1输入端、32位三态门组34输入端连接;
[0162] 所述浮点数加/减运算器32a的操作数2输入端和操作数存储器Ⅰ的数据输出端DB_2连接,运算符输入端和运算符移位寄存器8的运算符输出端连接,运算结果输出端还与运算异常标志控制33的输入端连接;
[0163] 所述浮点数加/减运算器32a根据运算符进行加法或减法运算,当运算符输入端为“0”时,控制浮点数加/减运算器32a进行加法运算,当运算符输入端为“1”时,进行减法运算;
[0164] 所述运算异常标志控制33的锁存脉冲输入端与读端口脉冲发生控制器19的脉冲⑦_2输出端连接,输出端和与门Ⅴ27的一个输入端连接,并向系统输出中断请求信号IRQ;
[0165] 所述浮点数加/减运算器32a的运算结果锁存在结果寄存器31中,以及运算异常标志控制33模块中;当中间运算结果或最终运算结果出现异常时,运算异常标志控制33向系统发出中断请求信号IRQ,并复位读端口地址计数器18和读端口脉冲发生控制器19,停止读端口地址计数器18和读端口脉冲发生控制器19的工作;
[0166] 所述32位三态门组34的输出端与系统数据总线DB连接,控制端和或门Ⅸ37的输出端连接;
[0167] 所述或门Ⅶ35的二个输入端分别与读端口脉冲发生控制器19的脉冲③_2、脉冲④_2输出端连接;
[0168] 所述或门Ⅷ36的二个输入端分别与读端口脉冲发生控制器19的脉冲④_2、脉冲⑦_2输出端连接;
[0169] 所述或门Ⅸ37的二个输入端分别与模块地址识别1的CS2输出端、系统读信号RD线连接,当CS2为“0”时,在系统RD信号的作用下,读出中间运算结果和命令执行的最终运算结果。
[0170] 实施例二:
[0171] 双指令多浮点操作数乘运算控制器(参见图13、图14);
[0172] 实施例二是本发明实施例一的一种变换结构,该双指令多浮点操作数乘运算控制器的基本结构同实施例一;所不同之处在于:取消实施例一图3的运算符寄存器6、运算符移位寄存器8,变换为图13的命令字及其多操作数写时序控制模块;实施例一图6的浮点数加/减运算器32a变换为图14的浮点数乘运算器32b,并取消实施例一图6中的运算符输入信号端;图12的读出时序图中,将完成一次浮点数加/减运算时钟周期变换为完成一次浮点数乘运算时间所需要的时钟周期。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈