Programmable Shift Register With Programmable Load Location
20190131973 ยท 2019-05-02
Inventors
Cpc classification
G11C19/285
PHYSICS
International classification
Abstract
Programmable shift register with programmable load location (pSRL) for data storage and method thereof is disclosed. A loadable programmable Shift Register (pSR) according to present disclosure receives a programmable input LL that defines where data D is to be loaded from the Load Register when L (Load Control Signal)=1. The loadable Shift Register with programmable load location (pSRL) is configured to obtain L (Load Control Signal), S (Shift Control Signal), LL (Load Location Control Signal), and p (programmable shift value), and wherein the pSRL is adapted to perform loading and shifting of data D based at least on the L, S, LL, and p values.
Claims
1. A loadable programmable Shift Register (pSR) comprising: a cascade of flip flops, each flip flop in the cascade of flip flops having an input and an output and a bit-remapper configured to receive data from a load register and load the data into the cascade of flip flops based on a plurality of control signals, the plurality of control signals comprising: a programmable input load location that defines a position in the cascade of flip flops where the data is to be loaded from the load register; a load control signal for controlling the loading of the data into the cascade of flip flops, a shift control signal for controlling a shifting of contents of the cascade of flip flops, and a programmable shift value indicating a number of bits to shift the contents of the cascade of flip flops responsive to the shift control signal.
2. The loadable pSR of claim 1, wherein the bit-remapper comprises a plurality of multiplexers, each multiplexer of the plurality of multiplexers corresponding to a respective flip flop of the cascade of flip flops and configured to output a respective element of a load vector, wherein the load vector is used to load the data into the cascade of flip flops.
3. The loadable pSR of claim 1, wherein the bit-remapper receives the plurality of control signals from at least one of a control Finite State Machine (FSM), a programmable logic device (PLD), or a software application.
4. The loadable pSR of claim 2, wherein responsive to the load control signal having a high value and the shift control signal having a low value, the load vector output by the plurality of multiplexers overwrites a portion of the contents of the cascade of flip flops, the portion of the contents including a bit stored in a flip flop corresponding to the load location.
5. The loadable pSR of claim 2, wherein responsive to the load control signal having a low value and the shift control signal having a high value, the load vector output by the plurality of multiplexers shifts a portion of the contents of the cascade of flip flops to a first portion of the cascade of flip flops by the number of bits indicated by the programmable shift value, and sets a second portion of the cascade of flip flops to zero.
6. The loadable pSR of claim 2, wherein responsive to the load control signal having a high value and the shift control signal having a high value, the load vector output by the plurality of multiplexers shifts a portion of the contents of the cascade of flip flops to a first portion of the cascade of flip flops by the number of bits indicated by the programmable shift value, and loads the data into a second portion of the cascade of flip flops, wherein the second portion of the cascade of flip flops is based on the load location.
7. The loadable pSR of claim 1, wherein an existing value stored in the cascade of flip flops having a same position as the position defined by the programmable input load location is overwritten in response to loading the data from the load register.
8-14. (canceled)
15. A method for storing data in a loadable programmable Shift Register (pSR), the method comprising: receiving, by a bit-remapper of the loadable pSR, data from a load register to be loaded into a cascade of flip flops; receiving, by the bit-remapper function of the loadable pSR, a plurality of control signals comprising: a programmable input load location that defines a position in the cascade of flip flops where the data is to be loaded from the load register, a load control signal for controlling the loading of the data into the cascade of flip flops, a shift control signal for controlling a shifting of contents of the cascade of flip flops, and a programmable shift value indicating a number of bits to shift the contents of the cascade of flip flops responsive to the shift control signal; and performing, by the bit-remapper of the loadable pSR, loading of the data into the cascade of flip flops based at least on the plurality of control signals.
16. The method of claim 15, wherein the bit-remapper comprises a plurality of multiplexers, each multiplexer of the plurality of multiplexers corresponding to a respective flip flop of the cascade of flip flops, the method further comprising: outputting, by each multiplexer of the plurality of multiplexers, a respective element of a load vector; and loading, with the load vector, the data into the cascade of flip flops.
17. The method of claim 16, wherein performing loading of the data into the cascade of flip flops based at least on the plurality of control signals comprises: in response to the load control signal having a high value and the shift control signal having a low value, overwriting, by the load vector output by the plurality of multiplexers, a portion of the contents of the cascade of flip flops, the portion of the contents including a bit stored in a flip flop corresponding to the load location.
18. The method of claim 16, further comprising: in response to the load control signal having a low value and the shift control signal having a high value, shifting, by the load vector output by the plurality of multiplexers, a portion of the contents of the cascade of flip flops to a first portion of the cascade of flip flops by the number of bits indicated by the programmable shift value; and setting a second portion of the cascade of flip flops to zero.
19. The method of claim 16, wherein performing loading of the data into the cascade of flip flops based at least on the plurality of control signals comprises: in response to the load control signal having a high value and the shift control signal having a high value, shifting, by the load vector output by the plurality of multiplexers, a portion of the contents of the cascade of flip flops to a first portion of the cascade of flip flops by the number of bits indicated by the programmable shift value; and loading, by the load vector, the data into a second portion of the cascade of flip flops, wherein the second portion of the cascade of flip flops is based on the load location.
20. The method of claim 15, wherein the bit-remapper receives the plurality of control signals from at least one of a control Finite State Machine (FSM), a programmable logic device (PLD), or a software application.
21. The method of claim 15, further comprising: in response to loading the data from the load register, overwriting an existing value stored in the cascade of flip flops having a same position as the position defined by the programmable input load location.
22. The method of claim 15, further comprising: performing, by the bit-remapper of the loadable pSR, shifting of the contents stored in the cascade of flip flops based on the shift control signal and the programmable shift value.
Description
BRIEF DESCRIPTION OF DRAWINGS
[0025] The accompanying drawings are included to provide a further understanding of the present disclosure, and are incorporated in and constitute a part of this specification. The drawings illustrate exemplary embodiments of the present disclosure and, together with the description, serve to explain the principles of the present disclosure. The diagrams are for illustration only, which thus is not a limitation of the present disclosure, and wherein:
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
DETAILED DESCRIPTION OF THE INVENTION
[0039] The following is a detailed description of embodiments of the disclosure depicted in the accompanying drawings. The embodiments are in such detail as to clearly communicate the disclosure. However, the amount of detail offered is not intended to limit the anticipated variations of embodiments; on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present disclosure as defined by the appended claims.
[0040] In the following description, numerous specific details are set forth in order to provide a thorough understanding of embodiments of the present invention. It will be apparent to one skilled in the art that embodiments of the present invention may be practiced without some of these specific details.
[0041] Embodiments of the present invention include various steps, which will be described below. The steps may be performed by hardware components or may be embodied in machine-executable instructions, which may be used to cause a general-purpose or special-purpose processor programmed with the instructions to perform the steps. Alternatively, steps may be performed by a combination of hardware, software, and firmware and/or by human operators.
[0042] Embodiments of the present invention may be provided as a computer program product, which may include a machine-readable storage medium tangibly embodying thereon instructions, which may be used to program a computer (or other electronic devices) to perform a process. The machine-readable medium may include, but is not limited to, fixed (hard) drives, magnetic tape, floppy diskettes, optical disks, compact disc read-only memories (CD-ROMs), and magneto-optical disks, semiconductor memories, such as ROMs, PROMs, random access memories (RAMs), programmable read-only memories (PROMs), erasable PROMs (EPROMs), electrically erasable PROMs (EEPROMs), flash memory, magnetic or optical cards, or other type of media/machine-readable medium suitable for storing electronic instructions (e.g., computer programming code, such as software or firmware).
[0043] Various methods described herein may be practiced by combining one or more machine-readable storage media containing the code according to the present invention with appropriate standard computer hardware to execute the code contained therein. An apparatus for practicing various embodiments of the present invention may involve one or more computers (or one or more processors within a single computer) and storage systems containing or having network access to computer program(s) coded in accordance with various methods described herein, and the method steps of the invention could be accomplished by modules, routines, subroutines, or subparts of a computer program product.
[0044] If the specification states a component or feature may, can, could, or might be included or have a characteristic, that particular component or feature is not required to be included or have the characteristic.
[0045] As used in the description herein and throughout the claims that follow, the meaning of a, an, and the includes plural reference unless the context clearly dictates otherwise. Also, as used in the description herein, the meaning of in includes in and on unless the context clearly dictates otherwise.
[0046] Exemplary embodiments will now be described more fully hereinafter with reference to the accompanying drawings, in which exemplary embodiments are shown. These exemplary embodiments are provided only for illustrative purposes and so that this disclosure will be thorough and complete and will fully convey the scope of the invention to those of ordinary skill in the art. The invention disclosed may, however, be embodied in many different forms and should not be construed as limited to the embodiments set forth herein. Various modifications will be readily apparent to persons skilled in the art. The general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the invention. Moreover, all statements herein reciting embodiments of the invention, as well as specific examples thereof, are intended to encompass both structural and functional equivalents thereof. Additionally, it is intended that such equivalents include both currently known equivalents as well as equivalents developed in the future (i.e., any elements developed that perform the same function, regardless of structure). Also, the terminology and phraseology used is for the purpose of describing exemplary embodiments and should not be considered limiting. Thus, the present invention is to be accorded the widest scope encompassing numerous alternatives, modifications and equivalents consistent with the principles and features disclosed. For purpose of clarity, details relating to technical material that is known in the technical fields related to the invention have not been described in detail so as not to unnecessarily obscure the present invention.
[0047] Thus, for example, it will be appreciated by those of ordinary skill in the art that the diagrams, schematics, illustrations, and the like represent conceptual views or processes illustrating systems and methods embodying this invention. The functions of the various elements shown in the figures may be provided through the use of dedicated hardware as well as hardware capable of executing associated software. Similarly, any switches shown in the figures are conceptual only. Their function may be carried out through the operation of program logic, through dedicated logic, through the interaction of program control and dedicated logic, or even manually, the particular technique being selectable by the entity implementing this invention. Those of ordinary skill in the art further understand that the exemplary hardware, software, processes, methods, and/or operating systems described herein are for illustrative purposes and, thus, are not intended to be limited to any particular named element.
[0048] Each of the appended claims defines a separate invention, which for infringement purposes is recognized as including equivalents to the various elements or limitations specified in the claims. Depending on the context, all references below to the invention may in some cases refer to certain specific embodiments only. In other cases it will be recognized that references to the invention will refer to subject matter recited in one or more, but not necessarily all, of the claims.
[0049] All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context. The use of any and all examples, or exemplary language (e.g., such as) provided with respect to certain embodiments herein is intended merely to better illuminate the invention and does not pose a limitation on the scope of the invention otherwise claimed. No language in the specification should be construed as indicating any non-claimed element essential to the practice of the invention.
[0050] Various terms as used herein are shown below. To the extent a term used in a claim is not defined below, it should be given the broadest definition persons in the pertinent art have given that term as reflected in printed publications and issued patents at the time of filing.
[0051] The present disclosure relates generally to sequential logic circuit for storage or transfer of data in the form of binary numbers, and more particularly, the present disclosure relates to programmable shift register with programmable load location (pSRL) for data storage and method thereof.
[0052] In order to solve the technical problems as recited in the background above, the present disclosure provides a new, cost-effective, technically advanced and improved programmable shift register with programmable load location (pSRL) that serves as a storage device for data streams. In an embodiment, the proposed pSRL enables to not only efficiently reduce the number of flops but also to reduce the latency associated while reducing the number of flops. Further, the proposed pSRL includes the storage capable of ensuring that all combinations of bits fits in the storage without any left over.
[0053] An aspect of the present disclosure relates to a loadable Shift Register with programmable load location (pSRL) configured to obtain L (Load Control Signal), S (Shift Control Signal), LL (Load Location Control Signal), and p (programmable shift value), and wherein the pSRL is adapted to perform loading and shifting of data D based at least on the L, S, LL, and p values.
[0054] In an aspect, the pSRL is at least n bits wide.
[0055] In an aspect, the pSRL is any of a right shift register or a left shift register.
[0056] In an aspect, the LL defines where data D is loaded. In another aspect, the shift control signal (S) controls shifting, when S=1, a p-bit right shift is performed.
[0057] In an aspect, the pSRL can include a bit-remapper function that receives L (Load Control Signal), S (Shift Control Signal), LL (Load Location Control Signal), and p (programmable shift value), and based on n (n+1):1 multiplexers and p.sub.i, outputs a load vector, wherein p.sub.i=(LL1) when ((L=1, S=0) and (LLi)), else if (S=1), p.sub.i=p+i, else p.sub.i=i.
[0058] An aspect of the present disclosure relates to a loadable programmable Shift Register (pSR), said pSR being configured to receive a programmable input LL that defines where data D is to be loaded from the Load Register when L (Load Control Signal)=1.
[0059] In an aspect, the pSRL receives the L (Load Control Signal), the S (Shift Control Signal), the LL (Load Location Control Signal), and the p (programmable shift value) from a control Finite State Machine (FSM).
[0060] In an aspect, if L=1 and S=0, .sub.i=D.sub.iLL if LLimin (n, (LL+m)), else .sub.i=d.sub.i. In another aspect, if L=0 and S=1, .sub.i=d.sub.i+p if i <(n-p), else .sub.i=0. In yet another aspect, if L=1 and S=1, .sub.i=d.sub.i+p if i<LL, else .sub.i=D.sub.iLL if LLimin (n, (LL+m)), else .sub.i=0. In still another aspect, if L=0 and S=0, .sub.i=d.sub.i.
[0061] An aspect of the present disclosure relates to method for storing data D in shift register. The method, by utilizing a bit-remapper function of a loadable Shift Register with programmable load location (pSRL), includes the steps of: obtaining L (Load Control Signal), S (Shift Control Signal), LL (Load Location Control Signal), and p (programmable shift value), and performing loading and shifting of data D based at least on the L, S, LL, and p values to store data D in said shift register.
[0062] In digital circuits, a shift register is a cascade of flip flops, sharing the same clock, in which the output of each flip-flop is connected to the data input of the next flip-flop in the chain, resulting in a circuit that shifts by one position the bit array stored in it, shifting in the data present at its input and shifting out the last bit in the array, at each transition of the clock input. More generally, a shift register may be multidimensional, such that it's data in and stage outputs are themselves bit arrays: this is implemented simply by running several shift registers of the same bit-length in parallel.
[0063] Accordingly,
[0064]
[0065]
[0066]
[0067] As shown in
[0068] In the case of the Loadable pSR (as illustrated in
[0069] Accordingly, the load vector may be represented as below:
[0070] It may be noted that from the above representation that, L selection requires at least 2:1 multiplexers, so if L=1, the mapper function equals to D, or if L=0, the mapper function depends on value of p (since p can have at most (n1) values, this translates to a (n1):1 multiplexer as discussed above). In an exemplary embodiment, this output can be further p combined by using an n:1 multiplexer as before and generating p.
[0071]
[0072] In an exemplary embodiment, a choice of LL, as shown in
[0073] In an exemplary embodiment, a decision of load and shift in the pSRL can be decided based on a bit re-mapper () 594 function. The bit re-mapper () 594 function for pSRL can be evaluated as below:
In this case, D.sub.i LL loads D from bit LL onwards till either m bits are loaded or space runs out, whereas, d.sub.i holds state for other bits.
[0074] In this case, d.sub.o+p does a simple p-bit right shift for bits {p+1, p+2, . . . n}, whereas, 0 loads 0's into any leftover bits.
In this case, d.sub.i+p does a simple p-bit shift for bits {1, 2, 3, . . . (LL1)}, which get the value of the bit p bits to their left, D.sub.iLL loads D from bit LL onwards till either m bits are loaded or space runs out, and 0 loads 0's into the leftover bits on the left. [0075] if (L=0 and S=0) [NO OPERATION] .sub.i =d.sub.i
[0076] In this case, d holds state for all bits.
[0077] Where the function min is defined thus:
[0078] Referring again to
[0083] From above results it may be noted that, at most n (n+1):1 multiplexers are needed for the implementation. The multiplexer size starts reducing from the (nm+1).sup.th bit onwards because there are fewer bits on the left to choose from while shifting. The n.sup.th bit can only get its own value or one of m values from the load register, since it does not have bits on its left.
[0084]
[0085] It is to be appreciated that for the exemplary implementation purpose, D.sub.1, D.sub.2, D.sub.3 . . . etc. are connected in the reverse order of d.sub.2, d.sub.3, d.sub.4 . . . etc., which enables a simple way of realizing the expression (rLL+1), since bit r will get the value of bit D.sub.(rLL+1) from the load register while loading.
[0086] In an exemplary embodiment, in an implementation, the proposed pSRL focuses on the way p.sub.i is computed, wherein using the implementation as illustrated in
TABLE-US-00001 p.sub.1 is realized by: if (L = 1, S = 0) and (LL 3): if ((L = 1, S = 0) and (LL 1)) LL p.sub.1 selects p.sub.1 = (LL 1) 1 0 D.sub.3 else if (S = 1) 2 1 D.sub.2 p.sub.1 = p + 1 3 2 D.sub.1 else else if (S = 1) p.sub.1 = 1 p p.sub.1 selects 1 4 d.sub.4 2 5 d.sub.5 3 6 d.sub.6 . . . . . . . . . else X 3 d.sub.3 p.sub.2 is realized by if (L = 1, S = 0) and (LL 2): if ((L = 1, S = 0) and (LL 2)) LL p.sub.2 selects p.sub.2 = (LL 1) 1 0 D.sub.2 else if (S = 1) 2 1 D.sub.1 p.sub.2 = p + 2 else if (S = 1) else p p.sub.2 selects p.sub.2 = 2 1 3 d.sub.3 2 4 d.sub.4 3 5 d.sub.5 . . . . . . . . . else X 2 d.sub.2 p.sub.3 is realized by: if (L = 1, S = 0) and (LL 3): if ((L = 1, S = 0) and (LL 3)) LL p.sub.3 selects p.sub.3 = (LL 1) 1 0 D.sub.3 else if (S = 1) 2 1 D.sub.2 p.sub.3 = p + 3 3 2 D.sub.1 else else if (S = 1) p.sub.3 = 3 p p.sub.3 selects 1 4 d.sub.4 2 5 d.sub.5 3 6 d.sub.6 . . . . . . . . . else X 3 d.sub.3 p.sub.i is realized by: if (L = 1, S = 0) and (LL p): if ((L = 1, S = 0) and (LL i)) LL p.sub.i selects p.sub.i = (LL 1) 1 0 D.sub.p else if (S = 1) 2 1 D.sub.p1 p.sub.i = p + i 3 2 D.sub.p2 else . . . . . . . . . p.sub.i = i p p 1 D.sub.1 else if (S = 1) p p.sub.i selects 1 1 + p d.sub.p+1 2 2 + p d.sub.p+2 3 3 + p d.sub.p+3 . . . . . . . . . else X p d.sub.p
[0087] Thus, it may be noted form the above that, the n (n+1):1 multiplexers and p.sub.i together defines the bit re-mapper function , which is a complete solution for a pSRL.
[0088]
[0089] In an exemplary embodiment, the proposed loadable programmable shift register with programmable load location (pSRL) 580 is provided. The pSRL being configured to receive a programmable input LL 584 that defines where data D is to be loaded from the Load Register when L (Load Control Signal)=1.
[0090] In an exemplary embodiment, the pSR with programmable load location (pSRL) includes a bit-remapper 594 function that receives L (Load Control Signal) 586, S (Shift Control Signal) 588, LL (Load Location Control Signal) 584, and p (programmable shift value 590, and based on n (n+1):1 multiplexers and p.sub.i, outputs a load vector, wherein p.sub.i=(LL1) when ((L=1, S=0) and (LLi)), else if (S=1), p.sub.i=p+i, else p.sub.i=i.
[0091] In an exemplary embodiment, the pSRL receives the L (Load Control Signal), the S (Shift Control Signal), the LL (Load Location Control Signal), and the p (programmable shift value) from a control Finite State Machine (FSM) (not shown).
[0092] In an exemplary embodiment, if L=1 and S=0, .sub.i=D.sub.iLL if LLi min (n, (LL+m)), else .sub.i=.sub.i. In another aspect, if L=0 and S=1, .sub.i=d.sub.i+p if i<(np), else .sub.i=0. In yet another aspect, if L=1 and S=1, .sub.i=d.sub.i+p if i<LL, else .sub.i=D.sub.iLL if LLimin (n, (LL+m)), else .sub.i=0. In still another aspect, if L=0 and S=0, .sub.i=d.sub.i.
[0093]
[0094] At step 602, L (Load Control Signal), S (Shift Control Signal), LL (Load Location Control Signal), and p (programmable shift value) is obtained.
[0095] At step 604, loading and shifting of data D is performed based at least on the L, S, LL, and p values to store data D in said shift register. In an exemplary embodiment, while loading and shifting of data D, the existing value of D is also fed back to bit-remapper 594 function of a loadable Shift Register with programmable load location (pSRL) 580.
[0096] In an exemplary embodiment, the bit-remapper function that receives L (Load Control Signal), S (Shift Control Signal), LL (Load Location Control Signal), and p (programmable shift value), and based on n (n+1):1 multiplexers and p.sub.i, outputs a load vector, wherein p.sub.i=(LL1) when ((L=1, S=0) and (LLi)), else if (S=1), p.sub.i=p+i, else p.sub.i=i.
[0097] Although the proposed system has been elaborated as above to include all the main modules, it is completely possible that actual implementations may include only a part of the proposed modules or a combination of those or a division of those into sub-modules in various combinations across multiple devices that can be operatively coupled with each other, including in the cloud. Further the modules can be configured in any sequence to achieve objectives elaborated. Also, it can be appreciated that proposed system can be configured in a computing device or across a plurality of computing devices operatively connected with each other, wherein the computing devices can be any of a computer, a laptop, a smartphone, an Internet enabled mobile device and the like. All such modifications and embodiments are completely within the scope of the present disclosure.
[0098] As used herein, and unless the context dictates otherwise, the term coupled to is intended to include both direct coupling (in which two elements that are coupled to each other or in contact each other) and indirect coupling (in which at least one additional element is located between the two elements). Therefore, the terms coupled to and coupled with are used synonymously. Within the context of this document terms coupled to and coupled with are also used euphemistically to mean communicatively coupled with over a network, where two or more devices are able to exchange data with each other over the network, possibly via one or more intermediary device.
[0099] Moreover, in interpreting both the specification and the claims, all terms should be interpreted in the broadest possible manner consistent with the context. In particular, the terms comprises and comprising should be interpreted as referring to elements, components, or steps in a non-exclusive manner, indicating that the referenced elements, components, or steps may be present, or utilized, or combined with other elements, components, or steps that are not expressly referenced. Where the specification claims refers to at least one of something selected from the group consisting of A, B, C . . . and N, the text should be interpreted as requiring only one element from the group, not A plus N, or B plus N, etc.
[0100] While some embodiments of the present disclosure have been illustrated and described, those are completely exemplary in nature. The disclosure is not limited to the embodiments as elaborated herein only and it would be apparent to those skilled in the art that numerous modifications besides those already described are possible without departing from the inventive concepts herein. All such modifications, changes, variations, substitutions, and equivalents are completely within the scope of the present disclosure. The inventive subject matter, therefore, is not to be restricted except in the spirit of the appended claims.
Technical Advantages of pSRL: [0101] i. Lowest possible latency: pSRL allows the reading out of an n-bit output word as soon as it becomes available. This is therefore, the lowest theoretically possible latency. [0102] ii. Low area: pSRL is implementable in n bits of storage, n (n+1):1 multiplexers and some gates to generate p.sub.i. [0103] iii. High performance: pSRL includes a highly optimized structural implementation and hence can operate at high speed. [0104] iv. Scalability: The pSRL is adapted to scale linearly making large values of n (size of pSRL) possible.