Está en la página 1de 10

Informe del Proyecto de Sistemas Digitales Modulo RS-232. Carlos A. Angulo J. 16 de Abril de 2012.

UNIVERSIDAD INDUSTRIAL DE SANTANDER
ESCUELA
DE

1

INGENIERÍAS ELÉCTRICA, ELECTRÓNICA

Y DE

TELECOMUNICACIONES

Perfecta Combinación entre Energía e Intelecto

Diseño de un UART (Transmisor y Receptor Asíncrono Universal) basado en el estándar RS-232
Gonzalo Alberto Franklin González 2071915, Juan Manuel Parra Saavedra 2071945. Grupo J1
Resumen— El siguiente documento es un informe detallado acerca de los aspectos más relevantes del proyecto del laboratorio de la asignatura de sistemas digitales el cual se dividió en diferentes módulos de los cuales se escogió el que se ocupa de la transmisión de datos mediante el protocolo RS-232. El objetivo principal de este documento es darle a entender al lector el funcionamiento del esta parte del proyecto mediante una breve especificación, una descripción, diagramas, y una presentación de la lógica estructurada que se utilizó para su implementación. Palabras Clave— Transmisión, datos, frecuencia, contador, registro, paridad, estados, protocolo, reloj, baudios, reset, ordenador, bits.

Para diseñar el circuito de es necesario tener en cuenta que el proceso de transmisión de datos es asíncrono debido a que la tarjeta con la cual se implementara el circuito trabaja con valores de frecuencia distintos los cuales se deben transmitir los datos según el estándar. Entre los valores en que trabaja la tarjeta se escogió 10MHz para diseñar el circuito y entre la gama de valores a los cuales se deben transmitir los datos se escogió una velocidad de transmisión de 9600 baudios.

ESPECIFICACIÓN DEL CIRCUITO

L

a implementación de este módulo surge a raíz de la necesidad de un circuito que pueda transmitir los datos leídos de la memoria SPI hacia un ordenador en el cual se puedan visualizar más fácilmente mediante alguna interfaz gráfica . Para ello fue necesario diseñar e implementar solo la parte que se encarga de la transmisión de datos propuesto por el estándar RS-232. El circuito a diseñar es un transmisor de datos paralelo-serie que consta de dos líneas de transmisión principales una que va desde el modulo hacia el ordenador y otra línea que se conecta a tierra. En cuanto al hardware que se va a utilizar para la implementación del circuito el estándar propone el uso de un conector DB-9 que se muestra en la Figura 1. Además de una etapa de adecuación de señales que en conjunto hacen necesario el modelo del PMOD mostrado en la Figura 2. En el proyecto la fabricación del hardware estuvo a cargo de integrantes del grupo de investigación ERA de la escuela de ingenierías eléctrica, electrónica y telecomunicaciones.

Figura 1. Conector DB-9 usado para la implementación del circuito.

