Abstract:
A power supply diagnostic strategy for discrete power supply diagnostic states is independent of the underlying memory structure. The values used in the associated algorithm are selected to ensure that random linked failures will be detected. This applies to planar memory structures with 1, 2, 4, 6, 8, 12, and 16 common lattices, or physical memory structures with individual bit dispersed memories with 1, 2, 4, 6, 8, 12, and 16 consecutive bit splices. Further, the strategy provides that the various monitored voltage tables remains distinct even with compiler optimization activated.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    This application claims the benefit of U.S. Provisional Application No. 61/860,032, filed Jul. 30, 2013. This application is also a continuation-in-part patent application of U.S. patent application Ser. No. 14/296,434, filed Jun. 4, 2014, which claims priority to U.S. Provisional Application No. 61/830,934, filed Jun. 4, 2013. The disclosures of these applications are incorporated herein by reference in their entirety. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    This invention relates in general to a method of analyzing and monitoring discrete power supply diagnostic states, and particularly to analyzing computer microprocessor system voltages. 
         [0003]    Linked memory random hardware failures can occur along the edges or lattices in planar memory. In planar memory structures, it is possible to have 1, 2, 4, 6, 8, 12, and 16 common lattices. For example, 4 lattices or edges occur when either 2 strips of planar memory set up back to back along with 2 other parallel strips of planar memory. The planar memory structure lattices were typically used by CISC (Complex Instruction Set Controllers). 
         [0004]    Linked memory random hardware failures can occur when column multiplexing using one or more bits is used in dispersed physical memory. In existing dispersed memory structures, it is possible to have 1, 2, and 4 bit column multiplexing. When one bit column multiplexing is used for “n” addresses, there is the potential for 1 and 2 bit linked physical dispersed memory failures. Similar linked physical dispersed memory failures are feasible for 2 bit and 4 bit column multiplexing. Additionally 6, 8, 12, or 16 linked memory failures may occur in physically dispersed memory. 
       SUMMARY OF THE INVENTION 
       [0005]    The approach in this invention for monitoring discrete power supply diagnostic states is independent of the underlying memory structure. With the described approaches, the values used are selected to ensure that random hardware linked errors will be detected. This applies to either planar memory structures with 1, 2, 4, 6, 8, 12, and 16 common lattices, or physical memory structures with individual bit dispersed memories with 1, 2, 4, 6, 8, 12, and 16 consecutive bit splices. 
         [0006]    According to one aspect of the invention, a method is provided for diagnosing the status of an operating voltage comprising the steps of: (a) using a processor to read an operating voltage and to determine one of the following states: (1) “no” over voltage (OV), “no” under voltage (UV); (2) “no” OV, “yes” UV; (3) “yes” OV, “no” UV or (4) “yes” OV, “yes” UV; (b) assigning a distinct byte value for each of the states identified in step (a), wherein the distinct values are selected having a hamming distance of at least 4 between functional and failure mode values; and (c) storing an operating status value corresponding to the determined operating state in a designated memory location of the processor. Each distinct byte value of step (b) may include an upper significant nibble (USNb) and a lower significant (LSNb), and wherein all of the USNbs are distinct and are selected having a hamming distance of at least 2, and all the LSNbs are distinct and are selected having a hamming distance of at least 2. Preferably, each of the USNbs and LSNbs are chosen from an unbalanced set of nibble values, and are chosen for each distinct value such that they are not complements of one another. Prior to step (c), the distinct byte value may be checked for a match with one of a group of defined values and, if there is a match, the distinct byte value is stored as the operating status value and, if there is no match, a separate “no match” value is stored. Also preferably, the distinct byte value of step (b) is a lower byte of a word and further includes the step of assigning an upper byte value to the word, the upper byte value including a USNb and a LSNb, and wherein one of the USNb and LSNb is a monitored voltage identifier and the other one is a control/diagnostic path identifier. For the upper byte, each of the USNbs and LSNbs are chosen from a balanced set of nibble values. The use of the upper byte ensures each monitored voltage table remains distinct even with compiler optimization activated. 
         [0007]    According to another aspect of the invention, a method is provided for diagnosing the status of an operating voltage comprising:
       (a) using a processor to read an operating voltage and to determine one of the following control states: (1) “no” OV, “no” UV; (2) “no” OV, “yes” UV; (3) “yes” OV, “no” UV or (4) “yes” OV, “yes” UV;   (b) assigning a distinct control byte value for each of the control states identified in step (a);   (c) storing an operating control status value corresponding to the determined operating state in a designated control memory location of the processor.   (d) using the processor of step (a) to read the operating voltage and to determine one of the following diagnostic states: (1) “no” OV, “no” UV; (2) “no” OV, “yes” UV; (3) “yes” OV, “no” UV or (4) “yes” OV, “yes” UV;   (e) assigning a distinct diagnostic byte value for each of the states identified in step (d);   (f) storing an operating diagnostic status value corresponding to the determined operating state in a designated diagnostic memory location of the processor; and   (g) comparing the operating control status value with the operating diagnostic status value to determine whether the control voltage state read in step (a) agrees with the diagnostic voltage state read in step (d).       
 
         [0015]    In this method, different control byte and diagnostic byte are provided based on complementary nibble “mirror” values. each distinct control byte value of step (b) includes a USNb and a LSNb, and all of the USNbs and LSNbs are distinct. Similarly, each distinct diagnostic byte value of step (f) includes a USNb and a LSNb, and all of the USNbs and LSNbs are also distinct. Preferably, the USNb and LSNb of the diagnostic byte value are mirrored with respect to the USNb and LSNb of the corresponding control byte value. In one version, both the USNb and LSNb of the diagnostic byte value are compared to the mirrored USNb and LSNb of the corresponding control byte value. In another version, such as when the processor has Single bit Error Correction and Double bit Error Detection (SECDED), only one of the USNb and LSNb of the diagnostic byte value is compared to one of the mirrored USNb and LSNb of the corresponding control byte value. 
         [0016]    Preferably, prior to step (c), the distinct control byte value is checked for a match with one of a group of defined control values and, if there is a match, the distinct control byte value is stored as the operating control status value and, if there is no match, a separate “no match” control value is stored. Similarly, prior to step (f), the distinct diagnostic byte value is checked for a match with one of a group of defined diagnostic values and, if there is a match, the distinct diagnostic byte value is stored as the operating diagnostic status value and, if there is no match, a separate “no match” diagnostic value is stored. 
         [0017]    According to a further aspect of the invention, a method of analyzing a power supply system is provided wherein a source input voltage is supplied to a first processor and an output voltage is generated by the first processor comprising the steps of: (a) using the first processor to determine a source operating status of the source input voltage; (b) using a second processor to determine an output operating status of the output voltage from the first processor; (c) sending the source operating status to the second processor; and (d) using the processor to analyze the source and output statuses to determine a system diagnosis as a function of both the source and output statuses. Preferably, the source operating status is sent to the second processor with no checksum or cyclic redundancy check (CRC). 
         [0018]    Various aspects of this invention will become apparent to those skilled in the art from the following detailed description of the preferred embodiment, when read in light of the accompanying drawings. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0019]      FIG. 1  is a block diagram showing one example of an operating environment for a power supply architecture embodying the principles of the invention, wherein the invention is utilized as a power supply with multiple vehicle control system; 
           [0020]      FIG. 2  is a block diagram of a portion of the power supply monitoring system of  FIG. 1 ; 
           [0021]      FIG. 3  is a representative table showing a method of segregating a group of binary nibble values into a balanced Set 1 and an unbalanced Set 2 of values for use in forming a lower byte; 
           [0022]      FIG. 4  is a table showing the various nibble values which are available for forming either the control word or the diagnostic word; 
           [0023]      FIG. 5  is a table showing various embodiments of the lower byte word values that can be selected to identify the four monitored voltage states; 
           [0024]      FIG. 6  is an embodiment of a method, similar to  FIG. 5 , that includes columns showing selection of the upper significant nibble and lower significant nibble to form the lower byte values; 
           [0025]      FIG. 7  is yet another embodiment of a method, similar to  FIG. 6 , that includes columns showing storage of a control stored value, the method including a decision dependent on the control status value matches or deviating from a defined value; 
           [0026]      FIG. 8  is an embodiment of a method, similar to  FIG. 7 , further adding a diagnostic path table; 
           [0027]      FIG. 9  is an embodiment of a method, similar to  FIG. 7 , further adding a second monitored voltage (Vb) table to the first monitored voltage (Va) table of  FIG. 7 ; 
           [0028]      FIGS. 10   a  and  10   b  illustrate a combination of the control and diagnostic tables for both monitored voltages Va and Vb; 
           [0029]      FIG. 11  is a flowchart of an algorithm of a method configured to prevent systematic errors when storing power supply states in memory location; 
           [0030]      FIG. 12  is a flowchart of an embodiment of a method including a diagnostic approach to determine where a power supply error occurs and whether or not that error is systematic; 
           [0031]      FIGS. 13   a  and  13   b  illustrate a combination of the control and diagnostic tables, similar to  FIGS. 10   a  and  10   b , showing the control and diagnostic stored values used when the associated microprocessor includes Single bit Error Correction and Double bit Error Detection (SECDEC). 
       
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
       [0032]    This invention concerns various embodiments directed to the efficient distribution and failsafe monitoring of power in a microcontroller system. While the various embodiments are particularly suitable for use in vehicular applications (including both automotive and truck), it will be readily appreciated that the invention and its various embodiments can be used, either singly or collectively, in other control applications having similar operating requirements. In one application, the inventions are used in a Multiple ASIL Optimized Power Supply Architecture for an electronic control module used for supervisory input processing (radar, camera, etc.) and output commands (engine torque, transmission torque, steering angle or torque, brake commands or torque, suspension commands, etc.) for driver assistance systems. The various inventions provide an integrated method or apparatus for an electronic module safety architecture which includes diversity, time and space independence for power supplies for the varied ASIL microprocessors and vehicle communication buses. 
         [0033]    Referring now to the drawings, there is illustrated in  FIG. 1  a block diagram showing one example of an operating environment for a power supply architecture embodying the principles of the invention, wherein the invention is utilized as a power supply in a vehicle control system. Generally, referring to  FIG. 1 , the functional aspects of the Multiple ASIL Optimized Power Supply Architecture of the electronic module may be characterized as follows:
       a. includes two high integrity ASIL D compatible microprocessors ( 1 A and  1 B) for supervisory input processing and output commands for driver assistance systems.   b. receives the input processing and output command information from two or more pairs of automotive communication buses (CAN, Flexray, etc.). These communication buses transfer high integrity information. Each external bus type has a complementary role if one of them is severed. As shown in  FIGS. 1 and 2 , each communication bus receives power from a separate and independent power supply.   c. includes one other high throughput processing microprocessor (microprocessor  2 A) with external memory. The microprocessor  2 A may have a quality management (non-ASIL) hardware requirement. Alternatively, the microprocessor  2 A may have a higher level designation, such as ASIL B.   d. microprocessors  1 A and  2 A may be used predominantly for control and microprocessor  1 B may be used predominantly for checking microprocessor  1 A and  2 A.   e. in one alternative, a minimal set of functions microprocessor  1 B is used for control and for these functions microprocessor  1 A is used for checking   f. providing independence between the 2 high integrity Automotive Safety Integrity Level (ASIL D) microprocessors ( 1 A and  1 B) and the high throughput processing quality management microprocessor (microprocessor  2 A) with ASIL B monitoring for external microprocessor hardware.       
 
         [0040]      FIG. 2  shows an exemplary power supply monitoring system representing a portion the power supply architecture of  FIG. 1 . in accordance with one or more of the principles of the invention disclosed herein.  FIG. 2  is a schematic representation that includes several voltage-generating sources and two voltage-monitoring microprocessors, represented by microprocessor “A” and microprocessor “B.” A battery and switching regulator provide an initial voltage source to the system. This source is monitored by an external circuit that produces discrete overvoltage/undervoltage outputs, depending on the state of the monitored voltage. The outputs of this monitor are read by microprocessor A. A power management IC (PMIC) sourced by the switching regulator generates additional independent voltage sources, each of which are monitored by OV/UV monitors and read by microprocessor A. Microprocessor A has the ability to generate additional independent voltage sources using power provided by both the switching regulator and PMIC. Voltages that are generated by microprocessor A are read by microprocessor B through OV/UV monitoring circuits. In a case where the PMIC fails to provide power to microprocessor A, one or more generated voltages from microprocessor A will also fail. In a case where the switching regulator fails to provide power to the PMIC and microprocessors, all generated voltages from the PMIC and microprocessors will fail in result. 
         [0041]    As used herein, the terms “bit,” “byte,” “nibble,” and “word” are applied in the context of computer programming and operating systems and are applied as those terms are understood in the computing art. Referring to  FIG. 3 , there is shown a representative table which illustrates how a full group of binary nibble values (16 in total) are selected and then segregated into Set 1 and Set 2. Set 1 is used for forming an upper byte of a word, and Set 2 is used for forming a lower byte of the word, as will be described. In particular, Set 1 is balanced, meaning each nibble includes an even number of 1&#39;s and/or 0&#39;s. Set 2 is unbalanced, meaning each nibble comprises an odd number of 1&#39;s and/or 0&#39;s. The values in each set are chosen such that they have a hamming distance of at least 2, meaning that to move from one value to another within the set, at least 2 bits must change value. Also shown in  FIG. 3  is the corresponding decimal value and hex value for each nibble. 
         [0042]    Referring to  FIG. 4 , there is shown in tabular form how the upper byte, selected from Set 1 values, and the lower byte, selected from Set 2 values, are combined to form either a control word or diagnostic word. In particular, the upper significant nibble of the upper byte is used to identify the particular voltage being monitored. The lower significant nibble of the upper byte is used to identify whether the particular word is a “control” word or “diagnostic” word, as will be discussed. The lower byte is used to identify the status of the particular voltage being monitored, as will be discussed. 
         [0043]    Referring to  FIG. 5 , there is illustrated a simplified table showing examples of lower byte values of  FIG. 4  that are selected to identify four monitored voltage states: (1) “no” over voltage, “no” under voltage; (2) “no” over voltage, “yes” under voltage; (3) “yes” over voltage, “no” under voltage; and (4) “yes” over voltage, “yes” under voltage. The lower byte, which represents the control status value, is assigned a distinct hex value, such as 74, B2, D1 and E8, corresponding to statuses (1) through (4), respectively. 
         [0044]      FIG. 6  is similar to  FIG. 5 , but adds columns showing how the upper significant nibble and lower significant nibble are selected to form the lower byte values. In particular, both the upper significant nibble and the lower significant nibble of the lower byte are chosen from the unbalanced Set 2 of  FIG. 3 . The upper significant nibble of the lower byte comprises, e.g., values 7, B, D and E, all having a hamming distance of 2. The lower significant nibble of the lower byte comprises, e.g., values 4, 2, 1 and 8, all also having a hamming distance of 2. When combined to form the lower byte, it will be appreciated that the four distinct lower bytes have a hamming distance of 4. It should also be understood that the lower byte preferably comprises an upper significant nibble and a lower significant nibble which are not compliments of one another. 
         [0045]      FIG. 7  is similar to  FIG. 6 , but adds columns showing how the control value is stored, depending on whether or not the control status value matches a defined value. After the voltage Va is read, the algorithm checks to see if the monitored value falls within the group of defined values, which in  FIG. 7  are 74, B2, D1 and E8. If so, the respective value corresponding measured voltage status is stored. If not, the algorithm stores another selected value such as, e.g., FO, indicating that the control status value falls outside the group of four expected values. 
         [0046]      FIG. 8  is similar to  FIG. 7 , but adds a diagnostic path table to the control path table of  FIG. 7 . In  FIG. 8 , columns showing the upper byte of the control path word are added to the control path. Also, another table representing a diagnostic path is added. In the control path, the USNb of the upper byte value (e.g., 3) corresponds to the particular voltage Va being monitored. Other monitored voltages would be identified by a different value, such as another one of the USNb values of the upper byte listed in  FIG. 4 . The LSNb for the upper control byte value is shown as F—this identifies the word as associated with the control path. 
         [0047]    In  FIG. 8 , the diagnostic path table follows the format of the control path table, but there some important differences. Of particular importance is the lower byte, which has a value that is a “mirror” image of the control byte for the same corresponding voltage status. See, e.g., for a “no” over voltage, “no” under voltage status, the control status value is 74, while the diagnostic status value is 47. The diagnostic “no match” value is set at 0F, which is also a mirror image to the control “no match” value F0. Also, the USNb is selected (from the table of 4) to be different from the control upper byte USNb (e.g., A). And the LSNb of the diagnostic upper byte is set at 0, which is the other value available from the respective column in  FIG. 4 . 
         [0048]      FIG. 9  is similar to  FIG. 7 , but adds a second monitored voltage (Vb) table to the first monitored voltage (Va) table of  FIG. 7 . It will be appreciated that the only difference between the Va table and the Vb table is a difference in the USNb of the upper byte. For the Va voltage table, the USNb has a value of 3, and for the V voltage table, the USNb has a value of A. Both of these values have been selected from  FIG. 4 . It is noteworthy that the control and diagnostic upper bytes are unique for each supply voltage to be monitored. This prevents a modern compiler from optimizing the algorithm and combining identical tables, which may increase the impact of systematic design errors. 
         [0049]      FIGS. 10   a  and  10   b  are essentially a combination of  FIGS. 8 and 9 . Thus, the control and diagnostic tables for both monitored voltages Va and Vb are shown, with the values therein being similar to those in  FIGS. 8 and 9 . 
         [0050]      FIG. 11  describes the process for which a monitoring input is analyzed and stored. Independent control and diagnostic paths individually read and store the monitoring inputs using the tables described in  FIG. 8 . The stored results of these paths are eventually compared to distinguish a true hardware failure from a systematic failure. Starting at step  100 , the monitoring input is read by the control path. This input is assigned a word value in step  110  based on  FIG. 8 . In step  120 , the algorithm confirms that the word matches a set of defined values. If it does not match, a “no match” value is stored for the control lower byte at step  122 . Otherwise, the upper byte of the word is masked at step  124  and the lower byte is checked against a set of defined lower byte values at step  126 . If it does not match defined byte values, a “no match” value is stored for the control lower byte, again at step  122 . Otherwise, the matching byte value is stored for the control lower byte, step  128 . 
         [0051]    The diagnostic path performs a similar operation to the control path, as represented by steps  200 - 228 . The monitoring input is read by the control path at step  200  and assigned a word based on  FIG. 8  at step  210 . The upper byte of the diagnostic word is unique from the control upper byte, with a hamming distance of 6. The diagnostic lower byte is the complementary nibble “mirror” of the control lower byte, with a hamming distance of 4. The diagnostic word is checked to match a defined set of valid diagnostic words at step  220 . If it does not match, a “no match” value is stored for the diagnostic lower byte, step  222 . As a result, a “no match” value is also stored for the control lower byte in step  250 . This additional step allows the diagnostic path to be functionally different from the control path, and thus reduces the risk of systematic error by preventing a modern compiler from combining the paths for optimization. If the diagnostic word matches a defined value, its upper byte is masked (step  224 ), and the lower byte is compared against defined values (step  226 ). A lower byte that does not match a defined value is stored as a “no match” value for the diagnostic and control lower bytes. Otherwise, the matching value is stored as the diagnostic lower byte (step  228 ). 
         [0052]    If the control and diagnostic paths store defined lower byte values, these bytes are expected to be complementary nibble “mirrors”, introduced in  FIG. 8 . If they match as “mirrors” in step  300 , the control lower byte is stored as a valid voltage status (step  310 ). If the nibbles do not match as “mirrors” then a software or systematic error has occurred in the algorithm, and a “no match” value is ultimately stored for the control lower byte (step  320 ). 
         [0053]      FIG. 12  describes the process in which a processor uses the algorithm in  FIG. 10  and compares multiple voltage monitors through independent diagnostic paths to determine the cause of a diagnostic failure and its location. This flowchart describes one particular case of diagnosing a failure in  FIG. 1 , where an input voltage to microprocessor A is analyzed along with an output voltage from processor A. 
         [0054]    At step  400 , sources voltages to microprocessor A are read by microprocessor A itself. At the same time in step  500 , microprocessor B reads the generated voltage outputs from processor A. During steps  410  and  510 , both microprocessors perform the Control/Diagnostic algorithm described in  FIG. 10 . In this embodiment of the invention, microprocessor B analyzes diagnostic statuses across multiple voltages. Therefore, source voltage statuses stored in microprocessor A will be sent to microprocessor B in step  420 . In this transmission, no checksum or cyclic redundancy check (CRC) is performed. This is due to the fact that the algorithm in  FIG. 10  guards against data/memory corruption without needing to slow down a transmission by using checksum or CRC. 
         [0055]    By knowing which voltages failed and the means by which they failed, microprocessor B is able to thoroughly diagnose the root of the failure. Step  520  involves microprocessor B analyzing voltage status bytes from the two independent paths in the circuit. If both status bytes are good, no failure is diagnosed (step  530 ). If the output voltage of microprocessor A is bad, and the source voltage of microprocessor A is good, then a failed output voltage is diagnosed (step  540 ). If the source voltage is bad and the output voltage fails as a result, then a source voltage failure is diagnosed (step  550 ). Lastly, if there is a source and output algorithm failure, then a non-hardware failure is diagnosed (step  560 ), which could be the cause of a systematic design error. 
         [0056]      FIGS. 13   a  and  13   b  are similar to  FIGS. 10   a  and  10   b , but show the control and diagnostic tables for both Va and Vb in the event the associated microprocessor has Single bit Error Correction and Double bit Error Detection (SECDEC). In this case, the entire lower byte need not be compared. The control and diagnostic paths can be compared either with the lower byte USNb or LSNb. To mitigate for systematic errors with an SECDEC microprocessor, it is preferable to compare the USNB for the processor&#39;s voltage supply and the LSNb for the complementary processor&#39;s voltage supply. As noted in  FIGS. 13   a  and  13   b , the Va control stored value (for a no-no voltage status is the USNb for the lower byte (e.g., 7), while the Vb control stored value is the LSNb for the lower byte (e.g., 4). For the Va diagnostic stored value, the LSNb of the “mirrored” lower byte is used (e.g., 7). For the Vb voltage diagnostic store value, the USNb of the “mirrored” lower byte is used (e.g., 4). 
         [0057]    The principle and mode of operation of this invention have been explained and illustrated in its preferred embodiment. However, it must be understood that this invention may be practiced otherwise than as specifically explained and illustrated without departing from its spirit or scope.