Programmable data width converter device, system and method thereof
10073799 ยท 2018-09-11
Assignee
Inventors
Cpc classification
G05B2219/23289
PHYSICS
G05B19/045
PHYSICS
International classification
G05B19/045
PHYSICS
Abstract
The present disclosure pertains to a programmable data width converter device, system and method thereof. Programmable data width converter (pDWC) of the present disclosure can include a control Finite State Machine (FSM) that is configured to receive input values of m and n, and control any or a combination of L (Load Control Signal), S (Shift Control Signal), LL (Load Location Control Signal), and p (programmable shift value) based on the received values of m and n; and a loadable programmable shift register with programmable load location (pSRL) operatively coupled with the control FSM, wherein the pSRL is configured to perform loading and shifting functions based on the L, S, LL, and p values loaded by the control FSM. The pDWC can be configured to programmably convert width of m k-bit word input to n k-bit word output, and wherein 1mM and 1nN.
Claims
1. A programmable data width converter (pDWC) comprising: a control Finite State Machine (FSM) configured to receive input values of m and n, and control any or a combination of L (Load Control Signal), S (Shift Control Signal), LL (Load Location Control Signal), and p (programmable shift value) based on the received values of m and n, wherein the pDWC is configured to programmably convert width of m k-bit word input to n k-bit word output, and wherein 1mM and 1nN; and a loadable programmable shift register with programmable load location (pSRL) operatively coupled with the control FSM, wherein the pSRL is configured to perform loading and shifting functions based on the L, S, LL, and p values loaded by the control FSM.
2. The converter of claim 1, wherein the pSRL is loaded based on value of the LL and by setting L=1, and wherein the pSRL is shifted by setting S=1 in a manner such that data is loaded in m bits and read out in n bits.
3. The converter of claim 1, wherein the pSRL is at least M+N bits wide.
4. The converter of claim 1, wherein the p is equal to n.
5. The converter of claim 1, wherein the load register width is M bits, and wherein m bits of said load register are used.
6. The converter of claim 1, wherein the control FSM loads at least n bits into the pSRL that has width W where W(M+N), and wherein if m>n, only one load is required, else if m<n, multiple load cycles are required with S=0.
7. The converter of claim 6, wherein the control FSM keeps a count C of bits that are currently in the pSRL, wherein each load increments the C by m such that when Cn has been loaded into the pSRL, the control FSM initiates a shift that shifts out n bits and decrements C by n, and wherein when a load and shift happen together, (mn) is added to C, and wherein whenever a free space exists in the pSRL as defined by (WC)(mn), the control FSM performs a load cycle, and wherein when L=S=1, loading happens while shifts are going on.
8. The converter of claim 1, wherein the pDWC is a k-bit pDWC with the control FSM being operatively coupled with either a large pSRL allowing m and n to be integral multiples of k, or being operatively coupled to control k single-bit pSRLs in parallel.
9. The converter of claim 8, wherein the pDWC requires a minimum of or equal to k(M+N) number of flops.
10. The converter of claim 1, wherein the pSRL is any of a right shift register or a left shift register.
11. The converter of claim 1, wherein the LL defines where data D is loaded.
12. A method for programmably converting width of m k-bit word input into n k-bit word output by a programmable data width converter (pDWC), said method comprising: receiving, by a control Finite State Machine (FSM), input values of m and n; controlling, by the control FSM, any or a combination of L (Load Control Signal), S (Shift Control Signal), LL (Load Location Control Signal), and p (programmable shift value) based on the received values of m and n; converting programmably, by the pDWC, width of m k-bit word input to n k-bit word output, and wherein 1mM and 1nN; and performing, by a loadable programmable shift register with programmable load location (pSRL) operatively coupled with the control FSM, loading and shifting functions based on the L, S, LL, and p values loaded by the control FSM.
13. The method of claim 12, wherein if load and shift happen together, (mn), is added to C.
Description
BRIEF DESCRIPTION OF DRAWINGS
(1) 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:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
DETAILED DESCRIPTION OF THE INVENTION
(20) 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.
(21) 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.
(22) 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.
(23) 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).
(24) 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.
(25) 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.
(26) 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.
(27) 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.
(28) 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.
(29) 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.
(30) 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.
(31) 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.
(32) The present disclosure relates generally to integrated circuit (IC) devices having circuitry with programmable functions and programmable interconnections, and more particularly, the present disclosure pertains to devices, systems, and methods for width conversion of data streams.
(33) 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 data width converter (pDWC) that serves as a storage device for data streams. In an embodiment, the proposed pDWC ensures that all combinations of bits fit in the storage so as to allow a user to always write-in n (mk)-bit words, and read-out m (nk)-bit words. The proposed pDWC enables writing-in of n (mk)-bit words and reading-out of m (nk)-bit words in at least (k(M+N)) flops with the least possible latency. Thus, the proposed pDWC not only efficiently reduces the number of flops, but also reduces latency associated with the reduced number of flops. Further, the proposed pDWC includes storage capable of ensuring that all combinations of {km, kn} bits fit in the storage without any left over.
(34) An aspect of the present disclosure relates to a programmable data width converter (pDWC) that includes a control Finite State Machine (FSM) and a loadable programmable shift register with programmable load location (pSRL). The control Finite State Machine (FSM) receives input values of m and n, and controls any or a combination of L (Load Control Signal), S (Shift Control Signal), LL (Load Location Control Signal), and p (programmable shift value) based on the received values of m and n, wherein the loadable programmable shift register with programmable load location (pSRL) is operatively coupled with the control FSM and is configured to perform loading and shifting functions based on the L, S, LL, and p values loaded by the control FSM. In an aspect, the pDWC is configured to programmably convert width of m k-bit word input to n k-bit word output, and wherein 1mM and 1nN (M and N being any positive integers).
(35) In an aspect, the pSRL can be loaded based on value of the LL, and by setting L=1, and wherein the pSRL can be shifted by setting S=1 in a manner such that data is loaded in m bits and read out in n bits.
(36) In an aspect, the pSRL is at least M+N bits wide. In another aspect, the p is equal to n. In an aspect, the pSRL is any of a right shift register or a left shift register. In another aspect, the LL defines where data D is loaded.
(37) In an aspect, the pSR can be 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.
(38) In an aspect, the load register width is M bits, and wherein m bits of said load register are used.
(39) In an aspect, the control FSM loads at least n bits into the pSRL that has width W where W(M+N), and wherein if m>n, only one load is required, else if m<n, multiple load cycles are required with S=0. In another aspect, the control FSM keeps a count C of bits that are currently in the pSRL, wherein each load increments the C by m such that when Cn has been loaded into the pSRL, the control FSM initiates a shift that shifts out n bits and decrements C by n. In yet another aspect, when a load and shift happen together, (mn) is added to C, and wherein whenever a free space exists in the pSRL as defined by (WC)(mn), the control FSM performs a load cycle, and wherein when L=S=1, loading happens while shifts are going on.
(40) In an aspect, the pDWC is a k-bit pDWC with the control FSM being operatively coupled with either a large pSRL allowing m and n to be integral multiples of k, or being operatively coupled to control k single-bit pSRLs in parallel.
(41) In an aspect, the pDWC requires a maximum of k(M+N) number of flops.
(42) In an aspect, the pSR with programmable load location (pSRL) comprises 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.
(43) 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 any or combination of a control Finite State Machine (FSM), a programmable logic device (PLD), or a software application.
(44) 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<(np), else .sub.i=0. In yet another aspect, when 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.
(45) An aspect of the present disclosure relates to a method for programmably converting width of m k-bit word input into n k-bit word output by a programmable data width converter (pDWC). The method includes the steps of receiving, by a control Finite State Machine (FSM), input values of m and n; controlling, by the control FSM, any or a combination of L (Load Control Signal), S (Shift Control Signal), LL (Load Location Control Signal), and p (programmable shift value) based on the received values of m and n; converting programmably, by the pDWC, width of m k-bit word input to n k-bit word output, and wherein 1mM and 1nN; and performing, by a loadable programmable shift register with programmable load location (pSRL) operatively coupled with the control FSM, loading and shifting functions based on the L, S, LL, and p values loaded by the control FSM. In an aspect, if load and shift happen together, (mn), is added to C.
(46) An aspect of the present disclosure relates to a programmable data width converter (pDWC) device comprising: a control finite state machine (FSM) circuitry communicably coupled with at least one programmable shift register (pSR) having a programmable load location input to allow programmable data width conversion. In an aspect, the control finite state machine (FSM) circuitry is adapted to generate an output to control at least one of loading (L) of data, shifting (S) of data, load location (LL) of data, and a programmable shift value (p) in the programmable shift register (pSR) based on an input data with a fixed data width or a variable data width.
(47) In an aspect, the programmable load location input is configurable with a value that defines a location of data to be loaded in the pSR based at least on an output generated by the control finite state machine (FSM) circuitry.
(48) In an aspect, the pSR includes a bit re-mapper module configured to shift out a programmable number of bits from a storage of the pSR based at least on an output generated by the control finite state machine (FSM) circuitry. In an aspect, the bit re-mapper module is configured to load the storage available in the pSR, upon shifting of the programmable number of bits, with a fixed number of bits at a variable load location.
(49) An aspect of the present disclosure relates to a programmable data width converter (pDWC) device comprising a programmable circuitry having programmable functions and programmable interconnections. The pDWC includes a control finite state machine (FSM) module having an output to control at least one of loading (L) of data, shifting (S) of data, load location (LL) of data, and a programmable shift value (p), and a programmable shift register (pSR) adapted to receive the output of the FSM control module and data from a load register having a data width (M), wherein the programmable shift register (pSR) is configured to convert data received from the load register having a fixed data width (M) or variable data width (m) to a new fixed data width (N) or a new variable data width (n) based on the received output.
(50) An aspect of the present disclosure relates to method for programmable data width conversion. The method includes the steps of generating, by a control finite state machine (FSM) module, an output to control at least one of loading (L) of data, shifting (S) of data, load location (LL) of data, and a programmable shift value (p) in a programmable shift register (pSR); receiving, by the pSR, output of the FSM control module and data from a load register having a data width (M); and converting, by the pSR, data received from the load register having a fixed data width (M) or variable data width (m) to a new fixed data width (N) or a new variable data width (n) based on the received output.
(51) 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.
(52) Accordingly,
(53)
(54)
(55)
(56) As shown in
(57) In the case of the Loadable pSR (as illustrated in
(58) Accordingly, the load vector may be represented as below:
(59)
(60) 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.
(61)
(62) In an exemplary embodiment, a choice of LL, as shown in
(63) 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:
(64) if (L=1 and S=0) [LOAD OPERATION]
(65)
In this case, D.sub.iLL loads D from bit LL onwards till either m bits are loaded or space runs out, whereas, d holds state for other bits.
if (L=0 and S=1) [SHIFT OPERATION]
(66)
In this case, d.sub.i+p does a simple p-bit right shift for bits {p+1, p+2, . . . n}, whereas, 0 loads 0's into any leftover bits.
if (L=1 and S=1) [LOAD and SHIFT OPERATION]
(67)
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.
if (L=0 and S=0) [NO OPERATION]
.sub.i=d.sub.i
In this case, d.sub.i holds state for all bits.
Where the function min is defined thus:
(68)
(69) Referring again to
(70) 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.
(71)
(72) 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.
(73) 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
(74) 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)) 1 0 D.sub.p p.sub.i = (LL 1) 2 1 D.sub.p1 else if (S = 1) 3 2 D.sub.p2 p.sub.i = p + i . . . . . . . . . else p p 1 D.sub.1 p.sub.i = i 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
(75) 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.
(76)
(77) 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.
(78) 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.
(79) 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).
(80) In an exemplary embodiment, 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<(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.
(81) However, an enormous technical drawback with the programmable shift register with programmable load location is that because of this limited storage, there are always partial data (words) that are left over. Thus, there is need to manage these remainder partial data (words).
(82) In an aspect, the present disclosure further provides a control finite state machine (FSM) that is operatively coupled with the programmable shift register with programmable load location (pSRL), which enables maintenance of reminder partial data (words) from the data (D.sub.in) from a load register having a data width (M), and based on the reminder partial data (words), controls at least one of Load Control Signal (L) of data, a load location (LL) of data, a programmable shift value (p), and shifting (S) of data.
(83)
(84) In an exemplary embodiment, the pSRL of the present disclosure at specific times can be loaded (L) 612 by defining a value for the load location LL 614 and by setting L=1, and can be shifted (based on S) 618 at specific times by setting S=1. The data can be loaded and shifted in such a way that data is seamlessly loaded in m bits at a time, and read out n bits at a time, and p is set equal to n. In another exemplary embodiment, at one or more time instances, load 612 and shift 618 are concurrent, i.e., L=S=1.
(85) In a preferred embodiment, in order to implement the above, a pSRL that is at least (M+N) bits wide can be used, wherein the programmable shift value p is set to be equal to n. In such scenario, the load register width is M bits, of which m bits are used and the rest discarded.
(86) In an exemplary embodiment, the control FSM loads in at least n bits into the pSRL of width W, such that W(M+N), where 1mM and 1nN. In an implementation, if mn, this requires only one load. In another implementation, if m<n, this requires multiple load cycles with S=0.
(87) In an exemplary implementation, the FSM keeps a count of bits (C) currently in the pSRL such that each load action/operation can increment C by m. Once sufficient data (Cn) has been loaded into the pSRL, the Control FSM initiates shift operation so as to shift-out n bits. In this scenario, each shift decrements C by n.
(88) In an exemplary implementation, if a load and a shift happen simultaneously, (mn) is added to C. Whenever free space is detected in the pSRL i.e. whenever (WC) is greater or equal to (mn), the FSM performs a load cycle. It may be appreciated that pSRL can perform both, load as well as shift operations when L=S=1, wherein loading happens seamlessly while shifts are going on. The pSRL can load M bits at a time, wherein only m of these bits are valid.
(89) Accordingly, based on above understanding, it may be appreciated that a pSRL when paired with the right Control FSM can efficiently allow programmable data width conversion. Considering this approach, the present disclosure provides a new and improved programmable data width converter (pDWC) having a pSRL paired with the right Control FSM that efficiently allows programmable data width conversion. In an exemplary embodiment, the pSRL can shift out a programmable number of bits, and can be loaded with a fixed number of bits at a variable load location. As long as the loading and shifting happen in a controlled fashion, a pSRL together with a Control FSM provides the programmable Data Width Converter (pDWC).
(90)
(91) In an exemplary embodiment, the control finite state machine (FSM) module 608 is configured to maintain a record (count) of remaining partial data (words) from the data (D.sub.in) of a load register having a data width (M). The FSM module 608, upon receipt of the record (count) of remaining partial data (words), can be configured to generate an output to control at least one of loading (L) of data 612, load location (LL) of data 614, a programmable shift value (p) 616, and a shifting (S) of data 618.
(92) In an exemplary embodiment, loadable programmable shift register with programmable load location (pSRL) 706 receives the output of the FSM module 608 and data from a load register having a data width (M) 704. Upon receipt of the inputs, the pSRL 706 can be configured to convert data received from the load register having fixed data width (M) or variable data width (m) to a new fixed data width (N) or to a new variable data width (n) based on the received output.
(93) In an exemplary embodiment, the loadable programmable shift register with programmable load location (pSRL) 706 includes a programmable load location input configurable with a value that defines a location of data to be loaded in the pSR based at least on an output generated by the control finite state machine (FSM) module.
(94) In an exemplary embodiment, the loadable programmable shift register with programmable load location (pSRL) 706 includes a bit re-mapper module configured to shift out a programmable number of bits from a storage of the pSR based at least on an output generated by the control finite state machine (FSM) circuitry. In another exemplary embodiment, the bit re-mapper module is configured to load storage of the pSR, upon shifting of the programmable number of bits, with a fixed number of bits at a variable load location.
(95) The working of pDWC 702 can be explained with below example.
Example 1
(96) pDWC for m=7, n=5
(97) Let us assume M=8 and N=7
(98) Thus, the pSRL is configured with a width of 15. (W=15).
(99) Load register width=8; width=15
(100) Naturally, some bits of the load register will be discarded when LL>8.
(101) In cycle 0, the FSM loads one 7-bit word into the pSRL. This is loaded at LL=1.
(102) In cycle 1, the FSM initiates a load with L=1 and also initiates a shift with S=1. The FSM computes that (WC)=8, and (mn)=2 which is lesser, so it initiates a load. The FSM computes that C=7, which is greater than n, which is 5.
(103) In cycle 2, after one shift and one load, C increases to 9, and the free space decreases by 2 to 6, but this is still greater than (mn), which is 2, so the FSM performs a load. Since the bit count C=9 is greater than the number of bits to be shifted out n=5, the FSM also performs a shift. This state allows for concurrent load and shift again . . . . (Cycles 3 and 4 are similar)
(104) In cycle 5, C increases to 15. The free space decreases to 0, which is less than (mn), which is 2, so the FSM cannot perform a load. Since the bit count C=15 is greater than the number of bits to be shifted out n=5, the FSM does perform a shift.
(105) In cycle 6, (WC)=5, which is more than (mn), which is 2; so L=1. There are enough bits to shift: (C>n), so S=1.
(106) In cycle 7, (WC)=3, which is more than (mn), which is 2; so L=1. There are enough bits to shift: (C>n), so S=1.
(107) In cycle 8, (WC) reduces to 1; which prevents a load. There are enough bits for a shift so the FSM does initiate a shift. This is the second cycle in which there is a shift but no load.
(108) In cycle 9, the state of data in the pSRL is the same as it was in cycle 2 and after this, things repeat in this 7-cycle loop.
(109) In 7 cycles, there are exactly 5 loads of 7 bits and 7 shifts of 5 bits for a transfer of 35 bits.
Example 2
(110) pDWC for m=5, n=7
(111) Let's assume that M=8 and N=7
(112) Thus, the pSRL is configured with a width of 15. (W=15)
(113) Load register width=8; width=15.
(114) Naturally, some bits of the load register will be discarded when LL>10.
(115) In cycle 0 and cycle 1, the FSM loads two 5-bit words into the pSRL. The first one is loaded at LL=1, and the second at LL=1+m=6. Two 5-bit words are needed since n=7.
(116) In cycle 2, the FSM initiates shifts with S=1. The FSM computes that C=10 in this cycle since in cycle 1, C=5, L=1 and S=0. Since C>n, a shift is initiated. However, since (WC)=5, and this is greater than (mn)=2, a load is simultaneously initiated as well.
(117) In cycle 3, after a simultaneous load and shift, C=10+57=8, and the free space is 158=7. This is greater than (mn), which is 2, so the FSM performs a load. Since the bit count C=8 is greater than the number of bits to be shifted out n=5, the FSM also performs a shift. Note: Since (mn)=2, there never will be a condition when (WC) is less than this; therefore on every clock, the FSM will perform a load.
(118) In cycle 4, after a concurrent shift and load, the bit count C increases by (mn)=2 to become 6. At this point (WC)=9, which is still greater than (mn) which is 2; so the FSM does a load. However, since C<n, (6<7), the FSM does not initiate a shift. Continuing, in cycle 5, C increases to 11, (WC)=4 and (mn)=2, so L=1. Also C>n, so S=1. Thus, cycle 5 also has concurrent load and shift . . . . (Cycles 6 and 7 are similar). This continues until cycle 8, which also has a load but no shift. The state of data in the pSRL is the same in cycle 9 as it was in cycle 2. After this, things repeat in this 7-cycle loop.
(119) In 7 cycles, there are exactly 7 loads of 5 bits and 5 shifts of 7 bits for a transfer of 35 bits.
(120)
(121) In exemplary implementation, a proposed system can incorporate a pDWC with byte (8-bit) operation, which multi-bit operation is often required in protocol framers and de-framers. JESD204B Transport Layer Framer/De-Framer can be an example for the requirements of multi-bit pDWC. JESD204B needs pDWC operation in terms of samples that could be upto 32 bits. In an example, when one application requires M=N=64 samples, each sample can be defined to be 32 bits. In another example, the number of sample bits can be referred to as k.
(122) In an exemplary embodiment, it is possible to implement a k-bit pDWC by simply using a large pSRL and allowing m and n to only be an integral multiple of the word size k. But another solution can be to operate k single-bit pSRLs in parallel with a single control FSM controlling all pSRLs in lock step as illustrated in
(123)
(124) At step 1002, a control Finite State Machine (FSM) receives input values of m and n.
(125) At step 1004, any or a combination of L (Load Control Signal), S (Shift Control Signal), LL (Load Location Control Signal), and p (programmable shift value) is controlled by the FSM based on the received values of m and n.
(126) At step 1006, width of m k-bit word input to k-bit word output, and wherein 1mM and 1nN is programmably converted by the pDWC.
(127) At step 1008, loading and shifting functions based on the L, S, LL, and p values loaded by the control FSM are performed by a loadable programmable shift register with programmable load location (pSRL). In an embodiment, the loadable programmable shift register with programmable load location (pSRL) is operatively coupled with the control FSM.
(128) 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.
(129) 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.
(130) 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.
(131) 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 pDWC
(132) The present disclosure provides a pDWC that allows reading of an n-bit output word as soon as it becomes available, which achieves the lowest theoretically possible latency.
(133) The present disclosure provides a pDWC that is implementable in (M+N) bits of storage, (M+N)(N+1):1 multiplexers and some gates to generate p.sub.i in addition to a few flops and gates to implement the control FSM.
(134) The present disclosure provides a pDWC that enables achievement of high performance due to highly optimized structural implementation and can operate at high speed.
(135) The present disclosure provides a pDWC that is scalable in nature such that the pDWC scales linearly, making large values of W (size of pDWC) possible.
(136) The present disclosure provides a FSM, size of which does not increase significantly even if M, N, and k become very large, and therefore size of FSM stays a very small part of the overall size.