Models for boolean devices

Logical (boolean) functions (OR, AND, XOR etc.) can be modeled using macro models. Here, each input gets the transfer characteristic and its derivative described as follows:

$\displaystyle u_i$ $\displaystyle = \tanh (10\cdot (u_{in} - 0.5))$ (10.252)
$\displaystyle u_i'$ $\displaystyle = 10\cdot \left( 1- \tanh^2 (10\cdot (u_{in} - 0.5)) \right)$ (10.253)

The resulting voltages $ u_i$ for each input are combined to create the wanted function for a device with $ N$ inputs:

Inverter:$\displaystyle \qquad$ $\displaystyle u_{out} = 0.5\cdot(1 - u_i)$ (10.254)
NOR:$\displaystyle \qquad$ $\displaystyle u_{out} = \dfrac{N}{\sum\limits_m \dfrac{2}{1 - u_{i,m}}}$ (10.255)
OR:$\displaystyle \qquad$ $\displaystyle u_{out} = 1 - u_{out,NOR}$ (10.256)
AND:$\displaystyle \qquad$ $\displaystyle u_{out} = \dfrac{N}{\sum\limits_m \dfrac{2}{1 + u_{i,m}}}$ (10.257)
NAND:$\displaystyle \qquad$ $\displaystyle u_{out} = 1 - u_{out,AND}$ (10.258)
XOR:$\displaystyle \qquad$ $\displaystyle u_{out} = 0.5\cdot\left( 1 - \prod_m -u_{i,m} \right)$ (10.259)
XNOR:$\displaystyle \qquad$ $\displaystyle u_{out} = 0.5\cdot\left( 1 + \prod_m u_{i,m} \right)$ (10.260)

The above-mentioned functions model devices with 0V as logical low-level and 1V as logical high-level. Of course, they can be easily transformed into higher voltage levels by multiplying the desired high-level voltage to the output voltage $ u_{out}$ and dividing the input voltages $ u_{in}$ by the desired high-level voltage. Note: The derivatives also get $ u_{in}$ divided by the desired high-level voltage, but they are not multiplied by the desired high-level voltage.

To perform a simulation on these devices, the first derivatives are also needed:

Inverter:$\displaystyle \quad$ $\displaystyle \dfrac{\partial u_{out}}{\partial u_{in}} = -0.5\cdot u_i'$ (10.261)
OR:$\displaystyle \quad$ $\displaystyle \dfrac{\partial u_{out}}{\partial u_{in,n}} = \dfrac{2\cdot N\cdot u_{i,n}'}{\left( (1-u_{i,n})\cdot\sum\limits_m \dfrac{2}{1-u_{i,m}} \right)^2}$ (10.262)
NOR:$\displaystyle \quad$ $\displaystyle \dfrac{\partial u_{out}}{\partial u_{in,n}} = - \left.\dfrac{\partial u_{out}}{\partial u_{in,n}}\right\vert _{\text{OR}}$ (10.263)
AND:$\displaystyle \quad$ $\displaystyle \dfrac{\partial u_{out}}{\partial u_{in,n}} = \dfrac{2\cdot N\cdot u_{i,n}'}{\left( (1+u_{i,n})\cdot\sum\limits_m \dfrac{2}{1+u_{i,m}} \right)^2}$ (10.264)
NAND:$\displaystyle \quad$ $\displaystyle \dfrac{\partial u_{out}}{\partial u_{in,n}} = - \left.\dfrac{\partial u_{out}}{\partial u_{in,n}}\right\vert _{\text{AND}}$ (10.265)
XOR:$\displaystyle \quad$ $\displaystyle \dfrac{\partial u_{out}}{\partial u_{in,n}} = 0.5\cdot u_{i,n}' \cdot\prod_{m\ne n} -u_{i,m}$ (10.266)
XNOR:$\displaystyle \quad$ $\displaystyle \dfrac{\partial u_{out}}{\partial u_{in,n}} = 0.5\cdot u_{i,n}' \cdot\prod_{m\ne n} u_{i,m}$ (10.267)

A problem of these macro models are the numbers of input ports. The output voltage levels worsen with increasing number of ports. The practical limit lies around eight input ports.

With that knowledge it is now easy to create the MNA matrix. The first port is the output port of the device. So, for a 2-input port device, it is:

$\displaystyle \begin{bmatrix}.&.&.& 1\\ .&.&.& 0\\ .&.&.& 0\\ -1 & \partial u_{...
... I_{out} \end{bmatrix} = \begin{bmatrix}I_{0}\\ I_{1}\\ I_{2}\\ 0 \end{bmatrix}$ (10.268)

The above MNA matrix entries are also used during the non-linear DC and transient analysis with the 0 in the right hand side vector replaced by an equivalent voltage

$\displaystyle V_{eq} = \dfrac{\partial u_{out}}{\partial u_{in,1}}\cdot V_{in,1} + \dfrac{\partial u_{out}}{\partial u_{in,2}}\cdot V_{in,2} - u_{out}$ (10.269)

with $ u_{out}$ computed using equations (10.254) to (10.260).

With the given small-signal matrix representation, building the S-parameters is easy.

$\displaystyle (\underline{S}) = \begin{bmatrix}-1 & 4\cdot\partial u_{out}/ \pa...
...\cdot\partial u_{out}/ \partial u_{in,2} \\ 0 & 1 & 0\\ 0 & 0 & 1 \end{bmatrix}$ (10.270)

These matrices can easily extended to any number of input ports.

This document was generated by Stefan Jahn on 2007-12-30 using latex2html.