aboutsummaryrefslogtreecommitdiff
path: root/etc/n2.lyx
diff options
context:
space:
mode:
authorJuan Marín Noguera <juan.marinn@um.es>2020-02-20 16:07:37 +0100
committerJuan Marín Noguera <juan.marinn@um.es>2020-02-20 16:07:37 +0100
commitc6f69b3f45b81d19b8eeb87184bf16e6de0fad24 (patch)
tree92d4e853e031c3ff144a72a2326312cf58e8dae3 /etc/n2.lyx
parent1eea228b43c3e243c1e1e9baf21d5d0d3f970152 (diff)
2
Diffstat (limited to 'etc/n2.lyx')
-rw-r--r--etc/n2.lyx1105
1 files changed, 1105 insertions, 0 deletions
diff --git a/etc/n2.lyx b/etc/n2.lyx
new file mode 100644
index 0000000..097f459
--- /dev/null
+++ b/etc/n2.lyx
@@ -0,0 +1,1105 @@
+#LyX 2.3 created this file. For more info see http://www.lyx.org/
+\lyxformat 544
+\begin_document
+\begin_header
+\save_transient_properties true
+\origin unavailable
+\textclass book
+\use_default_options true
+\maintain_unincluded_children false
+\language spanish
+\language_package default
+\inputencoding auto
+\fontencoding global
+\font_roman "default" "default"
+\font_sans "default" "default"
+\font_typewriter "default" "default"
+\font_math "auto" "auto"
+\font_default_family default
+\use_non_tex_fonts false
+\font_sc false
+\font_osf false
+\font_sf_scale 100 100
+\font_tt_scale 100 100
+\use_microtype false
+\use_dash_ligatures true
+\graphics default
+\default_output_format default
+\output_sync 0
+\bibtex_command default
+\index_command default
+\paperfontsize default
+\spacing single
+\use_hyperref false
+\papersize default
+\use_geometry false
+\use_package amsmath 1
+\use_package amssymb 1
+\use_package cancel 1
+\use_package esint 1
+\use_package mathdots 1
+\use_package mathtools 1
+\use_package mhchem 1
+\use_package stackrel 1
+\use_package stmaryrd 1
+\use_package undertilde 1
+\cite_engine basic
+\cite_engine_type default
+\biblio_style plain
+\use_bibtopic false
+\use_indices false
+\paperorientation portrait
+\suppress_date false
+\justification true
+\use_refstyle 1
+\use_minted 0
+\index Index
+\shortcut idx
+\color #008000
+\end_index
+\secnumdepth 3
+\tocdepth 3
+\paragraph_separation indent
+\paragraph_indentation default
+\is_math_indent 0
+\math_numbering_side default
+\quotes_style swiss
+\dynamic_quotes 0
+\papercolumns 1
+\papersides 1
+\paperpagestyle default
+\tracking_changes false
+\output_changes false
+\html_math_output 0
+\html_css_as_file 0
+\html_be_strict false
+\end_header
+
+\begin_body
+
+\begin_layout Standard
+La
+\series bold
+CPU
+\series default
+ (
+\emph on
+Central Processing Unit
+\emph default
+) es un bloque lógico complejo que ejecuta instrucciones de un programa
+ escrito de acuerdo a un juego de instrucciones o
+\series bold
+ISA
+\series default
+ (
+\emph on
+Instruction Set Architecture
+\emph default
+).
+\end_layout
+
+\begin_layout Section
+Componentes combinacionales sencillos
+\end_layout
+
+\begin_layout Paragraph
+
+\series bold
+Decodificador
+\end_layout
+
+\begin_layout Standard
+Tiene
+\begin_inset Formula $n$
+\end_inset
+
+ líneas de entrada y
+\begin_inset Formula $2^{n}$
+\end_inset
+
+ de salida, y para cada valor posible de la entrada, una y sólo una línea
+ de salida tiene el valor 1.
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado14.png
+
+\end_inset
+
+
+\begin_inset Graphics
+ filename pegado15.png
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Paragraph
+
+\series bold
+Multiplexor
+\end_layout
+
+\begin_layout Standard
+Tiene
+\begin_inset Formula $n$
+\end_inset
+
+ líneas de entrada de control y
+\begin_inset Formula $2^{n}$
+\end_inset
+
+ de datos, y devuelve en su única línea de salida la línea de datos indicada
+ por las de control.
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado18.png
+
+\end_inset
+
+
+\begin_inset Graphics
+ filename pegado19.png
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Paragraph
+
+\series bold
+Desplazador
+\end_layout
+
+\begin_layout Standard
+Recibe una palabra de
+\begin_inset Formula $n$
+\end_inset
+
+ bits y devuelve otra de
+\begin_inset Formula $n$
+\end_inset
+
+ bits resultado de desplazar a la izquierda o a la derecha la palabra de
+ entrada un cierto número de bits, que suele ser fijo.
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado16.png
+ width 100text%
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado17.png
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Paragraph
+
+\series bold
+Extensor de signo
+\end_layout
+
+\begin_layout Standard
+Recibe un entero de
+\begin_inset Formula $m$
+\end_inset
+
+ bits con signo y devuelve el mismo en
+\begin_inset Formula $n$
+\end_inset
+
+ bits (
+\begin_inset Formula $n>m$
+\end_inset
+
+).
+ En complemento a 2, esto equivale a replicar el bit de signo en los
+\begin_inset Formula $n-m$
+\end_inset
+
+ bits más significativos.
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado20.png
+ width 100text%
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado21.png
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Unidad aritmético-lógica
+\end_layout
+
+\begin_layout Standard
+Una
+\series bold
+ALU
+\series default
+ (
+\emph on
+Arithmetic Logic Unit
+\emph default
+) es un circuito combinacional capaz de realizar operaciones aritméticas
+ y lógicas sobre operandos de entrada para generar una salida.
+ La operación a realizar viene dada por unos bits de control.
+ Como ejemplo mostramos una ALU capaz de realizar las operaciones de conjunción
+ (AND) y disyunción (OR) bit a bit; suma y resta detectando desbordamientos,
+ y comparación de dos números (SLT,
+\emph on
+set less than
+\emph default
+), comprobando si uno es mayor, menor o igual al otro.
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado22.png
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Un
+\series bold
+semisumador
+\series default
+ (
+\emph on
+half adder
+\emph default
+) recibe dos entradas y devuelve una salida con la suma, mientras que un
+
+\series bold
+sumador completo
+\series default
+ (
+\emph on
+full adder
+\emph default
+), que es lo que utilizamos, recibe tres entradas, dos con los sumandos
+ y una de acarreo, y devuelve dos salidas para la suma y el acarreo.
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado23.png
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Para implementar una ALU de 32 bits conectamos 32 ALUs de 1 bit conectando
+ el acarreo de salida de un sumador con el de entrada del siguiente, obteniendo
+ un
+\series bold
+sumador con propagación del acarreo
+\series default
+ (
+\emph on
+ripple carry adder
+\emph default
+).
+ Esto significa que los bits se calculan uno por uno, lo que es ineficiente,
+ por lo que en la práctica se usan
+\series bold
+circuitos con acarreo anticipado
+\series default
+ (
+\emph on
+look-ahead carry
+\emph default
+), que no veremos en este curso.
+\end_layout
+
+\begin_layout Standard
+Restar equivale a sumar el minuendo con el opuesto del sustraendo, que se
+ obtiene a su vez negando cada bit de este y sumando 1 al resultado (o estableci
+endo el acarreo de entrada del sumador menos significativo a 1).
+ Por su parte, podemos implementar la comparación (SLT) restando ambos números
+ y comprobando el bit de signo del resultado.
+ Nos queda por tanto lo siguiente:
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado24.png
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Aquí
+\begin_inset Quotes cld
+\end_inset
+
+Menor
+\begin_inset Quotes crd
+\end_inset
+
+ es cero salvo para el bit menos significativo, que entonces es el resultado
+ de la suma en el bit más significativo, indicado por
+\begin_inset Quotes cld
+\end_inset
+
+Comparación
+\begin_inset Quotes crd
+\end_inset
+
+.
+ Para el desbordamiento, nótese que ocurre si el resultado de la suma es
+ negativo con ambos operandos positivos o positivo con ambos operandos negativos
+ (si se trata de una resta, el signo del sustraendo se obtiene una vez éste
+ ha sido negado), obteniendo el siguiente mapa de Karnaugh:
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="4" columns="6">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<row>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell multicolumn="1" alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+A,B
+\end_layout
+
+\end_inset
+</cell>
+<cell multicolumn="2" alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+00
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+01
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+11
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+10
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell multirow="3" alignment="center" valignment="middle" topline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Res.
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell multirow="4" alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" leftline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+La ALU nos queda de la siguiente forma:
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado25.png
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Tabular
+<lyxtabular version="3" rows="1" columns="1">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top">
+<row>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Graphics
+ filename pegado26.png
+
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\begin_inset Tabular
+<lyxtabular version="3" rows="6" columns="4">
+<features tabularvalignment="middle">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<column alignment="center" valignment="top">
+<row>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+Op.
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Formula $R$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Formula $Op_{1}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" topline="true" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+\begin_inset Formula $Op_{0}$
+\end_inset
+
+
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+AND
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+OR
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+ADD
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+SUB
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+0
+\end_layout
+
+\end_inset
+</cell>
+</row>
+<row>
+<cell alignment="center" valignment="top" bottomline="true" rightline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+SLT
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+<cell alignment="center" valignment="top" bottomline="true" usebox="none">
+\begin_inset Text
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+</cell>
+</row>
+</lyxtabular>
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Registros
+\end_layout
+
+\begin_layout Standard
+Un registro es una concatenación de
+\emph on
+flip-flops
+\emph default
+ que comparten las señales de reloj y de permiso de escritura.
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado27.png
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado28.png
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Un
+\series bold
+banco de registros
+\series default
+ es un conjunto de registros que pueden ser leídos y escritos selectivamente
+ a través de
+\series bold
+puertos de escritura
+\series default
+ y
+\series bold
+puertos de lectura
+\series default
+.
+ Se usan multiplexores y decodificadores para seleccionar los registros.
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado29.png
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Section
+Memoria
+\end_layout
+
+\begin_layout Standard
+Las memorias
+\series bold
+SRAM
+\series default
+ (
+\emph on
+Static Random Access Memory
+\emph default
+) son
+\emph on
+arrays
+\emph default
+ de memoria usadas principalmente en caché por tener un tiempo de acceso
+ muy corto.
+ Llamamos
+\series bold
+altura
+\series default
+ al número de posiciones direccionables y
+\series bold
+anchura
+\series default
+ al número de bits por unidad de memoria.
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado30.png
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Como direccionar una SRAM con un multiplexor sería demasiado costoso (por
+ el tamaño), se usan líneas de salida compartidas (
+\series bold
+líneas de bits
+\series default
+) que permiten que varias fuentes compartan una sola línea de datos, utilizando
+ un
+\series bold
+\emph on
+buffer
+\emph default
+ triestado
+\series default
+.
+ Este tiene dos entradas (
+\emph on
+data
+\emph default
+ y
+\emph on
+enable
+\emph default
+) y una salida (
+\emph on
+out
+\emph default
+), y la salida es igual a
+\emph on
+data
+\emph default
+ si
+\emph on
+enable
+\emph default
+ está activa y en otro caso permanece con alta impedancia permitiendo el
+ uso de la línea de salida a los otros
+\emph on
+buffers
+\emph default
+.
+ Como todavía se requiere un decodificador a la entrada que sería demasiado
+ grande, las memorias se organizan de forma bidimensional con decodificación
+ en dos pasos.
+\end_layout
+
+\begin_layout Standard
+\align center
+\begin_inset Graphics
+ filename pegado31.png
+
+\end_inset
+
+
+\end_layout
+
+\begin_layout Standard
+Las memorias
+\series bold
+DRAM
+\series default
+ (
+\emph on
+Dynamic Random Access Memory
+\emph default
+) almacenan cada bit con un único transistor, con lo que son mucho más baratas
+ y densas.
+ Como la información se almacena en un condensador, este se va descargando,
+ con lo que debe ser refrescada periódicamente, normalmente por un circuito
+ en el propio chip, que lee su contenido y lo vuelve a escribir.
+\end_layout
+
+\end_body
+\end_document