Prototipaje RS232 para PC en VHDL
Prototipaje RS232 para PC en VHDL
computador y perifrico.
El protocolo de comunicacin RS232 establece el formato de la figura XX de transmisin de datos. Est
formado por:
Figura 1
7 u 8 bits de datos.
La construccin que se realiza en este captulo de la transmisin asncrona serie se describe de forma topdown.
Durante la transmisin (recepcin) la duracin de cada bit es de 16 ciclos de reloj base. Por consiguiente, en
la realizacin de los drivers (transmisor y receptor) se tendr que contemplar la sincronizacin de la
transmisin / recepcin de datos con el reloj base.
Aunque computador y perifrico se programen para transmitir datos a una frecuencia determinada, es difcil
asegurar que las frecuencias base de los relojes estn perfectamente sincronizadas. Por ello la emisin y
recepcin de datos se realiza tomando como base una frecuencia 16 veces superior a la frecuencia de
transmisin de datos. Por otra parte, durante la recepcin de datos pueden producirse en la transmisin
glitches que, debido a interferencias, pueden introducir errores de recepcin. Para minimizar este efecto
suelen tomarse distintas muestras de la recepcin del bit, tomando como resultado bueno, el valor que ms se
sucede dentro de la recepcin del bit. Es por ello, que durante la recepcin se deber considerar circuitera
adicional para asegurar un comportamiento ms fiable de la transmisin.
Durante el desarrollo de un sistema digital deben sucederse un conjunto de etapas coherentes que permitan la
implementacin del sistema con el mximo de garantas funcionales. Estas etapas pueden dividirse en:
-
Implementacin hardware.
o
El sistema se fabricar sobre placa de circuito impreso. La placa ser el soporte fsico de
toda la circuitera de soporte en la comunicacin con el PC, regular la alimentacin, alojar
el circuito programable y contendr un conjunto de conectores y dispositivos para expansin.
La frecuencia base de funcionamiento se obtendr de un oscilador a 1.8432MHz.
Protocolo de comunicacin.
o
En nuestro caso se va a utilizar un formato simple de comunicacin asncrona: se elige una comunicacin
full-dplex basada en un bit de start, 8 bits de datos sin paridad, y un bit de stop. Aunque la implementacin
del protocolo en todas sus opciones tan slo exige un registro de control de operacin adicional, para
simplicidad, se ha optado por fijar las caractersticas de transmisin.
En una comunicacin simple mediante protocolo RS232 (sin control de recepcin) tan slo son necesarias
tres lneas de conexin entre el PC y el perifrico: RxD o recepcin, TxD o transmisin, y tierra.
Puerto serie.
Aunque el puerto serie puede tener un tamao de 25 pines, el formato ms utilizado es el de 9 pines. La tabla
del pinout para ambos conectores es:
Pinout 9 pines
Pinout 25 pines
Transmit Data
Seal
TxD
Salida serie
Funcin
Receive Data
RxD
Entrada serie
Request to Send
RTS
Clear to Send
CTS
Mdem
datos
intercambiar
DSR
Signal Ground
GND
Carrier Detection
CD
DTR
20
preparado
par
RI
22
Tabla 1
La conexin Null modem es la que se utiliza en el ejemplo. Es una conexin simple que slo requiere las tres
conexiones mostradas en la figura.
Conexin loopback
La conexin loopback es til cuando se realiza un programa de debugging en el PC. La seal de datos de
salida del PC se conecta a la de entrada. De esta forma, toda seal enviada por el PC es recibida en la lnea
de entrada como si fuera un eco del mdem.
Seal de actividad en la transmisin: trans. Su valor se mantiene a uno lgico mientras se est
transmitiendo.
Seal de actividad en la recepcin: fi. Su valor es uno lgico cuando no se recibe transmisin alguna.
Los bloques de transmisin/recepcin contienen otras seales internas que pueden observarse, si es necesario,
en situaciones de debugging del sistema.
Debido a la simplicidad del driver de comunicacin RS232, y puesto que no aporta ninguna innovacin al
diseo, se ha implementado a nivel esquemtico. El diseo de los mdulos de transmisin y recepcin se
facilita utilizando una descripcin mediante lenguaje de alto nivel. La figura AAA muestra la jerarqua de
componentes utilizada en la implementacin del driver.
Aunque el driver RS232 puede implementarse utilizando nicamente mdulos secuenciales, para mejor
claridad se han diseado los drivers de transmisin y recepcin como mquinas algortmicas compuestas por
una unidad de proceso y una unidad de control. Las unidades de proceso estn formadas por mdulos
secuenciales descritos a nivel comportamental. La unidad de control es la encargada de secuenciar las
operaciones en cada driver. Para cada operacin se especificar el valor de cada seal de control de los
mdulos secunciales que componen la unidad de proceso.
Los mdulos que forman el nivel ms bajo estn descritos a nivel comportamental. Las unidades de control
(maquinas de estado finito) controlan el funcionamiento del respectivo driver actualizando, a cada ciclo, el
registro de control. El ejemplo muestra la potencia de la descripcin VHDL de sistemas digitales complejos
por combinacin de las distintas descripciones (comportamental, funcional y estructurada) que permite el
lenguaje.
Para mejorar la respuesta del sistema se ha establecido que la sincronizacin de la unidad de proceso se
realice durante el flanco de subida del reloj, mientras que la unidad de control se realiza por flanco de bajada.
El conjunto unidad de proceso unidad de control que configura el driver transmisor es autnomo y
responsable de la transmisin serie del perifrico. La descripcin VHDL estructurada del driver transmisor es
la siguiente (los tipos de datos utilizados se encuentran definidos en el fichero tipoRS232.vhd del directorio
de trabajo work):
--Driver transmisor
--Consta de unidad de proceso y unidad de control
Circuito transmisor.
La figura CCC muestra un ejemplo de cmo se debe enviar la trama a travs de la lnea de salida TxD del
driver. En el momento en que se recibe la orden de enviar trama, el driver transmisor empieza a serializar el
dato previamente cargado en el registro de desplazamiento y al que se le ha aadido el bit de start y el bit de
stop. Cada dato se enva cada 16 pulsos de la seal base de reloj.
--
bits4:
--
byte:
--
dato:
Library ieee;
Library work;
Use ieee.std_logic_1164.ALL;
Use ieee.std_logic_unsigned.ALL;
Use work.tipoRS232.ALL;
Entity TxD is
La seal de start indica el inicio de transmisin, cuyo primer paso es la carga en un registro de
desplazamiento de 10 bits, del dato (8 bits) ms los bits de inicio de transmisin y de final. En la figura CCC,
el dato transmitido es el 6D = 01101101, siendo los ltimos bits en transmitirse el bit ms significativo y el
de final de transmisin (que vale 1). El dato transmitido en el ejemplo permite ver adecuadamente los bits de
start y de stop. Durante la transmisin, la seal trans se mantiene a 1.
El driver transmisor (la figura CCC muestra su diagrama de bloques) consta de unidad de proceso y de
unidad de control.
Figura CCC
El conjunto de seales clk, nReset, d[7..0], TxD, que se corresponden con el conjunto de seales de
entrada/salida globales ya comentadas en el apartado anterior. d[7..0] corresponde al byte a
transmitir, mientras que TxD es la seal serie que se transmite.
qStat[5..0] es el conjunto de seales de control que gobiernan el funcionamiento de los mdulos
secuenciales internos de la unidad de proceso. Estas seales son observables a la salida de la unidad
de proceso bajo el nombre de status[5..0].
Tambin son observables las seales salida de los contadores de ciclos por bit y nmero de bits
transmitidos, denominados qc16[3..0] y qc10[3..0], respectivamente.
trans=>trans, status=>qStat_i);
status<=qStat_i;
El conjunto de seales, ya comentadas, nclk (gobierno por flanco de bajada del reloj), nReset, start y
trans.
--Salidas de debugging
qc16<=qc16_i;
qc10<=qc10_i;
end;
Unidad de proceso.
En un driver RS232 de transmisin la unidad de proceso es responsable de la sincronizacin global del
proceso. Con ello, la unidad de proceso contiene:
-
Un contador que lleva la sincronizacin de los bits: cada 16 ciclos debe salir un bit.
Un registro de desplazamiento que, tras cargar el dato a enviar, le acopla los bits de inicio y parada y
serializa la transmisin.
Puesto que la unidad de proceso est formada por componentes secuenciales, la descripcin realizada de la
unidad corresponde a una descripcin estructurada.
--Unidad de proceso
Library ieee;
Library work;
Use ieee.std_logic_1164.ALL;
Use ieee.std_logic_unsigned.ALL;
Use work.tipoRS232.ALL;
Entity U_PTxD is
port(clk, nReset: in std_logic;
Los tres mdulos que conforman la unidad de proceso se especifican a partir de su descripcin de alto nivel.
Su descripcin es simple partiendo de ejemplos realizados en captulos anteriores. Son los mdulos contador
de envo de bit, contador de bits y registro de desplazamiento. La figura muestra como para los contadores se
emplea un mismo diseo (el contador c16).
d: in byte;
qStat: in std_logic_vector(5 downto 0);
qc16, qc10: out bits4;
TxD: out std_logic);
end;
Library ieee;
Library work;
Use ieee.std_logic_1164.ALL;
Use ieee.std_logic_unsigned.ALL;
end component;
Use ieee.std_logic_arith.ALL;
component sr10ser is
Use work.tipoRS232.ALL;
Entity c16 is
port ( ck, nReset, enable, inici: in std_logic;
q: out bits4);
end;
begin
begin
srSerie: sr10ser port map (ck=>clk, nPreset=>nReset, enable=>qStat(4), ld=>qStat(5), d=>d, TxD=>TxD);
begin
--Salidas
qc10<=qc10_i;
qc16<=qc16_i;
end;
La figura vvv muestra la composicin del mdulo transmisor. La descripcin comportamental de cada uno
de los mdulos que componen el driver es simple.
end if;
end process;
process (estat)
begin
q<=conv_std_logic_vector(estat, 4);
end process;
end;
Unidad de control
Figura hhh. Contador de envo de bit.
Contador de bits.
En la implementacin del contador de bits se utiliza el mismo contador diseado para el contador de envo de
bit. La unidad de control se encarga de controlar el conteo de 0 a 9. De esta forma, al llegar el contador de
bits a 10, puesto que se ha enviado el byte mas los bits de start y de stop, la unidad de control da la orden de
parada de transmisin.
Registro de desplazamiento paralelo-serie.
La unidad de control es la encargada de sincronizar todos los eventos de la unidad de proceso. Respecto a las
entradas, la unidad de control es receptiva a la seal de start, que indica inicio de transmisin. En el
momento de llegar el bit de inicio de transmisin, la unidad de control manda la carga del dato a transmitir,
momento a partir del que se entra en la sucesin de estados que llevan a la transmisin del byte. Las dems
entradas que recibe son el estado en el que se encuentran los dos contadores, el de envo de bit (qc16[3..0]) y
el de bits enviados (qc10[3..0]). Para el control del flujo de datos, la unidad de control enva a la unidad de
proceso (recogido como array de status) el conjunto de seales de control que la gobiernan. El diagrama de
flujo de la figura rrr muestra la operatividad de la unidad de proceso.
El registro de desplazamiento paralelo-serie acepta como entrada el byte a transmitir y lo transmite en serie
aadiendo los bits de start y de stop. Aparte, tiene una entrada de preset para inicializacin y una seal de
enable para realizar un desplazamiento a la derecha cada vez que se transmite un bit. El estado de reposo del
registro de desplazamiento es todo unos.
La descripcin comportamental del registro de desplazamiento paralelo-serie es la siguiente.
--Registro de desplazamientocon entrada paralelode 8 bits y salida serie con bits de start y de stop
Library ieee;
Library work;
Use ieee.std_logic_1164.ALL;
Use work.tipoRS232.ALL;
Entity sr10ser is
port ( ck, nPreset, enable, ld: in std_logic;
d: in byte;
TxD: out std_logic);
end;
architecture bhr of sr10ser is
Library ieee;
end;
La unidad de control es fcil implementarla como mquina de estados finitos utilizando VHDL. De acuerdo
con las reglas de diseo de mquinas de estado finito, la descripcin de la unidad de control se ha realizado
en dos procesos, el primero dedicado a la transicin de estados, y el segundo a la actualizacin de las seales
de estatus, como funcin de la transicin de estado producida en la mef.
Library work;
Use ieee.std_logic_1164.All;
Use ieee.std_logic_unsigned.All;
end process;
Use work.tipoRS232.All;
TxD<=estat(0);
Entity u_cTxD is
port (nclk, nReset, start: in std_logic;
qc16, qc10: bits4;
La seal asncrona nReset inicializa la unidad de control y, acto seguido, la unidad queda en espera
de iniciar la transmisin.
Cada vez que el contador c16 llega a 15 se activa el conteo en una unidad del contador c10 y se
enva un bit por la lnea serie de transmisin.
Driver receptor.
La construccin del driver receptor ha seguido pasos similares a los que se han sucedido en la construccin
del driver transmisor. En este caso, pero, el driver se mantiene a la espera de la llegada de un cero a travs de
la lnea serie de recepcin de dato, momento que se utiliza para iniciar el protocolo de recepcin de datos.
El circuito receptor (ver figura mmm), a similitud del circuito emisor, consta de una unidad de proceso que
contiene los mdulos de proceso de la recepcin y de una unidad de control como sincronizadora del driver.
s<=espera;
when espera=>
when load=>
s<=transm;
when transm=>
else s<=transm;
end if;
when bit=>
if qc10="1010" then
De acuerdo con la figura, las seales de entrada/salida del driver receptor son:
s<=stop;
end if;
s<=espera;
Y las salidas de recepcin de datos que es paralelizada dRxD[7..0] y la de fin de recepcin fi.
Las dems salidas corresponden a seales de observacin internas al mdulo de receptor: qc16[3..0]
y qc10[3..0] que corresponden a las salidas de los contadores de recepcin, qsr10[9..0] que es la
salida del registro de desplazamiento en el que se almacena el valor recibido, maj que realiza la
funcin mayora (detallada a continuacin) y status[5..0] que corresponde al array de seales de
control de la unidad de proceso.
else s<=transm;
when stop=>
end case;
end if;
end process;
salidas:process (s)
begin
case s is
when reset=>
status<=rst; trans<='0';
A diferencia de la unidad de transmisin, la unidad de recepcin tiene que inicializarse cuando se reciba el
inicio de transmisin, y debe realizar un tratamiento mnimo del dato recibido en el que se considerar:
when espera=>
status<=spr; trans<='0';
when load=>
status<=ld; trans<='1';
Realizar la adquisicin del dato en medio de los 16 ciclos de reloj de cada bit que se recibe.
when transm=>
status<=trnsm; trans<='1';
Realizar la funcin mayora de tres adquisiciones seguidas en medio de la recepcin de cada bit.
when bit=>
status<=bt; trans<='1';
when stop=>
status<=stp; trans<='0';
Al final de la recepcin de todo el dato, el dato se cargar en un registro de dato recibido si y slo si
se han recibido 10 bits (incluidos los bits de start y de stop) y que el bit de start sea un 0 y el de stop
sea un 1.
end case;
end process;
end;
El funcionamiento de la unidad de control queda claro a partir del diagrama de estados y de la descripcin
VHDL de la unidad:
Unidad de proceso
Es la encargada de realizar las acciones de proceso de la entrada de datos por la lnea serie RxD, lo que
implica:
-
Almacenar el byte transmitido en el registro de desplazamiento, siempre que el bit de start sea 0 y el
de stop sea 1.
r8: reg8 port map (d=>qsr10_i(8 downto 1), ck=>clk, nReset=>nReset, enable=>andSR10, q=>qRxD);
--Salidas
qc10<=qc10_i;
La deteccin del bit se realiza en los ciclos intermedios del conteo de 16 ciclos de reloj base.
Exactamente, se toman tres muestras en los ciclos 5, 6 y 7. El dato a almacenar es la funcin mayora
de los tres muestreos. El dato se transfiere al registro de desplazamiento en el ltimo ciclo del
contador de muestreo.
El proceso se realiza en la unidad de proceso mediante los contadores c16 (cuenteo de las 16 muestras por
bit) y c10 (cuenteo de 10 bits), el registro de desplazamiento de 10 bits (bits de start, stop y byte enviado),
calcular la funcin mayora y guardar el dato recibido en el registro de recepcin.
qc16<=qc16_i;
qsr10<=qsr10_i;
maj<=maj_i;
end;
d: in byte;
Los contadores son las seales de estado que permiten que la unidad de control enve las seales de control
adecuadas a la unidad de proceso.
q: out byte);
end component;
component sr10 is
Use ieee.std_logic_1164.ALL;
Entity sr3 is
begin
end;
count10: c16 port map (ck=>clk, nReset=>nReset, enable=>qStat(1), inici=> qStat(5), q=>qc10_i);
begin
end if;
end if;
end process;
maj<=(s(2) and s(1)) or (s(2) and s(0)) or (s(1) and s(0));
end;
Library ieee;
Library work;
Use ieee.std_logic_1164.ALL;
Use work.tipoRS232.ALL;
Entity reg8 is
port ( ck, nReset, enable: in std_logic;
d: in byte;
q: out byte);
end;
architecture bhr of reg8 is
begin
Library ieee;
Library work;
Use ieee.std_logic_1164.ALL;
Use work.tipoRS232.ALL;
q <= d;
Entity sr10 is
end if;
q: out dato);
end process;
end;
end;
begin
process (ck, nPreset)
begin
if nPreset='0' then estat<= (others=>'1');
elsif ck'event and ck='1' then
if enable= '1' then
Unidad de control.
La clasificacin de contadores puede realizarse por la forma de contar y por el cdigo que utiliza en el conteo.
Por la forma de contar tenemos los contadores ascendente o up, de estado menor a mayor; descendente o
down, de estado mayor a menor; y ascendente/descendente o up/down, donde existe un seal que controla si
se cuenta de menor a mayor o de mayor a menor, respectivamente.
Si se atiende al cdigo de conteo utilizado, se tienen los contadores binarios, BCD (binario decimal, es decir,
del estado 0 al 9), Johnson, Gray, etc.
Centrando la discusin en un contador binario ascendente, el contador suele disponer de las entradas:
Load o carga paralela. Los datos a cargar en el contador proviene de un bus de datos d.
En la descripcin VHDL del contador se utiliza una seal interna, estado, para mejorar la legibilidad del
cdigo. Por otra parte, el uso de esta variable evita tener que considerar a como seal inout.
La figura 5 muestra el circuito correspondiente al contador en un formato RTL.
q o estado actual.
Inicializacin
nreset = 0
No operacin
Enable = Load = 0
Carga
Load = 1 y ck
Conteo
Enable = 1 y ck
q = (q + 1)mod 2n
generic(N: integer:=4);
port(ck, enable, nreset, load:in std_logic;
d: in std_logic_vector(N-1 downto 0);
tc:out std_logic;
q: out std_logic_vector(N-1 downto 0));
end counter ;
--EXEMPLE COMPTADOR
begin
Library ieee;
process(ck, nreset)
use ieee.std_logic_1164.ALL;
begin
use ieee.std_logic_unsigned.ALL;
if nreset = '0' then estado <= (others => '0');
else
Entity counter is
generic(N: integer:=4);
end if;
tc:out std_logic;
end if;
end if;
end if;
begin
end if;
end process;
q <= estado;
end bhr;
end if;
end process;
end divisor;
sortida: process(estat)
begin
begin
if (estat=2**N-1) then tc<='1';
process(ck, nreset)
else tc<='0';
begin
end if;
q<=estat;
end process;
end bhr;
end if;
A diferencia del funcionamiento del contador asncrono (comparar los resultados de simulacin de las
figuras 6 y 7), en caso de resolverse una inicializacin durante el funcionamiento normal del circuito, el
contador sncrono salta al estado inicial en el momento en que se produce el flanco de reloj, por lo que
siempre los estados mantienen el mismo periodo.
end if;
if (q = m) then div <= '1';
else div <= '0';
end if;
end process;
end bhr;
La sntesis realizada contra el circuito de Altera EPM7032, da como resultado el circuito de la figura 7.
El divisor de frecuencia.
El divisor de frecuencia no es ms que un contador que cuenta un nmero de estados determinado, no
necesariamente igual a 2^n. En particular, un contador de n flip-flops puede considerarse como un divisor de
frecuencia de 2^n estados.
La figura 8 muestra el resultado de la simulacin a nivel temporal. Se comprueba fcilmente que el contador,
en cuanto llega al estado 10 reinicializa el circuito, realizando de esta forma un conteo de m = 11 estados.
Un divisor de m estados (m distinto a una potencia de 2) se construye a partir de un contador de 2^n estados,
con 2^n > m, en el que al llegar al estado m-1 se vuelve al estado inicial.
Existen dos formas clsicas de realizar el divisor de frecuencias. La primera es volviendo al estado inicial
por medio de la seal asncrona reset. El segundo mtodo utiliza la seal sncrona de carga. Siempre que sea
posible, se recomienda utilizar el segundo mtodo en tanto que garantiza un circuito ms inmune a glitches.
El cdigo VHDL siguiente corresponde a un divisor de frecuencia por m=11. Para ello se ha tenido que
utilizar un N=4. Para simplificar el ejemplo se ha considerado el mnimo nmero necesario de seales. Como
entradas slo son necesarias las seales de reloj y el reset asncrono. Como salidas se da el estado y la salida
div que corresponde a la salida terminal cuando se llega al estado deseado. Esta misma seal se utiliza para
devolver al divisor al estado inicial.
Library ieee;
Como circuito de control central se utiliza el circuito programable de Altera EPM7128S. El core del
circuito programable contiene el IP RS232 diseado.
use ieee.std_logic_1164.ALL;
use ieee.std_logic_unsigned.ALL;
Entity divisor is
generic(N: integer:=4;
M: integer:=10);
port(
Las entradas/salidas no utilizadas del circuito programable son accesibles al usuario mediante una
serie de puertos para desarrollo de aplicaciones.
Finalmente la placa contiene dos pulsadores, uno de reset general del sistema y otro para envo
hardware de dato hacia el computador, lo que permite comprobar de forma simple el correcto
funcionamiento del sistema.
Identificador
Pines
Alimentacin
Tierra comn
Reset general
Reloj base
VDD (*)
GND (*)
nReset (in)
ckin (in)
Programacin
CPLD
Conexin Boundary-Scan
TDI (in)
TMS (in)
TCK (in)
TDO (out)
14
23
62
71
Comunicacin
RS232
Recepcin serie
Salida paralela (de recepcin)
Transmisin serie
Entrada paralela (a transmitir)
RxD (in)
qRxD[7..0] (out) (*)-leds
qTxD (out)
TxD[7..0] (in) (*)
5
52, 51, 50, 49, 48, 46, 45 ,44
4
41, 40, 39, 37, 36, 35, 34, 33
Control/status
de la
transmisin
nSend (in)
nTransp (in) (switch)
transm (out) (*)
Recepcio (out) (*)
6
8
12
11
Frecuencia de
trabajo
Divisor de frecuencia
Frecuencia de transmisin
div[7..0]
ck0 (out) (*)
Puertos de
expansin
Pin libre
Switch externo sin conexin
Puerto A
pl
nc
A[0..13]
Puerto C
B[0..12]
9
15
70,69,68,67,65,64,63,61,
60,58,57,56,55,54
16,17,18,20,21,22,24,25,
27,28,29,30,31
OE2n
OE1n
Generales
Otras seales
2
84
(*) Adems de los puertos estas seales contienen pin de conexin externo
La figura ddd muestra el nivel jerrquico superior del circuito programable que contiene el driver transmisor
(de acuerdo con la figura 4). El circuito programable, permite introducir, adems del propio driver
emisor/transmisor RS232, lgica adicional de control de operacin. En concreto, se ha programado tambin:
-
Un multiplexor controlado por la seal nTransp que permite reenviar el dato recibido (a travs de la
lnea RxD) por la lnea TxD hacia el host.
El divisor de frecuencias. La entrada de reloj maestra es la seal de reloj suministrada por el circuito
oscilador. La frecuencia de trabajo se obtiene a travs de un divisor de frecuencias controlado por la
seal div[7..0]. Las frecuencias (admitidas) de trabajo del driver se obtienen mediante divisin por:
110
300
2.4576MHz
1.8432MHz
8392
6144
600
1200
2400
9600
14400
19200
28800
38400
56000
128000
256000
4196
2048
1024
256
128
64
3072
1536
768
192
128
96
64
48
El dispositivo se integra en la placa de desarrollo de acuerdo con la figura vvv. La figura esquematiza los
distintos componentes de que consta la placa.
La figura ccc muestra la fotografa de la placa de desarrollo final. El apndice A detalla el conexionado de
los distintos elementos de que consta la placa, los conectores de expansin, y la lista de componentes que
componen la placa de desarrollo. El apndice B contiene el programa Visual Basic que contiene el driver de
comunicacin con la placa de desarrollo.
APNDICE A
HARDWARE DE LA PLACA DE DESARROLLO.
Composicin de la placa.
La placa de desarrollo se compone de los siguientes elementos:
Oscilador a 1.8432MHz.
Divisor de tensin. Mediante el interruptor Microswitch 1 se controla el divisor de tensin. Para una
transmisin a 9600 baudios debe realizarse una divisin por 192. Para frecuencias ms bajas de
transmisin debe incorporarse un divisor interno adicional.
El sistema dispone del conector para programacin mediante Boundary-Scan del EPM7128S.
El interruptor noop no se utiliza. Su uso est a disposicin del usuario. Est conectado a una entrada
del circuito programable.
Esquemtico.
La figura A.1 muestra el circuito esquemtico de la placa de desarrollo.
Lista de componentes.
El sistema est compuesto por los siguientes componentes:
Componente
Cdigo
Altera EPM7128SLC84
Conector programacin
Resistencias pull-up
2 pin setup Altera
U1
C1
RP3
L1
1
1
1
1
Driver RS232
Driver MAX232ACPE
Capacidad 100nF
Conector DB9
U2
C2, C3, C4, C5, C7
J1
1
5
1
Alimentacin/regulacin
Regulador LM7805
Interruptor
Conector alimentacin
Capacidad 4.7uF tantalio
Capacidad 22uF
Capacidad 100nF
Conector test 2-pin
U3
U4
J2
C6
C19
C18
C13
1
1
1
1
1
1
1
Oscilador
Oscilador 1.8432MHz
Microswitch divisor frec.
Resistencias pull-up 8
U4
I4
RP2
1
1
1
Circuitera configuracin
Bi-interruptor
Pulsador
Capacidad 100nF
Resistencias 10Ko
Diodos flyback
Resistencias 1Ko
Diodos led rojo
Diodo led verde
Diodo led naranja
Conector status 4 pin+vdd+gnd
B1
B2, B3
C8, C9
R1, R2, R3, R4
D1, D6
R5, R6, R7
D5
D4
D3
C1
1
2
2
4
2
3
1
1
1
1
Circuitera comunicacin
Microswitch 8 interrupt.
Resistencias 8 pull-up
Conector test 8 pins
Barra 8 leds
Circuito 8 resistencias
I1
RP1
C10, C11
I2
I3
1
1
2
1
1
Conectores expansin
C12
C13
1
1
Figura A.1
# componentes
Circuito programable
APNDICE B
SOFTWARE DEL SISTEMA DE DESARROLLO
Driver de comunicacin