Figura 2. P-MOD El objetivo del circuito es poder transmitir los 8 bits que se reciben de los módulos de lectura y escritura de la memoria SPI mediante un formato de datos que sugiere el estándar en el

 Registro: Carga los datos en paralelo y lo saca en serie. B. El circuito general de transmisión tiene las siguientes entradas y salidas que se muestran en la Figura 4 y a continuación se explican las funciones de cada una en el sistema. C. El funcionamiento de los bloques de la Figura 5 se ha visto en las prácticas anteriores:  Div_Frec: Contador encargado de generar la señal de transmisión. En la Figura 3 se muestra la trama de datos especificada. Dato enviar: Grupo de 8 bits que conforman el dato completo que se quiere transmitir. Esquema general de entradas y salidas del circuito de transmisión. Angulo J. Inicio: Señal del sistema que le indica al módulo que salga de su estado de reposo para posteriormente empezar a enviar datos esta señal contiene un bit. Carlos A. Trama de datos de transmisión. CLK: Señal de reloj de la tarjeta de 10 MHz. Reset: Señal de reset asíncrono. E. Figura 5. F.  Contador_1: Cuenta los bits de la información a transmitir. G. ELECTRÓNICA Y DE TELECOMUNICACIONES Perfecta Combinación entre Energía e Intelecto que la trama de datos comienza por un bit ‘0’ de arranque siguen los 8 bits de datos y luego un bit de paridad para detección de errores y un último bit ‘1’ de fin que indica que se han transmitido todos los datos. Ocupado: Indica al sistema que el modulo está transmitiendo y por ende el circuito no podrá recibir ninguna nueva orden. D.  Contador_2: Es un contador que cuenta los bits de paridad . DIAGRAMA DE BLOQUES Figura 3. Permite reiniciar todo el sistema en cualquier instante. A. Diagrama de Bloques Figura 4.  FMS: Controla los módulos restantes. Control lectura: Es una señal de 2 bits que viene de los módulos de memoria y la cual indica las características de salida del dato de la memoria.Informe del Proyecto de Sistemas Digitales Modulo RS-232. UNIVERSIDAD INDUSTRIAL DE SANTANDER ESCUELA DE 2 INGENIERÍAS ELÉCTRICA. 16 de Abril de 2012. Bit_Tx: Trama de datos de 11 bits que son enviados al ordenador por medio del P-MOD.

ELECTRÓNICA Y DE TELECOMUNICACIONES Perfecta Combinación entre Energía e Intelecto DIAGRAMA ESQUEMATICO  CONTADOR DE LOS 8 BITS  COMPONENTES DEL MODULO  CONTADOR BIT PARIDAD  MAQUINA DE ESTADOS  DIVISOR DE FRECUENCIA . 16 de Abril de 2012. UNIVERSIDAD INDUSTRIAL DE SANTANDER ESCUELA DE 3 INGENIERÍAS ELÉCTRICA. Angulo J. Carlos A.Informe del Proyecto de Sistemas Digitales Modulo RS-232.

