一种堆栈的指针产生器与指针产生的方法 【技术领域】
本发明涉及一种指针产生器与指针产生的方法,所产生的指针值指向一存储器的堆栈(stack)或后入先出存储器(LIFO memory)。
背景技术
在一般的系统和超大规模集成电路(VLSI)设计中,经常需要使用一种存储器,将最后写入的数据最先读出,这种存储器称为堆栈或后入先出存储器。这种存储器需要一个指针产生器,以产生一指针。当要写入或读出数据时,可正确地指向存储器的地址。
现有技术是利用一上下计数器(up-down counter)来做为指针产生器。当写入一数据到堆栈时,指针值便加1,即指向下一个地址。当从堆栈读出一数据时,指针值便减1,即指向上一个地址。利用上下计数器来做为指针产生器虽可顺利完成任务,但使用上下计数器需占用很大的电路布局(layout)面积,同时由于电路较为复杂,工作频率也受到限制。因此,在现今电子产品讲求体积小且速度快的前提下,现有的指针产生器已不适合使用。
【发明内容】
本发明公开一种指针产生器,所产生的指针值指向一堆栈,指针产生器包含一选择输入端(selection input terminal)和一双向线性反馈移位寄存器(bi-direction linear feedback shift register)。选择输入端是响应存取堆栈的指令,选择输入一选择信号。双向线性反馈移位寄存器的基本架构为线性反馈移位寄存器,在接收其选择信号后,执行一本质特征多项式(primitive characteristic polynomial)的运算,以产生一数字序列,做为堆栈的指针值。当选择信号改变时,其双向线性反馈移位寄存器虽同样执行一线性反馈移位寄存器的功能,但其内含的本质特征多项式会随之改变,所产生的数字序列的顺序会与先前数字序列的顺序相反。因此,利用前一个本质特征多项式所产生的数字序列,可用来做为往上计数的指针值(当数据写入堆栈时)。而利用后一个本质特征多项式所产生地数字序列,可用来做为往下计数的指针值(当数据读出堆栈时)。
本发明利用线性反馈移位寄存器,来设计适用于堆栈的指针产生器,以代替现有的上下计数器。其优点在于,可节省电路布局的面积、可工作于高频的环境下、可加强保密性等。
并且,本发明还提供一种指针产生器,所产生的一指针值指向一堆栈,包含:一选择输入端,用以响应存取该堆栈的一指令,输入一选择信号;一双向运算电路,响应该选择信号,执行一特定的本质特征多项式的一运算;以及一双向数字序列产生电路,响应该选择信号与该特定的本质特征多项式运算的一结果,产生相对应于该特定的本质特征多项式往上计数或往下计数的该指针值。
并且,本发明还提供一种指针产生的方法,所产生的一指针值指向一堆栈,该指针产生方法的步骤包括:(A).选择一第一模式或一第二模式;以及(B).产生一指针值;其中,该第一模式相对应于一第一本质特征多项式运算的往上计数的该指针值,该第二模式相对应于一第二本质特征多项式运算的往下计数的该指针值,该第一本质特征多项式与该第二本质特征多项式彼此互补。
【附图说明】
图1为本发明的指针产生器的方框图;
图2为双向异或门的电路图;
图3为双向寄存器的电路图;
图4为第一双功能电路的电路图;
图5为第二双功能电路的电路图;
图6(a)为第一状态下的指针产生器的电路图;
图6(b)为第二状态下的指针产生器的电路图;
图7为计算机仿真的指针值图。
附图符号说明
101指针产生器 103选择输入端
107双向运算电路
109双向数字序列产生电路
111双向异或门 113第一输出/入端
115第二输出/入端 117数据输入端
119选择输入端
121、121-1、121-3、121-5、121-7双向寄存器
129或非门 131第一双功能电路
133第二双功能电路201异或门
203第一缓冲器 205第二缓冲器
207第三缓冲器 209第四缓冲器
301寄存器 303第一缓冲器
305第二缓冲器 307第三缓冲器
309第四缓冲器 401异或门
403第一缓冲器 405第二缓冲器
407第三缓冲器 501异或门
503第一缓冲器 505第二缓冲器
【具体实施方式】
本发明公开了一种指针产生器,它利用一线性反馈移位寄存器来完成,其所产生的指针值指向一堆栈。本发明的指针产生器包含一选择输入端和一双向线性反馈移位寄存器。选择输入端根据存取其堆栈的指令,选择输入一选择信号。双向线性反馈移位寄存器基本架构为一线性反馈移位寄存器,为根据选择信号,执行一特定的本质特征多项式的运算,以产生往上计数或往下计数的指针值。此处所指的往上计数或往下计数,并非依照数字顺序加1或减1,而是依照其本质特征多项式的运算所产生的特定序列计数。
图1为本发明的一实施例。如图1所示,指针产生器101包含一选择输入端103和一双向线性反馈移位寄存器。双向线性反馈移位寄存器包含一双向运算电路(bi-direction computing circuit)107及一双向数字序列产生电路(bi-direction number sequence generation circuit)109。双向运算电路107用来执行某一特定的本质特征多项式的运算,在本例中本质特征多项式为X4+X+1与X4+X3+1。双向数字序列产生电路109响应选择信号选择(SELECTION)与双向运算电路107的运算结果,产生一指针值addr[0]~addr[3],用来指向一堆栈,供系统存取。
双向运算电路107为一执行特定的本质特征多项式的运算,通常使用逻辑门组合,本例中使用一双向异或门(bi-direction XOR gate)111。双向运算电路107具有一第一输出/入端(firstI/O terminal)113、一第二输出/入端(secondI/O terminal)115、一数据输入端117及一选择输入端119。双向运算电路107响应选择信号SELECTION由选择输入端119选择切换为一第一状态和一第二状态。例如,当双向运算电路107处于第一状态时,第一输出/入端113执行输入的功能,并依据数据输入端117输入的数据运算后,由第二输出/入端115执行输出的功能。当双向运算电路107处于第二状态时,第二输出/入端115执行输入的功能,并依据数据输入端117输入的数据运算后,由第一输出/入端113执行输出的功能。
该实施例中,双向运算电路107为一双向异或门。图2为图1中双向异或门111的电路图。如图2所示,双向异或门111包含一异或门201、一第一缓冲器203、一第二缓冲器205、一第三缓冲器207及一第四缓冲器209。异或门201包含一输出端OUT、一第一输入端1st及一第二输入端2nd。第一至第四缓冲器203、205、207及209各包含一输出端出(OUT)、一输入端入(IN)及一选择输入端SEL。其中,异或门201的第一输入端1st连结到第二缓冲器205及第四缓冲器209的输出端OUT,异或门201的第二输入端2nd为运算电路107的数据输入端117,异或门201的输出端OUT连结到第一缓冲器203及第三缓冲器207的输入端IN,第一缓冲器203的输出端OUT连结到第四缓冲器209的输入端IN及双向运算电路107的第二输出/入端115,第二缓冲器205的输入端IN连结到第三缓冲器207的输出端OUT及双向运算电路107的第一输出/入端113,第一至第四缓冲器203、205、207及209的选择输入端SEL连结到双向运算电路107的选择输入端119,双向运算电路107的选择输入端119连结到指针产生器101的选择输入端103。
第一至第四缓冲器203、205、207及209的选择输入端SEL为该缓冲器的致能端。如图2所示,第一缓冲器203及第二缓冲器205为高电平致能缓冲器,第三缓冲器207及第四缓冲器209为低电平致能缓冲器。当双向运算电路107的选择输入端119为高电平时,第一缓冲器203及第二缓冲器205导通,且第三缓冲器207及第四缓冲器209关闭。因此电流路径会由双向运算电路107的第一输出/入端113经过第二缓冲器205、异或门201、第一缓冲器203,而输出到双向运算电路107的第二输出/入端115。当双向运算电路107的选择输入端119为低电平时,第一缓冲器203及第二缓冲器205关闭,且第三缓冲器207及第四缓冲器209导通。因此电流路径会由双向运算电路107的第二输出/入端115经过第四缓冲器209、异或门201、第三缓冲器207,而输出到双向运算电路107的第一输出/入端113;响应选择信号SELECTION的输入电平使双向运算电路107的输出端可由第一输出/入端113或第二输出/入端115输出。
双向数字序列产生电路109用来产生指针值addr[0]~addr[3],以指向一堆栈。如图1所示,该实施例的双向数字序列产生电路109包含四个串联双向寄存器(bi-direction register)121-1、121-3、121-5及121-7、一或非门(NORgate)129、一第一双功能电路(first dual function circuit)131及一第二双功能电路133。每个双向寄存器121(即121-1、121-3、121-5及121-7)包含一第一输出/入端1st及一第二输出/入端2nd,响应该选择信号SELECTION,选择切换为第一状态或第二状态,以执行一寄存器的功能。或非门129包含一输出端OUT及三个输入端1st、2nd及3rd。第一双功能电路131及第二双功能电路133各包含一第一输出/入端1st、一第二输出/入端2nd及一输入端IN,响应选择信号SELECTION,以选择切换为第一状态或第二状态,执行一异或门或一缓冲器的功能。其中,第一至第三双向寄存器121-1、121-3及121-5的第二输出/入端2nd连结到或非门129的三个输入端1st、2nd及3rd,或非门129的输出端OUT连结到第一双功能电路131及第二双功能电路133的输入端IN,第一双功能电路131的第二输出/入端2nd连结到第一双向寄存器121-1的第一输出/入端1st,第四双向寄存器121-7的第二输出/入端2nd连结到第二双功能电路133的第一输出/入端1st。
当双向数字序列产生电路109处于第一状态时,双向寄存器121的第二输出/入端2nd、第一双功能电路131的第二输出/入端2nd及第二双功能电路133的第二输出/入端2nd执行输入的功能。同时,双向寄存器121的第一输出/入端1st、第一双功能电路131的第一输出/入端1st及第二双功能电路133的第一输出/入端1st执行输出的功能。当双向数字序列产生电路109处于第二状态时,双向寄存器121的第一输出/入端1st、第一双功能电路131的第一输出/入端1st及第二双功能电路133的第一输出/入端1st执行输入的功能。同时,双向寄存器121的第二输出/入端2nd、第一双功能电路131的第二输出/入端2nd及第二双功能电路133的第二输出/入端2nd执行输出的功能。
如图1所示,第一双功能电路131的第一输出/入端1st连结到双向异或门111的第一输出/入端113,第二双功能电路133的第二输出/入端2nd连结到双向异或门111的第二输出/入端115。该实施例中,当处于第一状态时,双向运算电路107执行第一本质特征多项式X4+X3+1的运算。当处于第二状态时,双向运算电路107执行第二本质特征多项式X4+X+1的运算。这两个本质特征多项式彼此互补,即由第一本质特征多项式所产生的序列会与第二本质特征多项式所产生的序列顺序相反,已完成向上计数与向下计数的功能。为了执行该二个本质特征多项式的运算,第三双向寄存器121-5的第二输出/入端2nd连结到双向运算电路107的数据输入端117。
图3为图1中双向寄存器121的电路图。如图3所示,双向寄存器121包含一寄存器301、一第一缓冲器303、一第二缓冲器305、一第三缓冲器307及一第四缓冲器309。寄存器301包含一输入端IN及一输出端OUT。第一至第四缓冲器303、305、307及309各包含一输出端OUT、一输入端IN及一选择输入端SEL。其中,寄存器301的输入端IN连结到第一缓冲器303及第三缓冲器307的输出端OUT,寄存器301的输出端OUT连结到第二缓冲器305及第四缓冲器309的输入端IN,第一缓冲器303的输入端IN连结到第四缓冲器309的输出端OUT及双向寄存器121的第二输出/入端2nd,第三缓冲器307的输入端IN连结到第二缓冲器305的输出端OUT及双向寄存器121的第一输出/入端1st,第一缓冲器303、第二缓冲器305、第三缓冲器307及第四缓冲器309的选择输入端SEL均连结到指针产生器101的选择输入端103。
第一缓冲器303、第二缓冲器305、第三缓冲器307及第四缓冲器309的选择输入端SEL为该缓冲器的致能端。如图3所示,第一缓冲器303及第二缓冲器305为高电平致能缓冲器,第三缓冲器307及第四缓冲器309为低电平致能缓冲器。当选择信号SELECTION为高电平时,第一缓冲器303及第二缓冲器305导通,且第三缓冲器307及第四缓冲器309关闭。因此电流路径会由双向寄存器121的第二输出/入端2nd经过第一缓冲器303、寄存器301、第二缓冲器305,而输出到双向寄存器121的第一输出/入端1st。当选择信号SELECTION为低电平时,第一缓冲器303及第二缓冲器305关闭,且第三缓冲器307及第四缓冲器309导通。因此电流路径会由双向寄存器121的第一输出/入端1st经过第三缓冲器307、寄存器301、第四缓冲器309,而输出到双向寄存器121的第二输出/入端2nd。
该实施例中,寄存器301为一D型触发器(D flip-flop)。但寄存器301不限于D型触发器,任何一种电路组件具有类似功能均可使用。
图4为图1中第一双功能电路131的电路图。如图4所示,第一双功能电路131包含一异或门401、一第一缓冲器403、一第二缓冲器405及一第三缓冲器407。异或门401包含一输出端OUT、一第一输入端1st及一第二输入端2nd。第一至第三缓冲器403、405及407各包含一输出端OUT、一输入端IN及一选择输入端SEL。其中,异或门401的输出端OUT连结到第二缓冲器405的输入端IN,异或门401的第一输入端1st连结到第一缓冲器403的输出端OUT,异或门401的第二输入端2nd为第一双功能电路131的输入端IN,第三缓冲器407的输出端OUT连结到第一缓冲器403的输入端IN及第一双功能电路131的第一输出/入端1st,第三缓冲器407的输入端IN连结到第二缓冲器405的输出端OUT及第一双功能电路131的第二输出/入端2nd,第一缓冲器403、第二缓冲器405及第三缓冲器407的选择输入端SEL连结到指针产生器101的选择输入端103。
第一缓冲器403、第二缓冲器405及第三缓冲器407的选择输入端SEL为该缓冲器的致能端。如图4所示,第一缓冲器403及第二缓冲器405为低电平致能缓冲器,第三缓冲器407为高电平致能缓冲器。当选择信号SELECTION为高电平时,第一缓冲器403及第二缓冲器405关闭,且第三缓冲器407导通。因此电流路径会由第一双功能电路131的第二输出/入端2nd经过第三缓冲器407,而输出到第一双功能电路131的第一输出/入端1st,以执行一缓冲器的功能。当选择信号SELECTION为低电平时,第一缓冲器403及第二缓冲器405导通,且第三缓冲器407关闭。因此电流路径会由第一双功能电路131的第一输出/入端1st经过第一缓冲器403、异或门401、第二缓冲器405,而输出到第一双功能电路131的第二输出/入端2nd,以执行一异或门的功能。
图5为图1中第二双功能电路133的电路图。如图5所示,第二双功能电路133包含一异或门501、一第一缓冲器503、一第二缓冲器505及一第三缓冲器507。异或门501包含一输出端OUT、一第一输入端1st及一第二输入端2nd。第一至第三缓冲器503、505及507包含一输出端OUT、一输入端IN及一选择输入端SEL。其中,异或门501的输出端OUT连结到第二缓冲器505的输入端IN,异或门501的第一输入端1st连结到第一缓冲器503的输出端OUT,异或门501的第二输入端2nd为第二双功能电路133的输入端IN,第三缓冲器507的输出端OUT连结到第一缓冲器503的输入端IN及第二双功能电路133的第二输出/入端2nd,第三缓冲器507的输入端IN连结到第二缓冲器505的输出端OUT及第二双功能电路133的第一输出/入端1st,第一缓冲器503、第二缓冲器505及第三缓冲器507的选择输入端SEL连结到指针产生器101的选择输入端103。
第一缓冲器503、第二缓冲器505及第三缓冲器507的选择输入端SEL为该缓冲器的致能端。如图5所示,第一缓冲器503及第二缓冲器505为高电平致能缓冲器,第三缓冲器507为低电平致能缓冲器。当选择信号SELECTION为高电平时,第一缓冲器503及第二缓冲器505导通,且第三缓冲器507关闭。因此电流路径会由第二双功能电路133的第二输出/入端2nd经过第一缓冲器503、异或门501、第二缓冲器505,而输出到第二双功能电路133的第一输出/入端1st,以执行一异或门的功能。当选择信号SELECTION为低电平时,第一缓冲器503及第二缓冲器505关闭,且第三缓冲器507导通。因此电流路径会由第二双功能电路133的第一输出/入端1st经过第三缓冲器507,而输出到第二双功能电路133的第二输出/入端2nd,以执行一缓冲器的功能。
图1的实施例中,选择信号SELECTION为高电平时,即为上述的第一状态。此时图1的指针产生器101可简化为图6(a)的电路,它是一线性反馈移位寄存器,可执行第一本质特征多项式X4+X3+1的运算,产生一个数字序列,做为指向堆栈的指针值。选择信号SELECTION为低电平时,即为上述的第二状态。此时图1的指针产生器101可简化为图6(b)的电路,它也是一线性反馈移位寄存器,执行第二本质特征多项式X4+X+1的运算,产生另一个数字序列,做为指向堆栈的指针值。值得注意的是,图6(a)与图6(b)的电路图其结构看似相同,但由于第一本质特征多项式与第二本质特征多项式彼此互补,因此指针值的位顺序彼此相反。图6(a)的指针值由左至右为addr[0]、addr[1]、addr[2]及addr[3],而图6(b)的指针值由左至右为addr[3]、addr[2]、addr[1]及addr[0],故图6(a)与图6(b)所产生的指针值顺序也相反。因此当其中的一状态定义为往上计数时,则另一状态为往下计数。
图7为该实施例经计算机软件仿真的结果。图中信号updown即为图1中的选择信号SELECTION。信号clk与其它图中的信号clk相同,都是时钟脉冲控制信号。信号addr out[3:0]为图1、图6(a)、图6(b)的指针值addr[0]~addr[3],是一个四位输出信号,可产生16个位阶,以0123456789abcdef来表示。利用此16个位阶来做为堆栈的指针时,便可指向16个地址。如图7所示,当信号updown在一段时间内都为低电平时(表示不断有数据写入堆栈),指针addr out[3:0]便不断地往上计数,由1->0->8->4->2->9->c->6->b。信号updown由低电平转变为高电平时(表示不断有数据读出堆栈),指针addr out[3:0]便不断地往下计数,由6->c->9->2->4->8->0->1。该两个数字序列彼此顺序颠倒,故可准确地做为堆栈的指针值,完成堆栈读出或写入数据的动作。
本发明并不限于仅使用四个串接的双向寄存器121。而应根据实际的需要,在本发明的范围内进行变化。例如,要产生2N个指针值(指向堆栈2N个地址),则需有N个串接的双向寄存器121。双向异或门111的数目也不是固定的,而依所选择的本质特征多项式而定。同样的,双向寄存器121的第二输出/入端2nd也依据其本质特征多项式,选择性地连接到双向运算电路107的数据输入端117。
本发明利用线性反馈移位寄存器,来设计适用于堆栈的指针产生器。由于所需要的电路组件比现有技术的少,可节省电路布局的面积,以降低成本。同时线性反馈移位寄存器的结构简单,可工作于高频的环境下。此外,本发明的指针产生器所产生的指针值并非连续的数字串行,不同的本质特征多项式会产生不同的指针值序列。因此前后相关的数据并不一定储存在相邻的存储器地址中。故可增加其保密性,使储存在堆栈中的数据不易被窃取。
由上述可知,本发明也是一种指针产生的方法,所产生的一指针值指向一堆栈,其指针产生方法的步骤包括:先选择一第一模式或一第二模式,以及产生一指针值。其中,第一模式(即上述的第一状态)相对应于一第一本质特征多项式运算的往上计数的指针值,第二模式(即上述的第二状态)相对应于一第二本质特征多项式运算的往下计数的指针值。第一本质特征多项式与第二本质特征多项式彼此互补,即产生的指针值顺序相反。在上述的实施例中,第一本质特征多项式为X4+X3+1,而第二本质特征多项式为X4+X+1。在选择第一或第二模式时,当数据需写入堆栈即选择第一模式,当数据需读出堆栈即选择第二模式。
通过以上较佳具体实施例的详述,希望能更加清楚地描述本发明的特征与精神,而并非以上述所披露的较佳具体实施例来对本发明的范围加以限制。相反地,其目的是希望能涵盖各种改变及具等同性的安排在本发明所要申请的权利要求范围内。因此,本发明所申请的权利要求的范围应该根据上述的说明作最宽广的解释,以致使其涵盖所有可能的改变以及具等同性的安排。