Tenemos:
Pi,j=Xi∧YjSouti,j=(Sini,j⊕Pi,j)⊕Cini,jCouti,j=(Cini,j∧(Sini,j⊕Pi,j))∨(Sini,j∧Pi,j)
En la cuenta de mi Couti,j es diferente; esta es la fórmula que me sale en busca de la Serpiente Llena en un carry-save-multiplicación de matriz (de aquí):
![enter image description here]()
Que se utiliza en el multiplicador de la unidad:
![enter image description here]()
En la imagen de arriba, mj es nuestro Xi qi es nuestro Yj. Nuestra Pi,j es la salida Y la puerta. El cable que viene de la parte superior es el Sout de la unidad por encima de nosotros, es decir,. Sini,j. Esto es lo que el 4x4 MULT circuito se parece a:
![enter image description here]()
Ahora, a pesar de que mi Couti,j es diferente, puede ser equivalente. En cualquier caso, la metodología siguiente esquema de trabajo para ambos.
En el anidado de expresiones, para cada operación (y⋆z) donde y,z son variables, y ⋆ es de alguna operación ∈{∨,∧,⊕}, de crear una nueva variable, y reemplazar el (y⋆z) con la nueva variable. A continuación, utilizando las identidades, a continuación, agregar las cláusulas de la CNF, que entorpece la nueva variable sea igual a la sustituye expresión. Repita esto hasta que no hay operaciones de la izquierda.
Vamos a empezar con Pi,j=Xi∧Yj:
Para general x=y∧z:
\begin{array}{ccl|c}
%\mathbf{\text{Statement}}&&%&\mathbf{\text{#}}&\mathbf{\text{Reason}}
\\
&&&\mathbf{\genfrac{}{}{0}{1}{\text{Clause}}{\text{format}}}\\\hline\\
\left[x=y\wedge z\right]
&\iff&
\left[x\iff y\wedge z\right]\\
&\iff&
\left[
\begin{array}{}
\phantom{~\wedge~}(x\implies y\wedge z)\\
~\wedge~(y\wedge z\implies x)
\end{array}
\right]
\\\hline\\
\left[x\implica (y\wedge z)\right]
&\ffi&
\left[
\begin{array}{}
\phantom{~\wedge~}(x\implies y)\\
{~\wedge~}(x\implies z)
\end{array}
\right]\\
&\ffi&
\left[
\begin{array}{}
\phantom{~\wedge~}(\neg x\vee y)\\
{~\wedge~}(\neg x\vee z)
\end{array}
\right]
&\tilde\\\hline\\
\left[(y\wedge z)\implica x\right]
&\ffi&
\left[
\neg x \implica \neg (y\wedge z)
\right]\\
&\ffi&
\left[
\neg x \implica (\neg y\v \neg z)
\right]\\
&\ffi&
\left[
( x \v \neg y\v \neg z)
\right]
&\tilde\\\hline\\
\left[x=y\wedge z\right]
&\ffi&
\left[\begin{array}{}
\phantom{~\wedge~}( x \vee \neg y\vee \neg z)\\
\\\\
{~\wedge~}(\neg x\vee y)\\
{~\wedge~}(\neg x\vee z)\end{array}\right]
&\marca de verificación
\end{array}
Así, podemos agregar (Pi,j∨¬Xi∨¬Yj)∧(¬Pi,j∨Xi)∧(¬Pi,j∨Yj) a la CNF.
A continuación, vamos a convertir este: Souti,j=(Sini,j⊕Pi,j)⊕Cini,j.
Deje αi,j=Sini,j⊕Pi,j.
A continuación,Souti,j=αi,j⊕Cini,j.
Para general x=y⊕z:
\requieren{cancel}
\begin{array}{ccl|c}
\\
&&&\mathbf{\genfrac{}{}{0}{1}{\text{Clause}}{\text{format}}}\\\hline\\
(x = y\oplus z)
&\iff&
(x \iff y\oplus z)
\\
&\iff&
\left[
\begin{array}{}
\phantom{~\wedge~}(x \implies y\oplus z)\\
{~\wedge~}(y\oplus z \implies x)\\
\end{array}
\right]
\\\hline\\
(x \implica y\oplus z)
&\ffi&
\left[
\begin{array}{}
\phantom{~\wedge~}(x \implies y\vee z)\\
{~\wedge~}(x \implies \neg y\vee \neg z)\\
\end{array}
\right]
\\
&\ffi&
\left[
\begin{array}{}
\phantom{~\wedge~}(\neg x \vee y\vee z)\\
{~\wedge~}(\neg x \vee \neg y\vee \neg z)\\
\end{array}
\right]
&\marca de verificación
\\\hline\\
(y\oplus z\implica x)
&\ffi&
\left[
\begin{array}{}
\phantom{~\wedge~}(y \wedge z \implies \neg x)\\
{~\wedge~}(y \wedge \neg z \implies x)\\
{~\wedge~}(\neg y \wedge z \implies x)\\
{~\wedge~}(\neg y \wedge \neg z \implies \neg x)\\
\end{array}
\right]
\\
&\ffi&
\left[
\begin{array}{}
\phantom{~\wedge~}(\neg y \vee \neg z \vee \neg x)\\
{~\wedge~}(\neg y \vee z \vee x)\\
{~\wedge~}(y \vee \neg z \vee x)\\
{~\wedge~}(y \vee z \vee \neg x)\\
\end{array}
\right]
&\marca de verificación
\\
&\ffi&
\left[
\begin{array}{}
\phantom{~\wedge~}(\neg x \vee \neg y \vee \neg z)\\
{~\wedge~}(x \vee \neg y \vee z)\\
{~\wedge~}(x \vee y \vee \neg z)\\
{~\wedge~}( \neg x \vee y \vee z)\\
\end{array}
\right]
&\marca de verificación
\\\hline\\
(x = y\oplus z)
&\ffi&
\left[
\begin{array}{}
\phantom{~\wedge~}(\neg x \vee y\vee z)\\
{~\wedge~}(\neg x \vee \neg y\vee \neg z)\\
\\\\\\
\cancel{{~\wedge~}(\neg x \vee \neg y \vee \neg z)}\\
{~\wedge~}(x \vee \neg y \vee z)\\
{~\wedge~}(x \vee y \vee \neg z)\\
\cancel{{~\wedge~}( \neg x \vee y \vee z)}\\
\end{array}
\right]
&\marca de verificación
\\
&\ffi&
\left[
\begin{array}{}
\phantom{~\wedge~}(\neg x \vee y\vee z)\\
{~\wedge~}(\neg x \vee \neg y\vee \neg z)\\
{~\wedge~}(x \vee \neg y \vee z)\\
{~\wedge~}(x \vee y \vee \neg z)\\
\end{array}
\right]
&\marca de verificación
\\
\end{array}
Averiguar qué cláusulas para agregar ahora, de una vez por \alpha_{i,j} (una nueva variable) y de una vez por S^{out}_{i,j}, para un total de 8 cláusulas.
Finalmente, para C^{out}_{i,j}, usted puede reducir el funcionamiento interno, y reemplazarlos con las variables. El único resto de la operación yo no te enseñan a reemplazar es (y \vee z). Así, por x=y\vee z:
\begin{array}{ccl|c}
\\
&&&\mathbf{\genfrac{}{}{0}{1}{\text{Clause}}{\text{format}}}\\\hline\\
(x=y\vee z)
&\iff&
\left[
\begin{array}{}
\phantom{~\wedge~}(x \implies y\vee z)\\
{~\wedge~}(y\vee z \implies x)\\
\end{array}
\right]
\\\hline\\
(x \implica y\vee z)
&\ffi&
\left[
\begin{array}{}
\phantom{~\wedge~}(\neg x \vee y\vee z)\\
\end{array}
\right]
&\marca de verificación
\\\hline\\
(y\vee z \implica x)
&\ffi&
\left[
\begin{array}{}
\phantom{~\wedge~}(y \implies x)\\
{~\wedge~}(z \implies x)\\
\end{array}
\right]
\\
&\ffi&
\left[
\begin{array}{}
\phantom{~\wedge~}(\neg y \vee x)\\
{~\wedge~}(\neg z \vee x)\\
\end{array}
\right]
&\marca de verificación
\\\hline\\
(x=y\vee z)
&\ffi&
\left[
\begin{array}{}
\phantom{~\wedge~}(\neg x \vee y\vee z)\\
\\\\
{~\wedge~}(\neg y \vee x)\\
{~\wedge~}(\neg z \vee x)\\
\end{array}
\right]
&\marca de verificación
\end{array}
Así que ahora vamos a resolver el final, C^{out}:
\begin{eqnarray}
C^{out}_{i,j}&=&
(C^{in}_{i,j} \wedge (S^{in}_{i,j}\oplus P_{i,j}) )
\vee
(S^{in}_{i,j}\wedge P_{i,j})
\end{eqnarray}
Por lo tanto, tenemos \alpha_{i,j}=S^{in}_{i,j}\oplus P_{i,j}. A continuación, establezca \beta_{i,j}=S^{in}_{i,j}\wedge P_{i,j} (utilizando el \wedge operación de la anterior). Siguiente, reemplazar las variables de la fórmula:
\begin{eqnarray}
C^{out}_{i,j}
&=&
(C^{in}_{i,j} \wedge (S^{in}_{i,j}\oplus P_{i,j}) )
\vee
(S^{in}_{i,j}\wedge P_{i,j})
\\
&=&
(C^{in}_{i,j} \wedge \alpha_{i,j})
\vee
(\beta_{i,j})\\
\gamma_{i,j}
&=&
C^{in}_{i,j} \wedge \alpha_{i,j}\\
C^{out}_{i,j}
&=&
\gamma_{i,j} \vee \beta_{i,j}
\end{eqnarray}
Ahora usted puede codificar C^{out}_{i,j}=\gamma_{i,j} \vee \beta_{i,j} \vee operación de conversión. Y no te olvides de codificar todas las nuevas variables, \alpha_{i,j},\beta_{i,j},\gamma_{i,j} con sus respectivas operaciones.