Está en la página 1de 5

TRANSMISOR SERIAL Universidad Politécnica de Pachuca

Por: Fabián Alfonso Díaz López Maestría en mecatrónica


Septiembre – Diciembre 2010

Este diseño consiste en un transmisor que recibe un dato en paralelo y lo transmite de manera serial mandando
primero un bit con valor de cero indicando el inicio de la transmisión, posteriormente se envía el dato, seguido del bit
de paridad, el cual tiene el valor de uno si la suma de los bits con valor de uno del dato es par, de lo contrario el valor
del bit de paridad es cero, finalmente se envía otro bit con valor de cero, el cual indica el fin de la transmisión.
La verificación de paridad se logra mediante el uso de la función Xor.

Caja negra Entidad

D0 - D7 entity Transmisor is
Port (d7 : in STD_LOGIC;
d6 : in STD_LOGIC;
d5 : in STD_LOGIC;
d4 : in STD_LOGIC;
d3 : in STD_LOGIC;
Rst d2 : in STD_LOGIC;
Dout d1 : in STD_LOGIC;
Clk d0 : in STD_LOGIC;
dout : out STD_LOGIC;
rst : in STD_LOGIC;
Load clk : in STD_LOGIC;
load : in STD_LOGIC);
end Transmisor;
Arquitectura

architecture Behavioral of Transmisor is


signal reg: std_logic_vector(10 downto 0);
signal din: std_logic_vector(7 downto 0);
signal paridad: std_logic;
signal stx: std_logic;
signal etx: std_logic;

begin
process(clk,rst,din)
begin
if rst='1' then
reg<=(others=>'0');
elsif rising_edge(clk) then
if load='1' then
if (d7 xor d6 xor d5 xor d4 xor d3 xor d2 xor d1 xor d0)='0' then

din<=d7&d6&d5&d4&d3&d2&d1&d0;
reg<='0'&d7&d6&d5&d4&d3&d2&d1&d0&'1'&'0';
stx<='0';
paridad<='1';
etx<='0';
reg<=stx&din&paridad&etx;
else

din<=d7&d6&d5&d4&d3&d2&d1&d0;
stx<='0';
paridad<='0';
etx<='0';
reg<=stx&din&paridad&etx;
end if;
else
reg<=reg(9 downto 0)&'0';
end if;
end if;
end process;
dout<=reg(10);
end Behavioral;

Simulación

Para demostrar la correcta simulación, transmitiremos el dato 11000011, el bit de paridad es uno ya que el número de
unos es 4=par, entonces la salida seria:

0 1 1 0 0 0 0 1 1 1 0

Inicia transmisión Dato Bit de Paridad Fin de la transmisión

En esta figura podemos observar la entrada correspondiente a los pines D0:D7, cuando load se pone a 1, se carga el
dato, posteriormente load esta en cero y comienza la transmisión, podemos observar como en cada flanco de subida del
reloj, vamos recibiendo los bits ya mencionados en el recuadro rojo.
Veámoslo paso a paso:

En esta figura observamos que al estar load en 1, la entrada se guarda en nuestra señal auxiliar Reg, ocupando los bits:
Reg9-Reg2, además se comprueba la paridad (que está en 1 ya que la suma de los unos es par) y se guarda en Reg1,
Reg10 y Reg11 son los bits de inicio y fin de la transmisión respectivamente.
Observamos en el recuadro rojo, como a la salida se envía el bit almacenado en reg10 que indica el inicio de la
transmisión.
Ahora veamos cómo se van transmitiendo los bits posteriores mediante la concatenación de Reg con un ‘0’, lo cual
provoca que los datos se vallan recorriendo al bit más significativo, que es el que se transmite en cada flanco de subida
del reloj.

Sale el
primer bit

Se recorren
Y así sucesivamente:

Sale el
siguiente bit

Se recorren

Hasta llegar a la transmisión del bit de paridad:

El bit de
paridad

Podemos ver como los espacios fueron ocupados por ceros,


producto de la concatenación
Y por último el fin de la transmisión:

El bit de
paridad

Conclusiones:

La paridad es la más básica de las formas de detección de errores, implementar este método, es el primer paso para más
adelante utilizar formas más complejas de prevenir datos erróneos.

Se pudo comprobar mediante la simulación que el diseño es funcional, y será de gran ayuda para futuros proyectos, ya
que la transmisión de datos es fundamental para desarrollar diversas aplicaciones.