text: fig1 shows in block diagram , a typical data processing system comprising the digital apparatus of the present invention . such apparatus , indicated by reference number 1 , is positioned between a mass storage drive device 2 and a controller 3 . the system of fig1 further comprises a central processor 4 , a peripheral controller 5 and a main memory 6 . central processor 4 , memory 6 and controllers 3 , 5 are connected in common by means of a plurality of leads or system bus 7 through which data , addresses and control signals can be exchanged . in the present embodiment , the system mass storage is provided by an 8 inch diskette . the considerations made in the following will be , however , valid for other kinds of storage devices too , as for instance , magnetic tape storage . in the present embodiment , where the mass storage is provided by a diskette , a standard integrated circuit chip , such as the 1791 integrated circuit chip , manufactured by western digital corporation , can be used as controller 3 . controller 3 and drive device 2 exchange a plurality of control and information signals through a channel or bus 8 . detailed descriptions of the circuits and interface signals between controller 3 and device 2 as well as between controller 3 and apparatus 1 have been omitted , since it is not essential for an understanding of the present invention . it is required only that the recovery apparatus 1 must supply the controller 3 with a square wave window signal rdclk and with a pulse train rd data at logical level 0 , each pulse corresponding to a magnetic flux transition detected on recording media . pulses rd data and the window signal rd clk have only to fulfill the condition that each pulse rd data occur entirely within a half wave ( or window ) of signal rd clk . for the rest , the pulse position relative to window signal rd clk and the pulse length can be arbitrary . however , it is preferred that the length of a pulse rd data fall in the range of 100 to 250 nanoseconds , and the delay of the beginning or end of a pulse relative to the transition of window signal rd clk should be no longer than 40 nanoseconds . controller 3 does not need to be informed of whether each of the pulses rd data corresponds to a timing transition or to a data transition . the controller is able to distinguish between such transitions from the pattern read out in response to the well known synchronization and &# 34 ; address mark &# 34 ; fields . also , the period of the timing or window signal can be variable and each of the two signal half waves may have a different length . device 2 supplies digital apparatus 1 with a pulse raw data in response to each detected magnetic flux transition . since the disclosed system is intended to recover fm and mfm recorded information , the time intervals between subsequent pulses raw data are indicative of such information . apparatus 1 , in response to the pulse train raw data received as an input , supplies controller 3 with the window signal rd clk and with the pulses rd data which correspond to the pulses raw data suitably positioned relative to window signal rd clk . controller 3 is able by means of signal rd clk to detect the information bits within the pulse train rd data and make them available in parallel form to system bus 7 . fig2 shows in block diagram form , the digital apparatus 1 of fig1 which corresponds to the present invention . apparatus 1 essentially comprises an oscillator 10 , a timing unit 20 , a logical unit 30 for measuring the interval duration between subsequent input pulses and recovery from possible errors present in such interval duration due to the speed variations and to the peak shift phenomenon and a logical unit 40 for reconstructing the read pulse train rd data and for generating window signal rd clk . oscillator 10 supplies units 20 , 30 and 40 with a square wave signal clock having a frequency of 16 mhz . timing unit 20 is activated by each of the pulses raw data and supplies one or more timing signals to units 30 and 40 to control and synchronize their operation . fig2 shows that unit 30 includes a logical unit 31 for measuring of the interval duration , a logical unit 32 for compensating for the error due to speed variation , a logical unit 33 for compensating for the error due to the &# 34 ; peak shift &# 34 ; phenomenon and a logical unit 34 for determining the variation in rotational speed . unit 31 , in response to the rising or positive going edge of pulse raw data supplies , an output channel 31a , a first information signal indicative of the duration of the interval between such rising edge and one of the preceding raw data pulses . such first information signal is clearly affected by errors due to the speed variation and to the &# 34 ; peak - shift &# 34 ; phenomenon . compensation unit 32 adds or substracts from the first information signal on channel 31a , a second information signal available on output channel 34a of unit 34 which is indicative of the speed error . on output channel 32a of logical compensation unit 32 , a third information signal is thus present , indicative of the duration of the last interval where recovery from the error due to the speed variation has occurred . on a further output of unit 32 , a control signal nom int is also available indicating when at a first logical level , that the binary information signal output of unit 31 is representative of an interval whose duration differs from a prefixed nominal duration , for instance , 2 microseconds in mfm or 4 microseconds in fm . that is , it is no more than a prefixed value . unit 34 receives signal nom int and when such signal is active for a certain number of subsequent intervals , the unit 34 updates the information indicative of the detected error speed and makes it available on output channel 34a . the information signal at the output of unit 32 , indicative of the duration of the last interval ( the duration being only affected by the &# 34 ; peak shift &# 34 ; error ), is sent to compensation unit 33 . in case of fm recording , unit 33 determines from such information signal the nominal duration of the last interval and supplies logical unit 40 through channel 33a with a digital information signal specifying whether or not signals rd clk and rd data to be generated are related to an interval of nominal duration of 2 or 4 microseconds . in case of mfm , recording unit 33 determines the normal duration of the last interval from the information signal at the output of unit 32 and from the previously received information , indicative of the duration of the next to last interval , the nominal duration associated with the next to last interval and the nominal duration associated to the second to the last interval . the nominal duration of the last interval , which may be 2 , 3 or 4 microseconds , is supplied to logical unit 40 through channel 33a . unit 40 generates the rd clk window and rd data signals in accordance with such nominal duration . since unit 40 could receive from unit 33 , information signals indicative of the last interval while the generation of signals rd clk and rd data related to the previous interval is still in process , it is provided with means for avoiding such loss of information . this will be made clearer from the detailed description of unit 40 which follows . fig3 shows in detail , logical timing unit 20 . it comprises two j , k flip - flops 21 , 23 , a 4 - bit counter 22 , a 4 - bit shift register 25 , a 2 - input nand gate 26 and a not gate or inverter 24 . in fig3 as well as in the subsequent figures , only the circuit inputs required for an understanding of the invention are shown . at the end of the present description , a list of the circuits used is given . from the specifications of these circuits and from the operations , they are designed to perform within the apparatus of the invention , a person skilled in the art can easily determine the logical levels to be applied to the circuit inputs , not shown in the figures . fig6 shows a timing diagram of the signals present at some points of the circuits of fig3 and 5 to facilitate understanding their operation . in order to simplify the following description , the essential characteristics of some logical elements shown in the figures are given . all j , k flip - flops shown herein are of the type triggered on the positive edge of a signal applied to clock input ck . such edge sets them or keeps them set when the logical levels on their inputs j , k are 1 , 1 respectively . they are reset / kept reset when the logical level on inputs j , k is 1 , 0 respectively . they do not toggle when the logical levels on inputs j , k are 0 , 1 respectively . the set and reset inputs ( s , r ) each must be at logical 1 levels . these flip - flops are set and reset asynchronously when a logical level 0 is applied to set ( s ) input and reset ( r ) input , respectively . the 4 - bit counters are of the type triggered on the positive edge of a signal applied to clock input ck and are provided with a load input ld , an enable input en and data inputs . when a logical 1 level is applied to input ld , the counter is incremented by one by each timing pulse when the logical level is input en is a 0 . when input en is a 1 , the counter does not increment . when a logical 0 level is applied to input ld , the information present on the data inputs is loaded into the counter , independently of the logical level on input en . the counters have a carry output which normally is at logical 1 level . it falls to 0 when the counter stores the maximum count ( i . e ., 15 ). referring again to fig3 flip - flop 21 receives the 16 mhz frequency signal clock at the clock input ck , the asynchronous signal raw data at the j input and the signal rest at the reset input . the signals clock , raw data , and reset are shown in fig6 . set input s and k input of flip - flop 21 receives a signal which is permanently held at logical 1 level . a signal stop on output q of flip - flop 21 rises to a logical 1 level on the rising edge of signal clock when the signal raw data is at a logical 1 level . signal stop falls to a logical 0 level when signal rest falls to a logical 0 level . signal stop is sent to unit 30 of fig2 . signal stop is further applied to load input ld of counter 22 which receives signal clock on its clock input ck . a signal at logical 0 level is permanently applied to enable input en and to the data inputs of counter 22 . therefore , the counter is normally at rest when it stores a count of 0 . when signal stop rises to a logical 1 level , counter 22 increments its count by one in response to each rising edge of signal clock . the carry output of counter 22 falls to logical level 0 after a time period which corresponds to the reception of 15 clock pulses . the carry output is connected to the k input of flip - flop 23 . flip - flop 23 receives the clock signal at its clock input ck and a signal t2 at the set inputs . signal t2 is obtained by inverting a signal t2 through not gate 24 . signals at logical 1 and 0 levels are respectively applied to the reset input r and to the j input of flip - flop 23 . flip - flop 23 delivers a signal load out on its inverted output q . signal load out rises from a logical 0 level to a logical 1 level on the rising edge of the clock pulse subsequent to the pulse which switched the output carry signal of counter 22 to a logical 0 level . signal load out falls again to a logical 0 level when t2 falls to a logical 0 level . signal load out is sent to units 30 and 40 of fig2 . signal load out is also applied to the serial input ( si ) of shift register 25 which receives the clock signal on its timing input ck and a signal resge on its reset input r . signal resge falls to a logical 0 level only during the initializing reset phase of the apparatus . the logical 1 level of signal load out is transferred to output qa of shift register 25 on the rising edge of the clock pulse signal subsequent to the pulse which switched signal load out to a logical 1 level . on successive clock pulses , the logic 1 level is shifted to outputs qb , qc and qd of shift register 25 and to output qd in inverted form . therefore , timing signals t1 , t2 , t3 and t4 ( waveforms t1 , t2 , t3 and t4 of fig6 ) are present on such outputs . such timing signals are sent to unit 30 of fig2 . also , signal t2 resets flip - flip 23 through not 24 , while signals t3 and t4 are applied to the inputs of nand gate 26 . a signal rest , present on the output of such nand gate 26 , resets flip - flop 21 among other things . from fig3 and 6 , it can be seen that when the clock signal frequency is equal to 16 mhz ( i . e ., the signal period is equal to 62 . 5 nanoseconds ), load out signal rises to a logical 1 level after a delay equal to 16 × 62 . 5 = 1000 nanoseconds at the instant when signal stop , indicative of the arrival of a pulse raw data , rises to a logical 1 level . in short , timing unit 20 is activated upon the reception of a read out pulse raw data in synchronism with the next occurring clock pulse , and it supplies suitable timing signals stop , load out , t1 , . . . t4 and rest which are preestablished duration multiples of the clock period . fig4 shows in detail , the measurement unit 31 of fig2 . it substantially consists of two , 4 - bit counters 310 and 311 suitably connected in cascade in order to constitute an 8 - bit counter where the 4 bits supplied by counter 311 are the most significant ones . signals clock and rest are received by the timing input ck and by the load input ld of both counters 310 and 311 . counter 310 enable input en receives signal stop while the enable input en of counter 311 is connected to the carry output of counter 310 . each of the data inputs of counters 310 and 311 receives a signal permanently fixed at a logical 0 level so that it is reset when loaded ( i . e ., the rising edge of clock signal when input ld is at a logical 0 level ). the two most significant outputs of counter 311 are not used . examining fig4 and 6 , it can be noted that each of the counters 310 and 311 is reset by the rising edge of signal clock when rest signal is at a logical 0 level ( i . e ., after a delay of 20 × 62 . 5 = 1250 nanoseconds when signal stop , indicative of a raw data pulse reception , switches to a logical 1 level ). thereafter , the counter is incremented by one at each clock rising edge until signal stop , already fallen to a logical 0 level agains rises to a logical 1 level signifying reception of a new raw data pulse . at this point , counters 310 and 311 stop . it is therefore clear that signals cnt1 . . . cnt6 , at the outputs of counters 310 and 311 , indicate in binary code in multiples of 62 . 5 nanoseconds , the duration of the time interval measured between the last and the next to last raw data pulse received , less 1250 nanoseconds . thus , for instance , the binary code corresponding to decimal number n ( with 0 ≦ n ≦ 63 ) at the outputs of counters 310 and 311 means a time interval measured between two subsequent raw data pulses equal to 1250 + n · 62 . 5 nanoseconds . such information is available during the whole time in which timing signals stop stays at a logical 1 level and for the immediately subsequent clock period . fig5 shows in detail , logical unit 34 which detects the variation in speed ( i . e ., the speed error ) from the nominal speed . it consists of two jk flip - flops 340 and 341 , three 4 - bit counters 342 , 346 and 347 , a register 349 , two 3 - input nand gates 344 and 345 and 2 not gates 343 and 348 . unit 34 has to operate only during the reading of preestablished fields recorded on the magnetic media , where the pulses are only affected by speed errors and not &# 34 ; peak shift &# 34 ; errors . in the following description , such fields will be named &# 34 ; activation field &# 34 ; for unit 34 . as already mentioned , the signal nom int rises to a logical 1 level each time the interval between two subsequent raw data pulses ( in the following named &# 34 ; interval &# 34 ;) differs from a nominal interval of 2 microseconds in mfm and 4 microseconds in fm , for a value not greater than a preestablished value as , for instance , ± 12 %. when this condition is maintained for a train of 17 measured intervals , these intervals identify a unit 34 activation field . counter 342 and flip - flops 340 and 341 constitute a network which verifies the existence of the nom int signal condition for 17 intervals . counters 346 and 347 constitute a network for measuring the difference between the actual duration of 16 of such 17 intervals ( i . e ., the first of such 17 intervals is omitted as it is certainly affected by peak shift error ) and the duration of 16 subsequent nominal intervals . the measured difference is stored in register 349 which is updated at each new difference measurement effected in accordance with an activation field . flip - flop 340 receives on its timing input ck , the signal load out , on its jk inputs the signal nom int and on its reset input , the reset signal resge . a signal permanently at a logical 1 level is applied to the set input s of flip - flop 340 . a signal nom data , present on the q output of flip - flop 340 rises to a logical 1 level on the rising edge of signal load out when signal nom int is at a logical 1 level . the signal nom data is applied to the load input ld of counter 342 which receives the signal t1 on its timing input ck and a signal permanently at logical 0 level on its enable input en . each of the data inputs of counter 342 receives a suitable logical 0 level or 1 , in order that the counter be set at a binary value corresponding to decimal number 14 on the rising edge of t1 and with signal nom data at a logical 0 level . signal nom data is further applied to the jk inputs and to the reset input of flip - flop 341 . such flip - flop receives signal t4 on its timing input ck and a signal permanently at logical 1 level on its set inputs . the operation of counter 342 and flip - flops 340 and 341 is as follows . when nom int is at a logical 0 level , flip - flop 340 is reset or kept in reset at the timing pulse load out . therefore , the logical level of signal nom data at the q output of flip - flop 34 is a logical 0 level . correspondingly , at the reception of timing pulses t1 ( one for each interval between raw data pulses ), counter 341 is set to the binary value equivalent to number 14 and it does not increment . the carry output of counter 342 stays at a logical 1 level . when signal nom data is at a logical 0 level , flip - flop 341 is periodically placed in a reset status by the rising edge of pulse t4 and the signal norm at the output of such flip - flop is at a logical level 0 . on the contrary , when signal nom data rises to a logical 1 level , flip - flop 340 is set by the subsequent rising edge of signal load out and counter 342 is enabled to increment . counter 342 is put in a status indicative of decimal value 15 by the immediately subsequent rising edge of pulse t1 , and carry output of counter 342 falls to a logical 0 level . immediately after flip - flop 341 is set by the rising edge of signal t4 , signal norm rises to a logical 1 level . when signal nom int is kept at a logical 1 level for 16 additional intervals ( i . e ., during 16 further subsequent rising edges of signal load out ), signal norm stays at a logical 1 level for all those further 16 intervals and counter 342 goes on incrementing upon the reception of each pulse t1 . in other words , with the second pulse t1 , the counter is set to a count representative of the numerical 0 value and signal carry 342 rises to a logical 1 level . with the third pulse t1 , the counter is set to a count representative of the numerical 1 value , etc . with the seventeenth pulse t1 , the counter is set to a count representative of the numerical 15 value and signal carry 342 agains falls to 0 . the timing diagram of fig6 shows signals nom data , norm , and carry 342 in the case where signal nom int is kept at a logical 1 level for at least 17 intervals . when this does not occur , flip - flops 340 and 341 are reset and counter 342 goes to a count corresponding to the numerical value 14 . signals carry 342 and norm control the operation of counters 346 and 347 and register 349 . the signal norm is applied to a first input of nand gate 345 which receives respectively on the other two inputs , signal t3 and the signal present on the output carry of counter 342 through not gate 343 . signal t3 and the signal present on the output of not gate 343 are also applied to two inputs of nand gate 344 which receives signal t4 on a third input . the output of nand gate 344 supplies a load 16 signal which falls to a logical 0 level for the duration of clock period on the rising edge of signal t3 , the first time after the acknowledgement of a first nominal interval ( i . e ., nom int = 1 ) and a second time upon the detection of 17 subsequent nominal intervals . the output of nand gate 345 is connected to the input of not gate 348 which supplies a signal clk 16 as an output . signal clk 16 is normally at 0 and rises to a logic 1 level for the duration of two clock periods , in response to signal t3 only after 17 subsequent nominal intervals have been detected . signal load 16 is applied to load inputs ld of 4 - bit counters 346 and 347 which receive signal clock on their timing inputs ck . such counters are connected in cascade to form an 8 - bit counter where the most significant 4 bits are those of counter 347 . to this end , the enable input en of counter 347 is connected to the carry output of counter 346 . the enable input en of counter 346 receives signal t2 . each of the data inputs of counters 346 and 347 receives a suitable level 0 or 1 , in order that they may be preset at a decimal count of 163 on the rising edge of the clock signal when signal load 16 is at a logical 0 level . the counter content is then incremented by one on each rising edge of the clock signal when signal t2 is at a logical 0 level . outputs c4 through c7 of counter 347 and the output c3 of counter 346 are connected to a different one of the inputs of the latching register 349 which receives signal clk 16 on its clock input t . on the rising edge of signal clk 16 , register 349 latches and makes the information present on its inputs , available on its outputs as signals δ0 through δ4 . in other words , the operation of counters 346 and 347 is as follows . signal load 16 falls to a logical 0 level after acknowledgement of a first interval whose actual length differs from a preestablished nominal duration by no more than a certain percent value . signal load 16 falling to 0 , causes the loading of counters 346 and 347 which start to increment at each positive edge of signal clock when t2 is a 0 . during the clock periods of each interval between raw data pulses when t2 is at 1 ( i . e ., for the duration of 2 clock periods corresponding to 125 nanoseconds ), incrementation is skipped . stopping the count of counters 346 and 347 is necessary to assure a stable configuration at such counter outputs on the rising edge of signal clk 16 . counters 346 and 347 therefore count the clock pulses contained in an interval between two raw data pulses less 2 pulses , that is , 125 nanoseconds . when signal nom int is kept at 1 for at least 16 further intervals , the counters continue to increment . after the detection of the seventeenth subsequent interval at which signal nom int = 1 , the rising edge of signal clk 16 causes register 349 to be loaded with the status reached by the counters . immediately after signal load 16 falls to a 0 , the counters are preset to decimal count value 163 by the clock signal . the information signals ( δ0 through δ4 ) available on output channel 34a of unit 34 define in coded form the speed error relative to its nominal value . in fact , starting with t0 , the time interval corresponding to 16 of the 17 subsequent measured intervals which correspond to a nominal duration of 2 microseconds in mfm or 4 microseconds in fm ( nom int = 1 ), the number of signal clock periods within interval t0 change according to the speed error . in mfm , in the case where the speed variation is + 12 . 5 % or - 12 . 5 %, the interval t0 will be equal to 16 × 1 . 750 = 28 microseconds or to 16 × 2 . 250 = 36 microseconds which corresponds respectively to 448 and 576 periods of the clock signal . in fm , in the case where the speed variation is + 12 . 5 % or - 11 . 7 %, the interval t0 will be equal to 16 × 3 . 500 = 56 microseconds or to 16 × 4 . 468 = 71 . 48 microseconds corresponding respectively to 896 and 1144 periods of the clock signal . considering that signal t2 masks 2 rising edges of signal clock and assuming an allowable speed variation ranging from + 12 . 5 % to - 12 . 5 % in mfm and from + 12 . 5 % to - 11 . 7 % in fm , the minimum and maximum number of signal clock periods that counters 346 and 347 may count are 448 -( 16 × 2 )= 416 and 576 -( 16 × 2 )= 544 in mfm , 896 -( 16 × 2 )= 864 and 1144 -( 16 × 2 )= 1112 in fm , respectively . in mfm , the actual limit of decimal values present on the outputs of counters 346 and 347 will be 67 for a speed variation of + 12 . 5 % and 195 for a speed variation of - 12 . 5 % as such counters overflow 2 times during interval t0 due to being preset to the value 163 . on the contrary , the actual limit of the decimal value present on the outputs of counters 346 and 347 will be 3 for a speed variation of + 12 . 5 % and 251 for a speed variation of - 11 . 7 % as such counters overflow 4 times during interval t0 due to being preset to the value 163 . in the case of the recovery of mfm or fm recorded information , tables i and ii , respectively , give correspondence between some of the decimal values indicated by signals δ0 through δ4 ( where δ4 is the most significant bit ), the corresponding decimal values related to the information present on outputs c0 through c7 ( where c7 is the most significant bit ) of counters 346 and 347 and the actual number m of signal clock periods detected within the interval t0 by counters 346 and 347 . in the fourth column of tables i and ii , e indicates ( with an approximation of 1 / 4 of the clock period ) the average duration error of an interval expressed in clock periods by bits δ0 through δ4 relative to a nominal interval having a length of 2000 nanoseconds in mfm and 4000 nanoseconds in fm . the fifth column of tables i and ii indicates the percent error in δv % which is related to each value ( δ0 through δ4 ) d . table i______________________________________ ( δ0 - δ4 ). sub . d ( c0 - c7 ). sub . d m e δv % ______________________________________0 + 7 ≦ 63 ≦ 412 & lt ;- 4 & gt ;+ 12 . 5 8 64 - 71 413 - 420 - 4 + 12 . 5 9 72 - 79 421 - 428 - 4 . 5 + 10 . 93 : : : : : 15 120 - 127 469 - 476 - 0 . 5 + 1 . 5616 128 - 135 477 - 484 0 0 : : : : : 20 160 - 167 509 - 516 + 2 - 6 . 2521 168 - 175 517 - 524 + 2 . 5 - 7 . 81 : : : : : 24 192 - 199 541 - 548 + 4 - 12 . 525 + 31 ≧ 200 ≧ 549 & gt ;+ 4 & lt ;- 12 . 5______________________________________ table ii______________________________________ ( δ0 - δ4 ). sub . d ( c0 - c7 ). sub . d m e δv % ______________________________________ 0 0 - 7 861 - 868 - 8 + 12 . 5 1 8 - 15 869 - 876 - 7 . 5 + 11 . 7 2 16 - 23 877 - 884 - 7 + 10 . 93 : : : : : 10 80 - 87 941 - 948 - 3 + 4 . 68 : : : : : 16 128 - 135 989 - 996 0 017 136 - 143 997 - 1004 + 0 . 5 - 0 . 78 : : : : : 25 200 - 207 1061 - 1068 + 4 . 5 - 7 . 03 : : : : : 30 240 - 247 1101 - 1108 + 7 - 10 . 9331 248 - 255 1109 - 1116 + 7 . 5 - 11 . 7______________________________________ as already indicated , the timing diagram of fig6 shows some of the signals mentioned in the description of fig3 and 5 . further , in fig6 signals carry 22 and carry 342 are indicative of the signals present on carry output counters 22 and 342 , respectively , while signals ( out 22 ) d and ( out 342 ) d are indicative of the decimal value at each clock signal period related to the count of counter 22 of fig3 and counter 342 of fig5 respectively . fig7 shows in detail , compensation units 32 and 33 of fig2 . compensation unit 32 consists of programmable read only memory 320 having a 4k byte capacity , while compensation unit 33 consists of programmable read only memory 330 having a 4k byte capacity and an 8 - bit latching register 331 . memory 320 receives signals cnt1 through cnt6 on its least significant address inputs io through 15 via channel 31a , and signals δ0 through δ4 on its most significant address inputs i6 through i10 via channel 34a . memory 320 receives on its most significant address input i11 a signal fm / mfm set at logical level 1 ( 0 ) in the case of the recovery of information recorded in fm ( mfm ). in both fm and mfm , each possible pair of codes cnt1 - cnt6 and δ0 - δ4 , indicative of a measured interval duration ( i . e ., cnt1 - cnt6 ) and of a previously detected current speed error which is still in force ( i . e ., δ0 - δ4 ), addresses a memory location wherein a 5 - bit binary code is stored which is indicative of the measured interval duration ( cnt1 - cnt6 ) corrected according to the current speed error . such code is available at outputs sr1 - sr5 of memory 320 . in each memory location , a bit is further recorded indicating whether code cnt1 - cnt6 stands for an interval duration which differs from the nominal interval duration of 2 microseconds in fm or 4 microseconds in mfm by a value not higher than a certain percent value (± 12 . 5 in mfm and - 11 . 7 %++ 12 . 5 % in fm ). such a bit is available at a further output of memory 320 which supplies signal nom int to speed error detecting unit 34 . for each measured interval ( cnt1 - cnt6 ), memory 320 is steadily addressed on the rising edge of signal stop for the whole time that such signal remains at a logical 1 level . signal load out , which sets / resets flip - flop 340 according to the logical level of signal nom int , is generated after a delay of 1000 nanoseconds relative to the rising edge of signal stop . therefore , any kind of programmable memory , even slow , which has an address selection and read out time lower than 1000 nanoseconds , could be used as memory 320 to assure the stable generation of signal nom int before signal load out . since some of the outputs of memory 320 whose read out data are strobed by signal load out address in memory 330 in cascade , the sum of the read out and address selection times of both the memories must be lower than 1000 nanoseconds . each of the possible 32 codes present at outputs sr1 - sr5 is preferably indicative of interval durations corrected for speed error and variable from 2000 nanoseconds to 3937 . 5 nanoseconds in increments of 62 . 5 nanoseconds . in fact , the peak shift phenomenon , absent speed errors , causes an increase in interval duration relative to corresponding nominal intervals of 2 microseconds and a reduction in the intervals relative to corresponding nominal intervals of 4 microseconds . the defined range of values is therefore adequate . the programming of memory 320 is obvious . each possible code cnt1 - cnt6 is indicative of a measured interval duration . such duration must be reduced or increased by a percentage according to the speed percent error indicated by code δ0 - δ4 . the corrected duration is indicated by its representative code and is written into the memory location addressed by the corresponding codes cnt1 - cnt6 and δ0 - δ4 and by bit fm / mfm . referring again to fig7 outputs sr1 - sr5 of memory 320 are connected through channel 32a to address inputs i0 - i4 of memory 330 and supplies them each time with a code indicative of the actual duration ( corrected as to speed ) of the measured interval . such code is indicated by de n and marked with order number n . memory 330 further receives signal fm / mfm on its most significant input i11 . the recovery that memory 330 has to perform is establishing the nominal duration to be associated to code de n bearing in mind that the duration indicated by de n is affected by the peak shift phenomenon . memory 330 also receives on its inputs i5 , . . . i10 , some signals which will be considered later herein . when memory 330 is addressed by code de n ( and by the other information ), it generates on outputs a0 and b0 , a binary code dn n indicative of the nominal duration to be associated to the actual duration signified by code de n . in mfm , when a0 and b0 = 01 , 10 and 00 , nominal durations of 2 microseconds , 3 microseconds and 4 microseconds , respectively , are associated with the interval . in fm , on the contrary , when a0 and b0 = 11 and 01 , nominal durations of 2 microseconds and 4 microseconds , respectively , are associated with the interval . in case of mfm recorded information recovery ( fm / mfm = 0 ), the information present on outputs pr1 - pr6 of memory 330 is indicative of the actual duration ( corrected as to speed ) of interval n in coded form , as well as the noiminal duration associated with it and the nominal duration of the previous interval ( n - 1 ). all these pieces of information are expressed by one 6 - bit code which is able to represent all the reasonable possible combinations of them . in fact , only a certain range of possible actual durations corresponds to a nominal duration of interval n . however , for the sake of clarity , it is better to consider such pieces of information as distinct and indicated respectively by de n ( actual duration of interval n ), dn n ( nominal duration of interval n ) and dn n - 1 ( nominal duration of interval n - 1 ). in case of fm recorded information recovery ( fm / mfm = 1 ), the information present on outputs pr1 - pr6 of memory 330 may be not significant . outputs a0 , b0 and pr1 - pr6 of memory 330 are connected to corresponding inputs of register 331 , which latches and makes the information present at its inputs available on its outputs on the rising edge of signal load out . outputs a1 and a2 of register 331 ( corresponding to outputs a0 and b0 of memory 330 ) are connected to unit 40 of fig2 through channel 33a , while outputs fb1 - fb6 ( corresponding to outputs pr1 - pr6 of memory 330 ) are connected to the address inputs i6 - i10 of the same unit 40 . the operation of compensation unit 33 is as follows . at an indefinite instant preceding signal load out , memory 330 receives input information de n , as well as information , de n - 1 , dn n - 1 and dn n - 2 ( in case of mfm ) or non - significant information ( in case of fm ) as feedback from the outputs of register 331 . code dn n - 1 will be present at outputs a1 and b1 of register 331 . the so - addressed memory 330 generates the following set of information at its outputs : outputs pr1 - pr6 = de n , dn n and dn n - 1 ( in case of mfm ), non - significant information ( in case of fm ). these pieces of information are loaded into register 331 on the rising edge of signal load out . the nominal duration dn n of interval n is therefore available and it is used by unit 40 for generating timing window signal rd clk and for regenerating the read pulses rd data . further , the several pieces of information present on outputs fb1 - fb6 of register 331 are used for readdressing memory 330 and for establishing the nominal duration dn n + 1 of the subsequent interval n + 1 . at the beginning , since there is not any previously recorded data , memory 330 can associate with a code de n ( where n = 1 , 2 , 3 , etc .) a wrong code of nominal duration dn n . such code when processed by unit 40 , can cause a wrong generation of signals rd data and rd clock ( window ). this does not cause any problem , since controller 3 ( fig1 ) ignores these signals until it detects a suitable number of synchronization field bytes ( i . e ., 2 bytes of 0 &# 39 ; s in fm or 4 bytes of 1 &# 39 ; s or 0 &# 39 ; s in mfm ) and a preestablished code named &# 34 ; address mark &# 34 ; within a preestablished number of bytes . the actual length de of an activation field interval , corrected as to possible speed error , coincides ( except for the first and the last interval ) with the nominal duration dn . thus , when a synchronization field is read out , memory 330 generates at its outputs pr1 - pr6 , one of the allowable codes corresponding to the measured interval de which is equal to the nominal interval dn . during the reading out of two subsequent intervals , the code generated at outputs pr1 - pr6 is unequivocally established . thus , the acknowledgement of a first part of the synchronization field allows presetting of the speed correction unit 32 and the immediately subsequent acknowledgement of the other two synchronization field intervals enables compensation unit 33 to lock effectively to the data stream . it will be now explained , in the case of mfm recorded information , how by knowing dn n - 2 , dn n - 1 and de n - 1 allows unequivocally the association of an actual length de n , to its nominal duration dn n . considering an interval n between pulses n - 1 and n , the difference e n between actual length and nominal length of such interval is given by e n = de n - dn n = ps n - 1 + ps n where ps n - 1 and ps n is the peak shift of pulses n - 1 and n , respectively . e n has a maximum absolute value when both intervals n - 1 and n + 1 have a nominal length of 2 microseconds while interval n has a nominal length of 4 microseconds , or when intervals n + 1 and n - 1 have a nominal length of 4 microseconds , while interval n has a nominal length of 2 microseconds . considering that a magnetic medium is a passive element , the effect cannot exceed the cause . that is , e n must not be such as to generate an interval n of a longer actual duration ( if dn n = 2 microseconds ) or shorter ( if dn n = 4 microseconds ) than the actual length dn n - 1 and dn n + 1 . this means that each pulse peak shift cannot be longer than 500 nanoseconds , as absolute value . in fm , it is easy to discriminate among the intervals having nominal durations of 2 microseconds , according to the actual duration only . on the contrary , in mfm , a substantial amount of indetermination exists among the intervals of nominal durations 2 and 3 microseconds and 3 and 4 microseconds . such indetermination can be overcome if ps n - 1 is known ; that is , the pulse n - 1 peak shift defining the end of interval n = 1 and the beginning of interval n . in fact , when ps n - 1 is known , dn n =( de n - ps n - 1 )- ps n is known apart from a variable factor ps n shorter ( in absolute value ) than 500 nanoseconds , and the association of dn n with a nominal length of 2 , 3 or 4 microseconds is unmistakable . it is further known that the pulse peak shift varies according to the interval nominal duration which precedes or follows it so that : the function f , though difficult to express analytically , can be experimentally defined . in the case of ps n - 1 , such relation cannot be used because dn n is not known . but it can be used to define ps n - 2 = f ( dn n - 1 , dn n - 2 ) and as dn n - 1 = de n - 1 -( ps n - 2 + ps n - 1 ). the result is that ps n - 1 = de n - 1 - dn n - 1 - f ( dn n - 1 , dn n - 2 ). in other words , ps n - 1 = f 1 ( de n - 1 , dn n - 1 , dn n - 2 ) where f 1 is a functional relationship which can be defined experimentally even if it is not easily expressed analytically . therefore , dn n = de n - f 1 ( de n - 1 , dn n - 1 , dn n - 2 )- ps n is obtained ; that is , dn n = f 2 ( de n , de n - 1 , dn n - 1 , dn n - 2 )- ps n . the functional relationship f 2 is processed by memory 330 . according to the above considerations and experimental verification within each location of a zone of memory 330 used in mfm , a code a0b0 is stored which defines the nominal duration to be associated with the actual duration code ( sr1 - sr5 ) depending on code ( fb1 - fb6 ) and an additional code which substantially gives a measurement indicative of the peak shift to be recovered on the subsequent actual duration measurement . fig8 and 10 show in a partial but meaningful way , the zone mapping of memory 330 used in the case of mfm recording . a description of memory 330 zone mapping , used in the case of fm recording is omitted since it is obvious . in fig8 and 10 , the content of memory 330 is shown in a 32 - row and 64 - column matrix which identifies 2048 memory locations . conceptually , each location is identified by a row address and a column address . the row address , shown as column b in decimal , is indicative of the duration de n of an interval in coded form . the interval duration de n is given in column a . the column address , shown in decimal form in row c , is indicative ( in coded form ) of the set of information given by the actual duration de n - 1 and by the nominal durations dn n - 1 and dn n - 2 . the actual duration of each interval n - 1 , associated with each one of the column codes , is given in row d . the different combination of durations dn n - 1 and dn n - 2 associated with each set of column codes is given in row e . in each location , a code indicative of de n , dn n and dn n - 1 is given in decimal form . the actual value of each one of such pieces of information is the same as that associated with the column codes , except that the intervals to which such information refer are those of order n and n - 1 instead of n - 1 and n - 2 . two scored lines cut the memory matrix into 3 fields , each one containing all of the memory locations which include besides the already mentioned codes , a code of nominal duration dn n = 2 microseconds , 3 microseconds or 4 microseconds , respectively . such code is available at outputs a0 , b0 of memory 330 and is given in column f . in fig8 and 10 , it is to be noted that in the case the measured duration , de n ( column a ) is to be associated with dn n = 3 microseconds and such interval n is preceded by an interval n - 1 with dn n - 1 = 2 or 4 microseconds . there is no correspondence between the measured de n and the de n indicated by the code used to define dn n + 1 , but such code is indicative of a de n which is longer , equal or shorter than the actual one , experimentally adjusted for consideration of the following two factors : ( 1 ) taking account of the intrinsic indetermination error in the discrete measurement of de n , in the suitable correcting direction and in the case of higher marginal risk . ( 2 ) taking account of the second order of influence that pulse n - 2 exercises on ps n and which is not considered by relationship ps n = f ( dn n + 1 , dn n ). the farther pulse n - 2 is from pulse n , the less is such influence . in other words , value ps n , established as the difference between ( de n - ps n - 1 ) and dn n , is affected by a certain round off error as the real value , and the longer the duration de n - 1 is relative to dn n - 1 , the higher is such error . the real value is implicitly applied to ps n by an increase in the correction of de n , and the longer the length de n is , the higher the correction is applied . fig1 shows in detail , regeneration logical unit 40 . such unit generates the square wave window signal rd clk and the read out data or timing pulse rd data according to signals a1 and b1 which define the nominal duration of the measured interval and of signal load out . such signal is generated by timing unit 20 upon the reception of each pulse raw data after a delay of 120 nanoseconds rounded down to less than 62 . 5 nanoseconds . in fm , the rd clk signal must consist of one or two half waves or phases , respectively , for each interval of nominal duration of 2 or 4 microseconds . further , in fm , when the interval nominal duration is 2 or 4 microseconds , the pulse rd data must be completely included solely within the first or second phase of the window signal , respectively . on the contrary , in mfm , the window signal rd clk must consist of two , three or four half waves or phases , respectively , for each interval of a nominal length of 2 , 3 or 4 microseconds , and the pulse rd data must be completely included within the last phase of the window signal corresponding with the interval . unit 40 consists of six jk flip - flops 401 , 402 , 404 , 405 and 409 , two 4 - bit counters 403 and 408 , a two input and gate 411 , a two input nand gate 407 and a three input nand gate 410 . flip - flop 401 receives the signal load out on its timing input ck and a signal res data on its reset input r . a signal permanently at a logical 1 level is received on the remaining inputs of flip - flop 401 . signal data pres is present at the inverted output q of flip - flop 401 . signal data pres drops to a logical 0 level on the rising edge of signal load out . signal data pres rises to a logical 1 level when signal res data falls to a logical 0 level . signal data pres is applied to the set input of flip - flop 402 which receives on its timing input ck a signal acntff and on its reset input r an initializing reset signal resge which is at a logical 0 level only during the initializing phase . the jk inputs of flip - flop 402 are connected to the carry output of counter 408 . at the inverted output q of flip - flop 402 , a signal start is present which falls to a logical 0 level when signal data pres falls to a logical 0 level and rises again to a logical 1 level on the rising edge of signal acntff when the carry output of counter 408 is at a logical 0 level and if signal data pres has risen again to a logical 1 level . signal start is applied to the enabling en of counter 403 which receives signal clock on its clock input ck . the loading input ld of counter 403 is connected to the output of and gate 411 . such gate receives at its two inputs , signal resge and a signal acntclkff , respectively . each of the data inputs of counter 403 receives a suitable level signal in order that counter 403 is preset at the decimal count of 4 on the rising edge of signal clock when input ld is at a logical 0 level . when signal start falls to a logical 0 level , counter 403 increments the information present on its outputs by one on each rising edge of signal clock . outputs cnt1a and cnt4a of counter 403 are connected to the clock input ck and to the jk inputs of flip - flops 404 . such flip - flop further receives signal resge and a signal permanently at a logical 1 level on its set and reset inputs , respectively . signals acntff and acntff are present on outputs q and q , respectively , of flip - flop 404 . as already mentioned , signal acntff is applied to the timing input ck of flip - flop 402 . the carry output of counter 403 is connected to jk inputs of flip - flop 405 which further receives signal clock on its clock input ck and a signal permanently at a logical 1 level on its set s and reset r inputs . signals acntclkff and acntclkff are present on outputs q and q , respectively , of flip - flop 405 . besides being provided to an input of and gate 411 , signal acntclkff is applied to the clock input ck of flip - flop 406 whose jk inputs are connected to the carry output of counter 408 . set and reset inputs of flip - flop 406 receive signal resge and a signal permanently at a logical 1 level , respectively . signals ldcnt and ldcnt are preesent on outputs q and q , respectively , of flip - flop 406 . signal ldcnt is applied to an input of nand gate 407 which receives signal acntclkff on its second input . signal res data is present on the output of nand gate 407 . as already mentioned , such signal is applied to the reset input of flip - flop 401 . besides being provided to the input of nand gate 407 , signal acntclkff is applied to the timing inputs of counter 408 and flip - flop 409 . flip - flop 409 receives on its jk inputs , a signal at a logical 1 and 0 level , respectively . further , flip - flop 409 receives on its set and reset inputs , a signal at a logical 1 and 0 level , respectively . on the direct output q of flip - flop 409 , a signal rd clk is present which changes state on each rising edge of signal acntclkff . counter 408 receives signal ldcnt on its load input and a signal at a logical 0 level on its enable input en . the two least significant data inputs of counter 408 are connected to outputs a1 and b1 of register 331 of unit 33 of fig7 . on the contrary , the two most significant data inputs of counter 408 receive a signal permanently at a logical 1 level . counter 408 transfers on its outputs , the information present at its data inputs in response to the rising edge of signal acntclkff when signal ldcnt is at a logical 0 level . then , counter 408 increments by one the information present at its outputs , in response to the rising edge of signal acntclkff when signal ldcnt is at a logical 1 level . outputs a2 and b2 of counter 408 are connected to two inputs of nand gate 410 which receives signal acntff on its third input . the operation of unit 40 can be easily understood by examining the timing diagram of fig1 which shows some of the signals of fig1 which start from an initial reset state . the sequence ( out 403 ) h is indicative of counter 403 status in hexadecimal code . flip - flop 401 is set upon receipt of the first pulse load out at time t1 . therefore , signal data pres falls to a 0 and sets flip - flop 402 . signal start falls to a 0 and enables counter 403 to count . when counter 403 reaches the count of 8 , the output cnt4a falls to 0 and flip - flop 404 is reset ( i . e ., acntff = 0 ) on the following signal clock . when counter 403 reaches the count of c , the output cnt4a rises again to a 1 and flip - flop 404 is set ( i . e ., acntff = 1 ) on the following clock signal . the rising edge of signal acntff does not modify the state of flip - flop 402 because signal carry 408 from the output of counter 408 is at a logical 1 level . when counter 403 reaches the count of f , its output carry falls to a 0 ( carry 403 = 0 ). flip - flop 405 is therefore reset ( acntclkff = 0 and acntclkff = 1 ) by the next signal clock at time t2 . counter 408 is enabled for loading ( ldcnt = 0 ) on the rising edge of signal acntclkff . the binary information which defines the nominal duration of the measured interval preceding the pulse raw data ( which generated pulse load out ) is available at outputs a2 and b2 . precisely , in mfm : the case where a2 = 0 and b2 = 1 is shown in the diagram of fig1 . further , on the rising edge of acntclkff , flip - flop 409 switches state and signal rdclk rises to a 1 defining the beginning of the first phase of the interval associated with pulse load out . at the same time , signal res data falls to a 0 ( i . e ., acntclkff = 1 and ld cnt = 1 ), flip - flop 401 is reset , signal data pres rises to a 1 , counter 403 reaches the count of 0 and signal carry 403 rises to a 1 while cnt4a falls to a 0 . again , upon the next clock signal , counter 403 is set at the count of 4 ( i . e ., acntclkff = 0 ), flip - flop 404 stays set while flip - flops 405 and 406 are set . again , signal res data rises to a 1 . then , when counter 403 reaches the count of 8 , cnt4a falls to a 0 and flip - flop 404 is reset by the subsequent rising edge of signal clock . when counter 403 reaches the count of c , cnt4a rises again to a 1 . flip - flop 404 is set again by the subsequent clock signal . the rising edge of signal acntff does not modify the set state of flip - flop 402 because signal carry 408 = 1 . when counter 403 reaches the count of f , signal carry 403 falls to a 0 . upon the next clock signal ( i . e ., time t3 ), the following events occur : ( 2 ) flip - flop 409 toggles and signal rd clk falls to a 0 . ( 3 ) counter 408 increments by one and in the case where a2 = 0 and b2 = 1 , the count of f is reached and signal carry 408 falls to a 0 . ( 4 ) counter 403 is set to the count of 0 and signal carry 403 rises to a 1 . at time t3 , upon the subsequent clock signal , counter 403 is set to the count of 4 and flip - flop 405 is set . the rising edge of signal acntclkff causes the resetting of flip - flop 406 and signal ld cnt falls to a 0 . when counter 403 reaches the count of 8 , flip - flop 404 is reset and signal acntff rises to 1 ( i . e ., at time t4 ). at this point , when a2 = 1 and b2 = 1 , signal rd data falls to a 0 and it stays at 0 until flip - flop 404 is again set at time t5 . at this time , flip - flop 402 too is reset because signal carry 408 = 0 . start signal is at 1 and counter 403 is therefore stopped at a count of d . correspondingly , unit 40 is kept in the defined state status until a new pulse load out is received . fig1 shows that such pulse is received at time t6 . flip - flop 401 is set at the reception of signal load out and signal data pres falls to a 0 . flip - flop 402 is set and signal start falls to a 0 . counter 403 starts to increment , this time starting from the count of d . when it reaches a count of f , ( time t7 ), flip - flop 405 is reset and signal acntclkff falls to a 0 while acntclkff rises to a 1 . thus , at time t7 , signal rd clk switches state and signal res data falls to a 0 . also , counter 408 is loaded with new information for a nominal duration relative to the new received pulse load out and signal carry 408 rises again to a 1 . with the subsequent clock signal , flip - flop 406 is set and all the previously described events subsequent to time t2 occur in sequence . fig1 shows the case where the information a1 = 0 and b1 = 0 are received from register 408 , that is , a nominal interval having a duration of 2 microseconds , in the case where a1 = 1 and b1 = 0 , that is , for a nominal interval of 3 microseconds , it is easy to verify that at time t3 , signal carry 408 stays at a 1 and , upon the subsequent clock signal , flip - flop 406 is kept set and signal ld cnt remains at a 1 . therefore , a sequence of events follows time t3 which is the same as the one described for time interval t2 , except that for time t3 signal res data does not change . such sequence is then followed by the sequence of events mentioned with reference to intervals t3 , t4 and so on . also , in the case where a1 = 0 and b1 = 0 , that is , for a nominal interval of 4 microseconds at time t3 , signal carry 408 remains at a 1 and time t3 is followed by two sequences of events identified to the ones described for times t2 and t3 , except that signal res data does not change . at the end of each sequence , a toggling of signal rd clk occurs . in conclusion , bearing in mind that the clock period is of 62 . 5 nanoseconds , unit 40 operation is as follows . unit 40 is enabled by a pulse load out . after 187 . 5 nanoseconds ( i . e ., 3 × 62 . 5 ) from the reception of pulse load out , except when signal load out is the first received signal , unit 40 toggles . phase signal rd clk loads counter 408 and activates a first sequence having a length of 812 . 8 nanoseconds ( 13 × 62 . 5 ). this first sequence is performed 1 , 2 or 3 times depending on the nominal duration value loaded in counter 408 , which may be 2 , 3 or 4 microseconds , respectively . in any case , signal rd clk toggles at the beginning of the sequence . in other words , 1 , 2 and 3 window signal phases are generated . once the preestablished number of first sequences is performed , a second sequence is activated having a length which varies according to the reception of a new pulse load out and is not shorter than 812 . 5 nanoseconds ( 13 × 62 . 5 ). at the beginning of this second sequence , signal rd clk toggles and a new window signal phase is generated . further , during such phase , a signal rd data = 0 is generated which starts with a delay of 6 × 62 . 5 = 374 . 5 nanoseconds from the beginning of the phase and that ends with a delay of 10 × 62 . 5 = 625 nanoseconds from the beginning of the phase . such signal rd data is always within the corresponding phase . fig1 shows the case where pulses load out are received when unit 40 is not active . actually , pulse load out may be received when the unit is still active . for instance , this may occur when , in mfm , a nomimal interval of 4 or 3 microseconds is followed by a nominal interval of 2 microseconds . unit 40 also correctly operates , in this case , without information loss , if the speed error is within the range of ± 12 . 5 %. for instance , let us suppose that a nominal interval of 4 microseconds is followed by two nominal intervals of 2 microseconds and each are detected in sequence . pulse load out , corresponding to the nominal interval of 4 microseconds , is therefore followed by a second pulse load out , corresponding to the nominal interval of 2 microseconds after a time interval greater than 2000 - 12 . 5 %= 1750 nanoseconds , and by a third pulse load out after a time interval longer than 3500 nanoseconds . the second pulse is therefore received during the repetition of the first sequence , and flip - flop 401 is already reset . at the reception of the second pulse load out , flip - flop 401 is set again . at time t5 of the second sequence ( fig1 ), unit 40 , instead of stopping , goes on to complete the second sequence . flip - flop 401 is reset again once 4 × 812 . 5 + 3 × 62 . 5 = 3500 nanoseconds have elapsed , that is , before the third pulse load out is received . therefore , the third load out pulse can be detected . in order to increase the range of operation of unit 40 , the phase length can be obviously reduced or a fifo memory ( first in , first out ) with a logical network can be substituted for flip - flop 401 for reading out the information stored therein . it is clear that several other modifications can be made to digital phase lock apparatus without departing from the scope of the present invention . particularly , in case fm recording , too , some codes can be recorded in memory 330 which are read out by outputs pr1 - pr6 and which express in coded form the actual de n - 1 and nominal dn n - 1 durations of interval n - 1 . this enables an increase in the discrimination margin for determining the nominal duration dn n of interval as a function of the previous interval duration . the following list of circuits can be used in the preferred embodiment of the present invention : 1 . the flip - flops 21 , 23 , 340 , 341 , 401 , 402 , 404 , 405 , 406 and 409 can be constructed integrated circuits having part number 74ls109a manufactured by texas instruments inc . 2 . the counters 22 , 310 , 311 , 346 , 347 , 403 and 408 can be constructed from circuits having part number 74s169a manufactured by texas instruments inc . 3 . the shifting register 25 can be constructed from the circuits having part number 74ls195a manufactured by texas instruments inc . 4 . the latch registers 349 and 331 can be constructed from circuits having part number 74ls374 manufactured by texas instruments inc . 5 . the memories 320 and 330 can be constructed from circuits having part number 2732 manufactured by fairchild corp .