CONT_2 : out STD_LOGIC. CONT_0 : out STD_LOGIC. senal_carga : std_logic. ENABLE : in std_logic. BAUDIO : in STD_LOGIC. dato_enviar : in STD_LOGIC_VECTOR (7 downto 0). ---.ALL. . COMPONENT Divisor generic (num_bits : natural := 11. --library UNISIM. modulo : natural := 1041).Uncomment the following library declaration if instantiating ---. DESPLAZA : out STD_LOGIC. entity Modulo_completo_RS_232 is Port ( INICIO : in STD_LOGIC. END COMPONENT. senal_cont_0 : std_logic. senal_cont_3 : std_logic. SR : in std_logic. DATO : in std_logic_vector(7 downto 0). RST : in STD_LOGIC.STD_LOGIC_1164. control_lectura : in STD_LOGIC_VECTOR (1 downto 0). TARGETA : in STD_LOGIC.all. senal_ocupado : std_logic. architecture Behavioral of Modulo_completo_RS_232 is COMPONENT Maquina_de_Estados PORT( CLK : in STD_LOGIC. Carlos A.Informe del Proyecto de Sistemas Digitales Modulo RS-232.any Xilinx primitives in this code. PORT ( CLK : in STD_LOGIC. Angulo J. ELECTRÓNICA Y DE TELECOMUNICACIONES Perfecta Combinación entre Energía e Intelecto  REGISTRO bit_Tx downto 0)). COMPONENT Registro_Universal generic (num_bits : natural :=11).STD_LOGIC_ARITH. CONT_1 : out STD_LOGIC. RST : in std_logic. CUENTA : out STD_LOGIC_VECTOR (num_bits-1 downto 0)). CARGA : out STD_LOGIC. PAR : in STD_LOGIC. CLK : in STD_LOGIC. INICIO : in STD_LOGIC. OCHO_BITS : in STD_LOGIC. UNIVERSIDAD INDUSTRIAL DE SANTANDER ESCUELA DE 4 INGENIERÍAS ELÉCTRICA.ALL. RST : in STD_LOGIC. CLR : in STD_LOGIC. RST : in STD_LOGIC. senal_desplaza: std_logic.ALL. signal signal signal signal signal signal signal DESCRIPCIÓN DE DISPOSITIVO DE LÓGICA ESTRUCTURADA MODULO_COMPLETO ---------------------------------------------------------------------------library IEEE. bit_Tx : out std_logic_vector(num_bits-1 downto 0)). CONT_3 : out STD_LOGIC). 16 de Abril de 2012. : out STD_LOGIC_VECTOR (10 end Modulo_completo_RS_232. senal_cont_1 : std_logic. END COMPONENT. BAUDIO : out STD_LOGIC.VComponents. use IEEE. PORT( CLK : in std_logic. use IEEE. OCUPADO : out STD_LOGIC. --use UNISIM. S : in std_logic_vector(1 downto 0).STD_LOGIC_UNSIGNED. END COMPONENT. senal_cont_2 : std_logic. use IEEE. OCUPADO : out STD_LOGIC.

signal senal_baudio_2 : std_logic. CUENTA : out STD_LOGIC_VECTOR (num_bits-1 downto 0)). modulo => 1041) PORT MAP( CLK => CLK. TARGETA => control_lectura(0). bit_Tx => bit_Tx). CUENTA => open). modulo => 1041) PORT MAP( CLK => CLK. CONT_3 => senal_cont_3). modulo : natural := 1041). CUENTA : out STD_LOGIC_VECTOR (num_bits-1 downto 0)). BAUDIO_2 : in STD_LOGIC. S(0) => senal_desplaza. S(1) => senal_carga. SR => '0'. PAR => senal_par. COMPONENT Contador_1 generic (num_bits : natural := 11. UNIVERSIDAD INDUSTRIAL DE SANTANDER ESCUELA DE 5 INGENIERÍAS ELÉCTRICA. modulo : natural := 1041). ENABLE => '1'. COMPONENT Contador_2 generic (num_bits : natural := 11. CONT_1 => senal_cont_1. BAUDIO_1 : in STD_LOGIC. RST => RST. RST : in STD_LOGIC. BAUDIO_1 => senal_baudio_1. CLR_1 : in STD_LOGIC. END COMPONENT. 16 de Abril de 2012. PORT( CLK : in STD_LOGIC. RST => RST. END COMPONENT. OCUPADO => OCUPADO. CLR_2 : in STD_LOGIC. CLR_2 => senal_cont_3. CONTADOR1: Contador_1 generic map(num_bits => 11. modulo => 1041) PORT MAP( CLK => CLK. CLR_1 => senal_cont_1. . RST => RST. CUENTA => open). DESPLAZA => senal_desplaza. CONT_0 => senal_cont_0. DATO => dato_enviar. ---------------------------------------------------------------------------senal_baudio_1 <= senal_baudio and senal_cont_0. ---------------------------------------------------------------------------- DIVISOR_1: Divisor generic map( num_bits => 11. CARGA => senal_carga. CONT_2 => senal_cont_2.Informe del Proyecto de Sistemas Digitales Modulo RS-232. RST => RST. PAR : out STD_LOGIC. PORT ( CLK : in STD_LOGIC. signal senal_baudio_1 : std_logic. begin ---------------------------------------------------------------------------FSM: Maquina_de_Estados PORT MAP( CLK => CLK. BAUDIO => senal_baudio. CONTADOR2: Contador_2 generic map( num_bits => 11. OCHO_BITS : out STD_LOGIC. OCHO_BITS => senal_ocho_bits. ELECTRÓNICA Y DE TELECOMUNICACIONES Perfecta Combinación entre Energía e Intelecto signal senal_baudio : std_logic. CLR => control_lectura(1). RST => RST. INICIO => INICIO. Angulo J. ---------------------------------------------------------------------------REGISTRO: Registro_Universal generic map (num_bits => 11) PORT MAP( CLK => CLK. BAUDIO => senal_baudio. RST : in STD_LOGIC. signal senal_par : std_logic. Carlos A. signal senal_ocho_bits : std_logic. OCHO_BITS => senal_ocho_bits. ---------------------------------------------------------------------------senal_baudio_2 <= senal_baudio and senal_cont_2.

modulo : natural := 1041). end if. use IEEE.ALL. BAUDIO <= compara. clk) begin if rst = '1' then q <= (others => '0').VComponents. use IEEE. use IEEE.ALL. RST : in STD_LOGIC.STD_LOGIC_ARITH. CUENTA => open). REGISTRO: process (rst. SUMADOR: q_mas1 <= q+1. end Contador_1. else q <= q. --use UNISIM. TARGETA : in STD_LOGIC. signal compara : STD_LOGIC.all. UNIVERSIDAD INDUSTRIAL DE SANTANDER ESCUELA DE 6 INGENIERÍAS ELÉCTRICA. CUENTA : out STD_LOGIC_VECTOR (num_bits-1 downto 0)).STD_LOGIC_ARITH. BAUDIO : out STD_LOGIC. .STD_LOGIC_UNSIGNED. end if. end process. Port ( CLK : in STD_LOGIC. ELECTRÓNICA Y DE TELECOMUNICACIONES Perfecta Combinación entre Energía e Intelecto BAUDIO_2 => senal_baudio_2.STD_LOGIC_1164. --library UNISIM.Uncomment the following library declaration if instantiating ---. SALIDAS: CUENTA <= q.ALL. CLR_1 : in STD_LOGIC. MUX_QNEXT: q_next <= (others => '0') when clr = '1' else (others => '0') when compara = '1' else q_mas1. ---. 16 de Abril de 2012. MODULO : natural := 1041). signal q : STD_LOGIC_VECTOR(num_bits-1 downto 0) := (others => '0'). elsif rising_edge(clk) then if targeta = '1' then q <= q_next. entity Contador_1 is generic ( NUM_BITS : natural := 11. CONTADOR 1 library IEEE. BAUDIO_1 : in STD_LOGIC. end Behavioral.any Xilinx primitives in this code.STD_LOGIC_UNSIGNED. CLR : in STD_LOGIC. architecture Behavioral of Contador_1 is constant limite : natural := modulo-1. architecture Behavioral of Divisor is constant limite : natural := modulo-1. end Divisor. begin COMPARADOR: compara <= '1' when q = limite else '0'. ---.all. RST : in STD_LOGIC.STD_LOGIC_1164. use IEEE. end Behavioral. Angulo J. Port ( CLK : in STD_LOGIC. use IEEE.VComponents. PAR => senal_par. CUENTA : out STD_LOGIC_VECTOR (num_bits-1 downto 0)).ALL. Carlos A. DIVISOR library IEEE. --use UNISIM. OCHO_BITS : out STD_LOGIC.Uncomment the following library declaration if instantiating ---.Informe del Proyecto de Sistemas Digitales Modulo RS-232.any Xilinx primitives in this code.ALL. use IEEE. q_next : STD_LOGIC_VECTOR(num_bits-1 downto 0). entity Divisor is generic ( num_bits : natural := 11.ALL. --library UNISIM. signal q_mas1.

Angulo J.Uncomment the following library declaration if instantiating ---. SUMADOR: q_mas1 <= q+1. signal q_mas1. use IEEE.STD_LOGIC_ARITH.VComponents. signal q : STD_LOGIC_VECTOR(num_bits-1 downto 0) := (others => '0'). UNIVERSIDAD INDUSTRIAL DE SANTANDER ESCUELA DE 7 INGENIERÍAS ELÉCTRICA. end if. CONTADOR 2 ---------------------------------------------------------------------------library IEEE.STD_LOGIC_UNSIGNED. MUX_QNEXT: q_next <= (others => '0') when clr_1 = '1' else (others => '0') when compara = '1' else q_mas1. elsif rising_edge(clk) then if baudio_2 = '1' then q <= q_next. end Contador_2.ALL. end process. architecture Behavioral of Contador_2 is constant limite : natural := modulo-1. else q <= q. else q <= q. clk) begin if rst = '1' then q <= (others => '0'). SALIDAS: cuenta <= q. --library UNISIM. end if. ocho_bits <= compara. REGISTRO: process (rst.any Xilinx primitives in this code. . CLR_2 : in STD_LOGIC.all. CUENTA : out STD_LOGIC_VECTOR (num_bits-1 downto 0)).ALL. clk) begin if rst = '1' then q <= (others => '0'). signal q_mas1. end process. Carlos A. q_next : STD_LOGIC_VECTOR(num_bits-1 downto 0). RST : in STD_LOGIC. ---. SUMADOR: q_mas1 <= q+1. Port ( CLK : in STD_LOGIC. use IEEE. end if. MODULO : natural := 1041).ALL. q_next : STD_LOGIC_VECTOR(num_bits-1 downto 0). REGISTRO: process (rst. BAUDIO_2 : in STD_LOGIC. begin COMPARADOR: compara <= '1' when q = limite else '0'.Informe del Proyecto de Sistemas Digitales Modulo RS-232. signal q : STD_LOGIC_VECTOR(num_bits-1 downto 0) := (others => '0'). end Behavioral. 16 de Abril de 2012. signal compara : STD_LOGIC. ELECTRÓNICA Y DE TELECOMUNICACIONES Perfecta Combinación entre Energía e Intelecto signal compara : STD_LOGIC.STD_LOGIC_1164. --use UNISIM. MUX_QNEXT: q_next <= (others => '0') when clr_2 = '1' else (others => '0') when compara = '1' else q_mas1. elsif rising_edge(clk) then if baudio_1 = '1' then q <= q_next. PAR : out STD_LOGIC. use IEEE. end if. begin COMPARADOR: compara <= '1' when q = limite else '0'. entity Contador_2 is generic ( NUM_BITS : natural := 11.

STD_LOGIC_UNSIGNED. use IEEE. when paridad => if par = '1' then e_futuro <= fin. -. end if.No cambia cuenta carga si constant fin : STD_LOGIC_VECTOR (n_bits downto 1):="11"&"11"&"10"&'1'. else e_futuro <= datos. when fin => if baudio = '1' then e_futuro <= reposo. else e_futuro <= reposo. attribute FSM_EXTRACT : string. inicio.logica del estado siguiente process(clk.conexion con el contador 1 OCHO_BITS : in STD_LOGIC. --library UNISIM. CONT_2 : out STD_LOGIC. -.any Xilinx primitives in this code. ocho_bits. par <= compara. . --. end Maquina_de_Estados. rst) begin if rst = '1' then e_presente <= reposo.cuenta No cambia desplaza si constant paridad : STD_LOGIC_VECTOR (n_bits downto 1):="01"&"10"&"10"&'1'.Informe del Proyecto de Sistemas Digitales Modulo RS-232. --numero de bits de estado contador 1 contador 2 registro ocupado constant reposo : STD_LOGIC_VECTOR (n_bits downto 1):="00"&"00"&"11"&'0'. Angulo J. par) begin case e_presente is when reposo => if inicio = '1' then e_futuro <= arranque. baudio.Uncomment the following library declaration if instantiating ---.ALL.STD_LOGIC_ARITH. attribute FSM_EXTRACT of Maquina_de_Estados: entity is "N0". else e_futuro <= arranque. end if.ALL. else e_futuro <= paridad. INICIO : in STD_LOGIC. -. entity Maquina_de_Estados is Port ( CLK : in STD_LOGIC. MAQUINA DE ESTADOS library IEEE.VComponents. CONT_1 : out STD_LOGIC. Carlos A.No cambia No cambia Borra no constant arranque : STD_LOGIC_VECTOR (n_bits downto 1):="01"&"01"&"10"&'1'. --use UNISIM. when others => e_futuro <= reposo. CONT_3 : out STD_LOGIC). begin ----------------------------------------------------------------------------. ELECTRÓNICA Y DE TELECOMUNICACIONES Perfecta Combinación entre Energía e Intelecto SALIDAS: cuenta <= q. --.conexion con el registro CARGA : out STD_LOGIC. use IEEE. end case. UNIVERSIDAD INDUSTRIAL DE SANTANDER ESCUELA DE 8 INGENIERÍAS ELÉCTRICA. end Behavioral. else e_futuro <= fin. when datos => if ocho_bits = '1' then e_futuro <= paridad. --. CONT_0 : out STD_LOGIC.logica del estado siguiente process(e_presente. -. ----------------------------------------------------------------------------. OCUPADO : out STD_LOGIC. 16 de Abril de 2012. RST : in STD_LOGIC. end if. architecture Behavioral of Maquina_de_Estados is constant n_bits: natural := 2+2+2+1.conexion con el contador 2 PAR : in STD_LOGIC.Borra Borra carga si signal e_presente : STD_LOGIC_VECTOR (n_bits downto 1):= reposo.No cambia No cambia carga si constant datos : STD_LOGIC_VECTOR (n_bits downto 1):="10"&"01"&"01"&'1'. BAUDIO : in STD_LOGIC.ALL. -. end process. signal e_futuro : STD_LOGIC_VECTOR (n_bits downto 1).STD_LOGIC_1164. ---. use IEEE. DESPLAZA : out STD_LOGIC. when arranque => if baudio = '1' then e_futuro <= datos. end if. end if.all.

STD_LOGIC_1164. bit_Tx : out std_logic_vector(num_bits-1 downto 0)). y estará un sólo ciclo de reloj a uno el resto del tiempo a cero. ----------------------------------------------------------------------------. A continuación se especifica cada uno de los componentes del circuito y su funcionamiento. RST : in std_logic. end Behavioral. UNIVERSIDAD INDUSTRIAL DE SANTANDER ESCUELA DE 9 INGENIERÍAS ELÉCTRICA. end if. bit_Tx <= reg.STD_LOGIC_ARITH. elsif rising_edge (CLK) then if ENABLE = '0' then reg <= reg. y así no tener que esperar los largos tiempos de simulación. DIVISOR DE FRECUENCIA: Fue necesario la implementación de este circuito debido a que las frecuencias de recepción y transmisión de datos son diferentes es por esto que este circuito se encarga de generar una señal de salida con una frecuencia de 9600 baudios (bits/segundo) con la cual se transmitirán los datos al ordenador.Informe del Proyecto de Sistemas Digitales Modulo RS-232.167 μs. use IEEE. 2 contadores. Figura 6. begin process (CLK. ENABLE : in std_logic. REGISTRO library IEEE. end if. DATO : in std_logic_vector(7 downto 0). when "01" => reg <= SR & reg(num_bits-1 downto 0). Esquema señales de la tarjeta y de transmisión de datos. end process. que es la velocidad de transmisión escogida. Este reloj tendrá por tanto un periodo de 104.Asignacion de las salidas cont_0 <= e_presente(7). Carlos A. cont_3 <= e_presente(4). SR : in std_logic. A continuación se muestran los esquemas de las señales. Para hacer esta división de frecuencia se usaron señales genéricas con el fin de que no se tuviera que rediseñar el circuito si se decidiera trabajar con otros valores frecuencia lo cual ahorraría tiempo y recursos.ALL. else case S is when "11" => reg <= (others => '0'). el diseño genérico también nos puede hacer ahorrar tiempo de simulación. una máquina de estados y un registro paralelo serie. carga <= e_presente(3). DESCRIPCIÓN DEL CIRCUITO El circuito de transmisión de datos consta un divisor de frecuencia. 16 de Abril de 2012.STD_LOGIC_UNSIGNED. S : in std_logic_vector(1 downto 0). desplaza <= e_presente(2). when others => reg <= reg. architecture Behavioral of Registro_Universal is signal reg : std_logic_vector (num_bits-1 downto 0):=(others => '0'). ya que para simular se pueden poner frecuencias mayores. cont_2 <= e_presente(5). En nuestro caso. end process. end if.ALL. ELECTRÓNICA Y DE TELECOMUNICACIONES Perfecta Combinación entre Energía e Intelecto elsif rising_edge (clk) then if baudio = '1' then e_presente <= e_futuro. use IEEE. end Behavioral. Angulo J. use IEEE. .ALL. entity Registro_Universal is generic (num_bits : natural :=11). No obstante se escogió trabajar la tarjeta con una frecuencia de 10MHz. cont_1 <= e_presente(6). A partir del reloj de la tarjeta de 10MHz (CLK) queremos proporcionar una señal con frecuencia de 9600Hz (Baudio).RST) begin if RST = '1' then reg <= (others => '0'). end if. ocupado <= e_presente(1). when "10" => reg <= '1'&DATO&S(1)&'0'. end case. port( CLK : in std_logic. end Registro_Universal.

MAQUINA DE ESTADOS: Es el circuito de control encargado de dirigir al resto de bloques. Versión: 20/11/2007. • Datos: este estado se encarga de enviar los 8 bits de dato. ELECTRÓNICA Y DE TELECOMUNICACIONES Perfecta Combinación entre Energía e Intelecto Para diseñar el divisor de frecuencia se divide la frecuencia de entrada entre la frecuencia de salida (10MHz/9. y pasaremos a enviar el bit de paridad.032%. Se saldrá de este estado al recibir la señal Baudio que nos dirá que debemos de pasar a enviar los bits de dato. Diseño de una Figura 7. Carlos A. se llevó la cuenta del número de bits que se enviaron. REFERENCIAS [1] Dto. al llegar una señal (par) pasaríamos al estado fin. al llegar un Baudio pasaríamos al estado inicial. U. Aunque en este ejemplo no es tan importante contar un ciclo más o menos. el sistema está como su nombre lo dice en reposo esperando la orden de transmitir. Diagrama de tiempos del divisor de frecuencia. En este momento también se sincronizara el contador del divisor de frecuencia.Informe del Proyecto de Sistemas Digitales Modulo RS-232. Haciéndolo de manera inversa. Angulo J. Como log2 (1041) = 10.escet.2) y el número resultante nos dará el contador que se necesitará para obtener la frecuencia de salida. y al cambiar de estado se habilita el contador. Por tanto. el estado siguiente será Datos. necesitaríamos 11 bits para el contador. ya que 100ns es despreciable frente a 104. • Paridad: este estado envía el bit de paridad.02. Una alternativa a esta opción sería poner un estado para cada bit. La secuencia de estados es la siguiente: • Reposo: este estado es el inicial.es/assets/files/docencia/DCSE/d cse_prac_1a7_v21_UART.167μs. para ello hubo dos opciones.pdf . Con un error del 0. Figura 8. cuando la señal Inicio='1' se pasará a enviar el bit de inicio. mediante un contador. [2]http://laimbio08. cuando se recibe la indicación de transmitir (Inicio ='1') el circuito empieza una secuencia de envío. Esquema máquina de estados. UNIVERSIDAD INDUSTRIAL DE SANTANDER ESCUELA DE 10 INGENIERÍAS ELÉCTRICA. UART. 16 de Abril de 2012.6kHz = 1041. • Fin: este estado envía el bit de fin. usamos un estado para los 8 bits y.67→1041. En vez de crear un contador con rango de 0 a 1041 que no tiene ninguna correspondencia física. Cuando se envían los 8 bits (ocho_bits) cambiaremos de estado.69Hz. • Arranque: en este estado se está enviando el bit de inicio. Si el circuito no se encuentra enviando ningún dato. En este momento se dará la orden de cargar el dato (cargar) en el registro de desplazamiento. 1042 cuentas de 100ns (CLK) nos da un periodo de 104. Sin embargo.17μs. de Tecnología Electrónica.urjc. Rey Juan Carlos. o inicializar el contador o hacer que en el estado inicial no contara. que es una buena aproximación de la frecuencia que queremos: queremos 9600Hz y obtenemos 9599. en general hay que ser cuidadosos para hacer un contador que cuente el número de ciclos que queremos. NOTA: Se usaron 2 compuertas and para sincronizar las entradas de los contadores con la frecuencia generada por el divisor de frecuencia. esta secuencia de envío determinará la máquina de estados. Lo haríamos con el rango que delimite el ancho del bus.