Está en la página 1de 7

TRANSMISOR SERIAL

Julin Camilo Garca P Jess Sarmiento

FUNDACION UNIVERSITARIA LOS LIBERTADORES INGENIERIA ELECTRONICA TELECOMUNICACIONES DIOGITALES I SEPTIEMBRE DE 2011

OBJETIVO. El objetivo de nuestro proyecto es ejecutar la transmisin de 4 datos de 8 bits cada uno, de manera serial bit a bit.

PROCEDIMIENTO.

3 4

1 6 2
1

1. Reloj divisor de frecuencia: Este bloque esta generado a partir de un cdigo desarrollado con el objeto de transformar la seal proveniente del reloj de la FPGA la cual llamamos clk50, a una seal de frecuencia de 9600 Khz. Llamada clk9600
clock9600 clk50 clk9600

inst4

entity clock9600 is port(clk50 : in std_logic; clk9600 : out std_logic); end clock9600; architecture Behavioral of clock9600 is signal count : integer range 0 to 5210; signal clkpulso : std_logic; begin CLK: process (clk50) begin

if clk50'event and clk50='1' then count <= count +1; if count <= 5208 then if count <= 2604 then clkpulso <= '1'; else clkpulso <= '0'; end if; end if; clk9600<= clkpulso; count <= 0; end if; end process CLK; end architecture;

2. Compuerta OR. Esta compuerta simplemente nos ayuda a controlar que ante la pulsacin de cualquiera de los datos se active el proceso de transmisin.

OR4

Pulse_1

PIN_R4 PIN_T3 PIN_T4 PIN_T5

Pulse_2

Pulse_3
Pulse_4

INPUT VCC INPUT VCC INPUT VCC INPUT VCC

inst2

3. Bloque de asignacin fijo de datos. En este bloque simplemente asignamos el valor de los datos de manera predeterminada, cada dato es un vector de 8 posiciones y en este cdigo se realiza la asignacin.
ASIGNA A[7..0] B[7..0] C[7..0] D[7..0]

inst5

entity ASIGNA is port (A : OUT std_logic_vector(7 downto 0); B : OUT std_logic_vector(7 downto 0); C : OUT std_logic_vector(7 downto 0); D : OUT std_logic_vector(7 downto 0)); END ASIGNA; architecture PROCESO OF ASIGNA is begin A <= "00000001"; B <= "00000011"; C <= "00000001"; D <= "00000001"; END;

4. Multiplexor de 1 a 4. Este bloque tienen cuatro entradas conectadas y un selector compuesto por 4 bits el cual controla que dato debe transmitirse, dependiendo del pulsador que se active el pulsador 1 habilita que se cargue a la salida X el dato almacenada en A, el 2 la B y as sucesivamente.
muxdato4 A[7..0] B[7..0] C[7..0] D[7..0] S0 S1 S2 S3 X[7..0]

inst6

entity muxdato4 is port (A : in std_logic_vector(7 downto 0); B : in std_logic_vector(7 downto 0); C : in std_logic_vector(7 downto 0); D : in std_logic_vector(7 downto 0); S0 : in std_logic; S1 : in std_logic; S2 : in std_logic; S3 : in std_logic; X : out std_logic_vector(7 downto 0) ); end muxdato4; architecture proceso of muxdato4 is signal s : std_logic_vector (3 downto 0); begin s <= s3 & s2 & s1 & s0; process(A,B,C,D,S) begin if (S=1) then X(0)<=A(0); X(1)<=A(1); X(2)<=A(2); X(3)<=A(3); X(4)<=A(4); X(5)<=A(5); X(6)<=A(6); X(7)<=A(7); elsif (S=2) then X(0)<=B(0); X(1)<=B(1); X(2)<=B(2); X(3)<=B(3); X(4)<=B(4); X(5)<=B(5); X(6)<=B(6); X(7)<=B(7); elsif (S=3) then

X(0)<=C(0); X(1)<=C(1); X(2)<=C(2); X(3)<=C(3); X(4)<=C(4); X(5)<=C(5); X(6)<=C(6); X(7)<=C(7); elsif (S=4) then X(0)<=D(0); X(1)<=D(1); X(2)<=D(2); X(3)<=D(3); X(4)<=D(4); X(5)<=D(5); X(6)<=D(6); X(7)<=D(7); end if; end process; end proceso;

5. Maquina de estados. Este bloque se genero a partir del cdigo resultante del diagrama de la maquina de estados diseada por nosotros en el que se parametriza el modo de transmisin para cada uno de los estados
maqtrans reset clock x a b c d z inst1

A parte de la entrada de reloj a la cual se conecta el reloj de 9600, tenemos la entrada X la cual al recibir un flanco de subida se activa e inicia el proceso de transmisin, dando a la salida 5 bits de los cuales 4 componen el numero de estado en que esta la maquina y la z que es un habilitador mientras este en 0 una vez se llega al ultimo estado se coloca en uno y finaliza la transmisin. (ver cdigo en el archivo VHDL de la maquina) 6. Flip Hlop tipo D Este flip flop es el encargado de de activar el funcionamiento de la maquina de estados, una vez recibe el flanco de subida proveniente de la OR conectada a los cuatro pulsadores, y el clr permanezca en 0 la maquina de estados se ejecutara automticamente. Tan pronto la maquina de estados llega a su ultimo estado el clr recibe un 1 y termina la transmisin. 7. Multiplexor de 10 a 1 Finalmente el multiplexor de 10 a uno es el encargado de entregar la salida final de transmisin TX, tiene cuatro entradas que conforman un numero de 1 a 10 que permite

seleccionar el dato a transmitir, esta predeterminado para que cuando entre el 0 proveniente del estado 0 de la maquina este siempre en uno en modo espera sin transmitir y tan pronto reciba un 1 de la maquina indicando que empez la transmisin transmita 0 y para los siguientes estados de transmisin de cada uno de los 8 bits transmita el dato cargado en la salida X del multiplexor de 1 a 4 descrito en el punto 4.
mux10to1 X[7..0] S0 S1 S2 S3 inst7 TX

entity mux10to1 is port (X : in std_logic_vector(7 downto 0); S0 : in std_logic; S1 : in std_logic; S2 : in std_logic; S3 : in std_logic; TX: out std_logic ); end mux10to1; architecture proceso of mux10to1 is signal s : std_logic_vector (3 downto 0); begin s <= s3 & s2 & s1 & s0; process(X,S) begin if (S=0) then TX <= '1'; elsif (S=1) then TX <= '0'; elsif (S=2) then TX <= X(0); elsif (S=3) then TX <= X(1); elsif (S=4) then TX <= X(2); elsif (S=5) then TX <= X(3); elsif (S=6) then TX <= X(4); elsif (S=7) then TX <= X(5); elsif (S=8) then TX <= X(6); elsif (S=9) then TX <= X(7); elsif (S=10) then TX <= '1'; end if; end process; end proceso;

CONCLUSIONES. Finalmente y al realizar el ensayo de funcionamiento le transmisor no funciono, sin embargo nos encontramos en la verificacin del posible error, tal vez en la asignacin de los vectores o alguna salida de la maquina de estados que esta interrumpiendo el proceso.

También podría gustarte