Difference between revisions of "Block Interface Design"

From EUDP
Jump to: navigation, search
(Why)
 
(19 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
== What ==
 
== What ==
  
Block Interface Design, is the process of developing one or more suited methods for connecting two or more modules in a system.
+
Block Interface Design is the process of developing one or more suited methods for connecting two or more modules in a system.
  
Interfaces, between two (or more) blocks '''must'' be coherent (i.e. both shall implement same interface, allowing interconnect).  
+
Interfaces between two (or more) blocks '''must''' be coherent (i.e. both implement the same interface, allowing interconnection).
  
 
== How ==
 
== How ==
Line 9: Line 9:
 
'''Ingredients'''
 
'''Ingredients'''
  
Interface design, dependant of the nature of the system to be, requires several of the following inputs :
+
Depending on the nature of the system-to-be, interface design requires several of the following inputs:
*Block & Component diagrams
+
*Block and component diagrams
*SW & Electronics specification/requirements
+
*SW and electronics specification/requirements
 
*Circuit board and/or sub-system specifications
 
*Circuit board and/or sub-system specifications
 
*System specification
 
*System specification
Line 21: Line 21:
 
'''Process'''  
 
'''Process'''  
  
Interface design, is basically the process of iterating through all functional blocks in the system-to-be, assesing
+
Interface design is basically the process of iterating through all functional blocks in the system-to-be, assessing:
* desired functionality  
+
* Desired functionality  
* required information flow
+
* Required information flow
* suited standards for exchanging information / power / data / etc
+
* Suited standards for exchanging information, power, data, etc.
  
Thus by having a common understanding of the desired functionality, one can select suited interfaces, that connects the blocks to be designed, being BOTH HW and SW.
+
====Interface Identification====
 +
 
 +
Thus, by having a common understanding of the desired functionality, one can select suited interfaces that connect the blocks to be designed, being '''both''' HW and SW.
 
    
 
    
Again, if the Interface Design activities reveals that functionality has not been assigned in an optimal manner, smaller [[http://www.eudp.dk/index.php/Design_Partitioning repartitioning]] might be necessary.
+
Again, if the interface design activities reveal that functionality has not been assigned in an optimal manner, smaller repartitioning (see [[Design Partitioning]]) might be necessary. This can allow for another, and perhaps even better, interface selection.
  
This can allow for another, perhaps better, interface selection.
+
When you feel that the system interfaces have been identified and described, it is time to perform an Interface Analysis.
+
  
When you feel that the system interfaces have been identified, and described, it is time to perform an '''Interface Analysis'''
+
====Interface Analysis====
 +
Interface analysis is a technique to verify that the inputs and outputs of the system-to-be are consistent with the defined signals, inputs, outputs and data of the rest of the system. In addition, the technique looks for inputs and outputs that do not connect with other elements of the system (missing items).
  
Interface analysis is a technique to verify that the inputs and outputs of the system to be are consistent with the defined signals, outputs, inputs, and data of the rest of the system.
+
This analysis is '''vital''' every time you cooperate with other team members, other teams that develop parts of the system, or simply if you choose to interface a component "on the shelf".
In addition, the technique looks for inputs and outputs that do not connect with other elements of the system (missing items).
+
  
This analysis is '''vital''' every time you are cooperating with other team-members, other teams that develops parts of the system, or simply if jo choose to interface a component "on the shelf"
+
When performing an interface analysis for the architecture of your system, you want to focus on the following aspects:
  
When performing an interface analysis for the architecture of your system, you want to focus on these areas:
+
* '''Physical:'''
 +
**Check the number of pins on the device and make sure that it matches the number on the circuit board drawing. If pin assignments are defined, verify that they are consistent between the circuit board and the complex electronics specification. Also, check for pins that are undefined or floating.
 +
* '''Power:'''
 +
**Make sure that the correct voltages are applied to the power pins. Is the correct type of power (A/C, D/C) provided? Are the ground pins connected? What voltage levels (range) are acceptable for the input or output? What voltage is considered a "high" or a "low" for logic values? Are fan-in and fan-out requirements met?
 +
* '''Signals:'''
 +
**Verify that input signals match the output signals of other devices. Verify that every input signal comes from somewhere, and that every output signal is used by some other device. Verify that the types of signals are correct and consistent. Check timing requirements for the signals.
 +
* '''Communications:'''
 +
**If the component/block requires communication via a specified interface or data communication protocol, make sure that the communication requirements are fulfilled on both sides of the end comprising the interface. Check any defined messages or data for consistency across the interface.
 +
* '''System level:'''
 +
**Take a step back from the details and consider how the complex electronics work within the system. Look at the functions that the device must implement and consider whether the correct inputs are provided to the device. Will the device have enough information to perform its expected functions? Also look at the broader data and communication paths. Are there any bottlenecks that could affect the timing of data coming into the complex electronics or slow down any outputs on the way to other devices? How would failure of one part of the communication path affect the complex electronic device?
 +
* '''Parameter ranges:'''
 +
** For SW blocks, be careful to analyse the required parameters to functions and define the valid range(s) for the data transferred to the function through the parameters. As part of the design specification, it is a good idea to have well-defined parameter ranges to program against.
 +
* '''Function responses:'''
 +
** Define valid responses from the functions. In order to design other SW blocks, the response from a function call must be well-defined and known.
  
* '''Physical.'''
+
During design and realisation, the interface analysis should also be performed on the individual blocks in your design. Here, focus can be narrowed down to following:
Check the number of pins on the device, and ensure that it matches the number on the circuit board drawing. If pin assignments are defined, verify that they are consistent between the circuit board and the complex electronics specification. Also check for pins that are undefined or floating.
+
* '''Power.'''
+
Are the correct voltages applied to power pins? Is the correct type of power (A/C, D/C) provided? Are the ground pins connected? What voltage levels (range) are acceptable for the input or output? What voltage is considered a “high” or a “low” for logic values? Are fan-in and fan-out requirements met?
+
* '''Signals.''' Verify that input signals match the output signals of other devices. Verify that every input signal comes from somewhere, and that every output signal is used by some other device. Verify that the types of signals are correct and consistent. Check timing requirements for the signals.
+
* '''Communications.'''
+
If the complex electronics will implement any communication schema, verify that the specification is correct for that schema, and consistent with other elements of the system. Check any defined messages or data for consistency across the interface.
+
* '''System-level.'''
+
Take a step back from the details and consider how the complex electronics works within the system. Look at the functions the device has to implement and consider whether the correct inputs are provided to the device. Will the device have enough information to perform its expected functions? Also look at the broader data and communications paths. Are there any bottlenecks that could affect the timing of data coming into the complex electronics, or slow down any outputs on the way to other devices? How would failure of one part of the communication path affect the complex electronic device?
+
  
 +
* '''Logical:'''
 +
**Logical blocks take inputs, process them and produce outputs. Check the description of the logical block and verify that the correct types of inputs are provided. Make sure that no inputs are undefined or floating.
 +
* '''Power:'''
 +
**For each internal connection, verify that the voltage levels (range) are consistent. For example, if the signal is +/- 5V, it should not suddenly become+/-10V somewhere in the design. Check for consistency in the "high" and "low" voltages for logic values.
 +
* '''Signals:'''
 +
**For each internal connection, verify that input signals match the output signals of other devices/blocks. Verify that every input signal comes from somewhere, and that every output signal is used by another element. Verify that the types of signals are correct and consistent. Check timing requirements for the signals.
 +
* '''Software functions:'''
 +
** In order to perform a test before programming, define the equivalence classes, see [https://en.wikipedia.org/wiki/Equivalence_partitioning Wikipedia], for the input and design the black box test according to the classes.
  
The interface analysis should also be performed on the individual blocks in your design, during design and realisation, here focus can be narrowed down to following :
+
'''Outcomes:'''
 +
Interface analysis can be done either formally or informally. You always need to have design documentation that describes interfaces, and you have to make sure that these are consistent and updated.
  
* '''Logical.''' Logical blocks take inputs, process them, and provide outputs. Check the description of the logical block and verify that the correct types of inputs are provided. Make sure that no inputs are undefined or floating.
+
Whether the interface analysis is documented in an analysis report (or in your desktop notes) depends on who needs the output. If your component is part of a larger sub-system, it is recommended to do a set of common specification for analysing interfaces.
* '''Power.''' At each internal connection, verify that the voltage levels (range) are consistent. For example, if the signal is +/- 5V, it should not suddenly become+/-10V somewhere in the design. Check for consistency in the “high” and “low” voltages for logic values.
+
* '''Signals.''' At each internal connection, verify that input signals match the output signals of other devices/blocks. Verify that every input signal comes from somewhere, and that every output signal is used by some other element. Verify that the types of signals are correct and consistent. Check timing requirements for the signals.
+
 
+
 
+
'''Outcomes'''
+
interface analysis can be done either formal or informal.
+
You always need to have design documentation, that describes interfaces, and assure that these are consistent and updated.
+
 
+
Whether the interface amnalysis in documentet in an analysis report, or in your desktop notes, depends on who need the output.
+
If your component is part of a larger subsystem, it is recommended to do a set of common specification for analyzing interfaces.
+
  
 
== Why ==
 
== Why ==
Line 71: Line 76:
 
''A small analogy:''  
 
''A small analogy:''  
  
'''Lets imagine building a house:'''
+
'''Let's imagine building a house:'''
If the technical platform is percieved as the solid foundation, onto wich you build your system-to-be, the interfaces are the infrastructure, the plumbing, wiring and ventilation, that needs to be installed where we need the "components" in the house. i.e. the toilet needs a correctly dimensioned drain and water to be able to flush, the owen needs power, the floor heating need hot water etc....
+
 
 +
If the technical platform is perceived as the solid foundation onto which you build your system-to-be, the interfaces are the infrastructure, the plumbing, the wiring and ventilation that are to be installed where we need the "components" in the house. I.e. the toilet needs a correctly dimensioned drain and water to be able to flush, the oven needs power, the floor heating need hot water, etc.
  
 
'''Why are the correct interfaces important:'''
 
'''Why are the correct interfaces important:'''
Imagine trying to mount a toilet if the drain pipe is to small.... this would correspond to connecting a electronic controller that requires 48V/10A to a small laptop powersupply, capable of delivering 20V/3A.    IT WON'T WORK !!
 
 
 
  
 +
Imagine trying to mount a toilet if the drain pipe is to small. This would correspond to connecting an electronic controller that requires 48V/10A to a small laptop power supply, capable of delivering 20V/3A. '''It won't work!'''
  
 
===Links===
 
===Links===
* http://www.hq.nasa.gov/office/codeq/software/ComplexElectronics/techniques/interface-analysis.htm
+
 
 +
* [https://en.wikipedia.org/wiki/Equivalence_class Equivalence Classes]

Latest revision as of 08:57, 17 August 2017

What

Block Interface Design is the process of developing one or more suited methods for connecting two or more modules in a system.

Interfaces between two (or more) blocks must be coherent (i.e. both implement the same interface, allowing interconnection).

How

Ingredients

Depending on the nature of the system-to-be, interface design requires several of the following inputs:

  • Block and component diagrams
  • SW and electronics specification/requirements
  • Circuit board and/or sub-system specifications
  • System specification
  • Interface documentation (formal or informal)
  • System and sub-system descriptions
  • Operational concepts
  • Product information (e.g. for the complex electronic device)

Process

Interface design is basically the process of iterating through all functional blocks in the system-to-be, assessing:

  • Desired functionality
  • Required information flow
  • Suited standards for exchanging information, power, data, etc.

Interface Identification

Thus, by having a common understanding of the desired functionality, one can select suited interfaces that connect the blocks to be designed, being both HW and SW.

Again, if the interface design activities reveal that functionality has not been assigned in an optimal manner, smaller repartitioning (see Design Partitioning) might be necessary. This can allow for another, and perhaps even better, interface selection.

When you feel that the system interfaces have been identified and described, it is time to perform an Interface Analysis.

Interface Analysis

Interface analysis is a technique to verify that the inputs and outputs of the system-to-be are consistent with the defined signals, inputs, outputs and data of the rest of the system. In addition, the technique looks for inputs and outputs that do not connect with other elements of the system (missing items).

This analysis is vital every time you cooperate with other team members, other teams that develop parts of the system, or simply if you choose to interface a component "on the shelf".

When performing an interface analysis for the architecture of your system, you want to focus on the following aspects:

  • Physical:
    • Check the number of pins on the device and make sure that it matches the number on the circuit board drawing. If pin assignments are defined, verify that they are consistent between the circuit board and the complex electronics specification. Also, check for pins that are undefined or floating.
  • Power:
    • Make sure that the correct voltages are applied to the power pins. Is the correct type of power (A/C, D/C) provided? Are the ground pins connected? What voltage levels (range) are acceptable for the input or output? What voltage is considered a "high" or a "low" for logic values? Are fan-in and fan-out requirements met?
  • Signals:
    • Verify that input signals match the output signals of other devices. Verify that every input signal comes from somewhere, and that every output signal is used by some other device. Verify that the types of signals are correct and consistent. Check timing requirements for the signals.
  • Communications:
    • If the component/block requires communication via a specified interface or data communication protocol, make sure that the communication requirements are fulfilled on both sides of the end comprising the interface. Check any defined messages or data for consistency across the interface.
  • System level:
    • Take a step back from the details and consider how the complex electronics work within the system. Look at the functions that the device must implement and consider whether the correct inputs are provided to the device. Will the device have enough information to perform its expected functions? Also look at the broader data and communication paths. Are there any bottlenecks that could affect the timing of data coming into the complex electronics or slow down any outputs on the way to other devices? How would failure of one part of the communication path affect the complex electronic device?
  • Parameter ranges:
    • For SW blocks, be careful to analyse the required parameters to functions and define the valid range(s) for the data transferred to the function through the parameters. As part of the design specification, it is a good idea to have well-defined parameter ranges to program against.
  • Function responses:
    • Define valid responses from the functions. In order to design other SW blocks, the response from a function call must be well-defined and known.

During design and realisation, the interface analysis should also be performed on the individual blocks in your design. Here, focus can be narrowed down to following:

  • Logical:
    • Logical blocks take inputs, process them and produce outputs. Check the description of the logical block and verify that the correct types of inputs are provided. Make sure that no inputs are undefined or floating.
  • Power:
    • For each internal connection, verify that the voltage levels (range) are consistent. For example, if the signal is +/- 5V, it should not suddenly become+/-10V somewhere in the design. Check for consistency in the "high" and "low" voltages for logic values.
  • Signals:
    • For each internal connection, verify that input signals match the output signals of other devices/blocks. Verify that every input signal comes from somewhere, and that every output signal is used by another element. Verify that the types of signals are correct and consistent. Check timing requirements for the signals.
  • Software functions:
    • In order to perform a test before programming, define the equivalence classes, see Wikipedia, for the input and design the black box test according to the classes.

Outcomes: Interface analysis can be done either formally or informally. You always need to have design documentation that describes interfaces, and you have to make sure that these are consistent and updated.

Whether the interface analysis is documented in an analysis report (or in your desktop notes) depends on who needs the output. If your component is part of a larger sub-system, it is recommended to do a set of common specification for analysing interfaces.

Why

A small analogy:

Let's imagine building a house:

If the technical platform is perceived as the solid foundation onto which you build your system-to-be, the interfaces are the infrastructure, the plumbing, the wiring and ventilation that are to be installed where we need the "components" in the house. I.e. the toilet needs a correctly dimensioned drain and water to be able to flush, the oven needs power, the floor heating need hot water, etc.

Why are the correct interfaces important:

Imagine trying to mount a toilet if the drain pipe is to small. This would correspond to connecting an electronic controller that requires 48V/10A to a small laptop power supply, capable of delivering 20V/3A. It won't work!

Links