Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pract 3 PDF
Pract 3 PDF
Universidad de Sevilla
Asignatura: Laboratorio de Microelectrónica Digital
Práctica 3
LABORATORIO DE
MICROELECTRÓNICA
Jonathan N. Tombs
Miguel A. Aguirre
Javier Nápoles
Práctica 3. Receptor de una línea serie
1
Departamento de Ingeniería Electrónica. Universidad de Sevilla
Asignatura: Laboratorio de Microelectrónica Digital
Práctica 3. Comunicación
serie con la tarjeta S3
Este práctica es la tercera de un grupo de tres dedicada a entrenar al
alumno con el entorno de trabajo Xilinx ISE 9.2 y la tarjeta Digilent S3.
Se diseñarán un sistema de comunicaciones entre un ordenador personal
y las tarjeta, basadas en la utilización de un enlace serie RS232. Los
objetivos de la práctica son los siguientes:
1. Perfeccionar el entrenamiento con el entorno Xilinx ISE 9.2.
2. Faciltar un mecanismo de comunicaciones entre un PC y la tarjeta
S3 que sirva para transferencia de información entre ambos sistemas.
Práctica 3. Receptor de una línea serie
2
Departamento de Ingeniería Electrónica. Universidad de Sevilla
Asignatura: Laboratorio de Microelectrónica Digital
1. Objetivo propuesto
• Se trata de diseñar un enlace serie RS232 con una velocidad de transferencia y
definición del enlace de comunicaciones fijo.
• Proveer de un mecanismo de transferencia de información entre la tarjeta y el
usuario para posibles aplicaciones en los proyectos.
2. Enlace de Serie
Un enlace serie es una comunicación asíncrona a una velocidad determinada. La
comunicación se realiza diseñando una UART para la transmisión y para la recepción
de mensajes. Las condiciones de diseño serán las siguientes:
• 8 bits
• Paridad par
• 1 start y 2 de stop
• 9600 baudios
• Half‐duplex. No se permite envío y recepción simultáneos.
Desde el PC utilizaremos la utilidad de Windows “hiperterminal”, que nos facilitará la
transferencia a través del COM1. Una línea serie tiene dos líneas RX y TX, RX recibe la
información y TX la envía.
Driver Displays
Registro Byte
Registro Byte
DataRec0
DataRec1
RECEPTOR
RX
DataOK
StTrans
DataRec1
TX TRANSMISOR
Por otra parte, representaremos la información recibida en los displays de la placa. En
el ejercicio de hoy almacenaremos cuatro valores en sendos registros de 8 bits, que
forman una pequeña FIFO de dos bytes. A su vez estos registros se representan en el
Práctica 3. Receptor de una línea serie
3
Departamento de Ingeniería Electrónica. Universidad de Sevilla
Asignatura: Laboratorio de Microelectrónica Digital
display y luego se envían al PC por la línea de transmisión. En la consola hiperterminal
se visualizarán los valores de la información retrasados un envío.
Para realizar la práctica se utilizará el puerto RS232 de la placa, conectado al PC
mediante un cable serie. La norma RS232 obliga a transmitir mediante tensiones de 0 a
‐15V. Se precisa, pues, de un chip que adapte dichas tensiones. En la figura se
representa el esquema eléctrico de dicho puerto implementado en la placa S3.
3. Realización de la práctica
Por razones didácticas seguiremos la evolución de la práctica de menor a mayor
complejidad. Además se proporciona la parte del diseño relacionada con los drivers de
los display, que pueden ser los mismos que se utilizaron en la práctica 1. Se comenzará
realizando un transmisor que envíe un valor fijo al PC.
3.1 TRANSMISOR
El transmisor es un circuito bastante sencillo, en el que la información transmitida por
la línea TX tiene una configuración fija. En este caso se trata de una carga en paralelo y
una salida en serie, para enviar 8 bits de información y a los cuales que hay que añadir
el bit de start y bit proveniente del generador de paridad. La línea de transmisión está
en estado ‘1’ en reposo. La transmisión se realizará a la velocidad de 9600 baudios.
Práctica 3. Receptor de una línea serie
4
Departamento de Ingeniería Electrónica. Universidad de Sevilla
Asignatura: Laboratorio de Microelectrónica Digital
Utilizaremos los siguientes elementos para realizar el tranmisor:
• Contador de bits
• Contados de baudios
• Máquina de estados que controla la transmisión
• Generador de paridad
• Multiplexor de selector de bit.
En esta práctica es muy aconsejable utilizar un contador genérico en el que se adapte
su extensión y valor de saturación a cada una de las aplicaciones, con señal de
habilitación (enable) y señal de reset síncrono.
La línea serie se comporta según la figura adjunta:
Muestreo
9600 b.p.s.
B0 es el bit menos significativo del Byte a transmitir, y el bit de paridad representa un
valor que hace que el número de bits a 1 del byte, junto con el propio bit de paridad,
sea par. Los bits de stop representan un tiempo de al menos dos bytes en los que la
línea TX está en reposo.
La figura presenta un esquema de una posible solución al circuito.
StSend
Maq Est Fin
Transmit Transm
resets
resets
Contador de Baudios Contador de Bits
(Mod 5208) S9600 (Mod 11)
Selector
0 0
Transmit
DataPar 1-8 TX
GenParidad 9
1 10
Práctica 3. Receptor de una línea serie
5
Departamento de Ingeniería Electrónica. Universidad de Sevilla
Asignatura: Laboratorio de Microelectrónica Digital
3.1.1 Máquina de estados
La máquina de estados de transmisión controla la transmisión, siguiendo el circuito del
esquema anterior es:
StSend=0
Reposo
Transmite=0
Fin=1 StSend=1
Fin=0
Transmision
Transmite=1
Donde StSend es un pulso de inicio de transmisión, Fin es un pulso de fin de
transmisión dado por el contador de bits. Transmite tiene la misión de habilitar todo el
tiempo del proceso durante el cual se transmite.
La señal Transmite activará el contador de baudios de transmisión y el de bits, es decir,
esta señal invertida mantiene a cero estos contadores cuando no hay transmisión.
3.1.2. Contador de Bits de Transmisión
Este contador debe contar al menos 11 bits, donde el bit 0 es el de start, que está a ‘0’,
los bits 1 a 8 son la información transmitida, el bit 9 es el de paridad y el bit 10 debe
estar a ‘1’. Este contador cambia cada 1/9600 segundos.
Para esta parte de la práctica se procederá a fijar un valor al dato de entrada. Se
propone que para este dato se utilice el carácter hexadecimal 0x45.
3.2 RECEPTOR
En la figura 1 se muestra el esquema general del receptor. Podemos distinguir los
siguientes bloques a diseñar en VHDL:
• Desmultiplicador para ajustar la frecuencia de recepción
• Registro de recepción, conversor de serie a paralelo
• Generador de paridad
• Máquina de estados de recepción
En la figura se muestra un esquema de la arquitectura del receptor basado en los
bloques anteriormente mencionados.
Práctica 3. Receptor de una línea serie
6
Departamento de Ingeniería Electrónica. Universidad de Sevilla
Asignatura: Laboratorio de Microelectrónica Digital
RX
Resets
Contador de Bits
SmplBit (Mod 10)
Registro Desplazamiento
prt b7 b0 st
DataRec (1 a 8) ByteOki
ByteOk
ByteOkp
Gen Paridad
ByteOkp
El receptor ha de muestrear la información a mitad de bit, para asegurar que la
recepción sea correcta. Por ello utilizaremos un contador que desmultiplica a doble
velocidad, y muestreará la señal cada dos pulsos, tal y como se muestra en la figura.
Muestreo
9600 b.p.s.
La velocidad de bits se ha de construir a partir de una desmultiplicación del reloj de
50MHz. Se construye un contador desmultiplicador de 50Mhz a 19200 (2x9600) ciclos
por segundo:
50000000 / 19200=2604
Este contador se utilizará para muestrear cada bit. Se realizará de la siguiente manera,
mediante una máquina de estados:
• Se recibe el bit de Start, en el que se pone la línea RX a cero.
• El contador se pone a cero y utilizaremos una señal de para muestrear cada dos
pulsos de saturación.
• Se han de contar 9 bits (8 + paridad)
• El dato válido se genera a partir de la valoración de la paridad.
La necesidad de un contador de velocidad doble se justifica para garantizar que el
muestreo se realizará a mitad del tiempo de un bit de la información recibida, tal y
como se muestra en la figura.
3.2.1 Diseño de la máquina de estados de recepción
Práctica 3. Receptor de una línea serie
7
Departamento de Ingeniería Electrónica. Universidad de Sevilla
Asignatura: Laboratorio de Microelectrónica Digital
Esta máquina de estados controla el muestreo de señales activadas por el contador de
baudios. Se activa a partir del bit de start por RX. En reposo los contadores no se
mueven. Una vez que se activa el contador de baudios, se atiende a su bit de
saturación. Cada dos bits de saturación, se muestrea la señal de RX a través de SmplBit.
El mecanismo se detiene cuando el número de bits muestreado es igual al valor de
saturación del contador de bits ‘SatCtBits’.
3.2.2. Registro de desplazamiento
La información se guarda en un registro de desplazamiento que cuando se habilita, se ,
transfiere la información al registro adyacente, y si no está habilitado, se retiene la
información.
3.3. VERIFICACIÓN
Para realizar la verficación de la información enviada se propone realizar dos acciones:
1. Representar en el display de la placa la información de los bytes recibidos. LA
representación en el display se facilita en un módulo VHDL ya realizado y
disponible en la web de descargas.
2. Reenvío al PC de la información de los bytes, mediante el transmisor. Los
valores enviados aparecerían en la consola de la herramienta ‘hiperterminal’.
3.3.1 Hiperterminal
Práctica 3. Receptor de una línea serie
8
Departamento de Ingeniería Electrónica. Universidad de Sevilla
Asignatura: Laboratorio de Microelectrónica Digital
Es una aplicación de Windows que permite realizar operaciones de comunicación por
diferentes canales, y en particular por el puerto serie, identificaci por COM1:. Se
encuentra en Inicio‐>Programas‐>Accesorios‐>Comunicaciones‐>Hyperterminal
Con el programa desconectado (icono del teléfono descolgado), Archivo‐>Propiedades
Debe aparecer conectar usando COM1. Aquí presionar el botón ∙”Configurar”. Aquí
debe aparecer la configuración de la velocidad del puerto serie:
Práctica 3. Receptor de una línea serie
9
Departamento de Ingeniería Electrónica. Universidad de Sevilla
Asignatura: Laboratorio de Microelectrónica Digital
La figura muestra la configuración del puerto serie para realizar esta práctica. Una vez
configurado la información que se escriba desde teclado en la consola del
hyperterminal se transfiere automáticamente al puerto serie, y la información recibida
será escrita en la consola. Los caracteres escritos no aparecen en la configuración por
defecto de la consola.
4. Desarrollo de la Práctica
Como se ha comentado comenzaremos por el transmisor. Realizaremos una primera
versión que enviará al PC un valor fijo.
4.1 Contador
CONT_BAUDIOS y CONT_BITS
Descripción Contador síncrono con habilitación y valor de saturación. Se llamará a
esta instancia en cuatro ocasiones, para dos temporizar los baudios y
dos para contar bits.
Entidad entity contador is
Generic (Nbit: INTEGER := 8;
ValSat: INTEGER := 100);
Port ( clk : in STD_LOGIC;
reset : in STD_LOGIC;--reset asíncrono
enable : in STD_LOGIC;
resets : in STD_LOGIC;--reset síncrono
Sat: out STD_LOGIC;
Q : out STD_LOGIC_VECTOR (Nbit-1 downto 0));
end contador;
Descripción de los puertos
clk Reloj
reset Reset asíncrono activo a nivel alto
enable Señal de habilitación activa a nivel alto. Si enable=’1’ el contador
avanzará uno en la cuenta en el flanco positivo de reloj.
resets Reset síncrono activo a nivel alto. Si resets=’1’ el contador pasará a
cero en el siguiente flanco positivo de reloj.
Sat Pulso de salida que aparece cuando el contador alcanza ValSat.
Práctica 3. Receptor de una línea serie
10
Departamento de Ingeniería Electrónica. Universidad de Sevilla
Asignatura: Laboratorio de Microelectrónica Digital
Q Salida de Nbit igual a la valor de la cuenta.
4.2 Paridad
GEN_PAR
Descripción Circuito totalmente combinacional para calcular el bit de paridad del
byte.
Entidad entity paridad is
Port ( data : in STD_LOGIC_VECTOR (7 downto 0);
parity: out STD_LOGIC);
end paridad;
Descripción de los puertos
dato Byte para calcular la paridad
Paridad Valor de la paridad
Práctica 3. Receptor de una línea serie
11
Departamento de Ingeniería Electrónica. Universidad de Sevilla
Asignatura: Laboratorio de Microelectrónica Digital
Descripción de los puertos
clk Reloj de sistema de 50MHz
rst Reset asíncrono activo a nivel alto
RX Línea de recepción
satCtBits Señal indicadora del final del contador de bits
S19200 Saturación del contador de baudios
clrCtBits Reset síncrono de los contadores de baudios y de bits
SmplBit Pulso de muestreo de un bit. Se habilita el contador de bits y el
registro de desplazamiento. Debe durar un periodo de reloj.
ByteOk Se alcanza el final de la cuenta de byte y se debe verificar la paridad.
SmplBit Muestreo de un bit
Práctica 3. Receptor de una línea serie
12
Departamento de Ingeniería Electrónica. Universidad de Sevilla
Asignatura: Laboratorio de Microelectrónica Digital
Descripción Presenta la información en el display de 7 segmentos. Se trata de la
práctica 1 adaptada a este problema. Se entrega como parte del
enunciado.
Entidad entity PrDisplay is
Port ( clk : in STD_LOGIC;
reset : in STD_LOGIC;
data0: in STD_LOGIC_VECTOR (7 downto 0);
data1: in STD_LOGIC_VECTOR (7 downto 0);
siete_seg: out STD_LOGIC_VECTOR (6 downto 0);
select: out STD_LOGIC_VECTOR (3 downto 0));
end PrDisplay;
Descripción de los puertos
clk Reloj de sistema
reset Reset asíncrono activo a nivel alto
Data0 Valor del registro 0 a representar
Data1 Valor del registro 0 a representar
select Selector del display
DataPar Valor del display de siete segmentos
Práctica 3. Receptor de una línea serie
13