3. Desarrollo del Sistema de Localizaci´ on Geogr´ afica
3.2. Control del Modulo RGM-3000
3.2.1.
Interfaz F´ısica.
Como se menciono en el cap´ıtulo 1 y se observa en la figura 1.1, el sistema requiere de un medio para obtener coordenadas de localizaci´on geogr´aficas y este medio es el m´odulo GPS RGM-3000. Se describi´o en la secci´on 2.1.5 la estructura f´ısica y disposici´on de los pines del conector que usa el m´odulo RGM-3000 (ver Tabla 2.3). .
Se expuso que este m´odulo GPS, necesita de 3.3V para funcionar. La principal fuente de energ´ıa, en este proyecto, se proporciona por medio de la tarjeta SP3E y es a trav´es de ´esta que se alimentar´a al m´odulo RGM-3000.
Figura 3.5: Gr´afico de Carga Contra Corriente.
Por otra parte la informaci´on GPS se env´ıa por una l´ınea serial (TXA, ver Tabla 2.3) la cual se debe conectar hacia el FPGA. La informaci´on se transmite a trav´es de un est´andar RS-232, por lo que se utiliza un conector DB9 hembra para realizar el empalme del m´odulo RGM-3000 con el que se tiene en la tarjeta SP3E. Estas conexiones f´ısicas se observan en el diagrama de la figura 3.6.
La l´ınea TXA se conecta directamente a trav´es de un conector DB9 hembra al pin corres- pondiente del conector DB9 macho de la tarjeta SP3E. Se mencion´o en la secci´on 2.2.3.1 que la tarjeta tiene incluido un circuito integrado que adecua los niveles de voltaje de acuerdo al est´andar RS232. Por ello no es necesaria otra interfaz mas que la conexi´on f´ısica entre el m´odulo RGM-3000 y la tarjeta Spartan 3E.
3.2.2.
Software de control en VHDL.
El principal objetivo recibir las cadenas GPS que se env´ıa de forma serial por una interfaz con el m´odulo RGM-3000. De la secci´on 2.1.5 se sabe que la transmisi´on de datos seriales en un est´andar RS-232 con las siguientes caracter´ısticas:
Baud Rate: 48000 bps. Bits de datos : 8.
Figura 3.6: Conexiones necesarias para el funcionamiento del m´odulo RGM-3000. Bit de paridad: Ninguno.
Bit de paro: 1.
Por tanto para controlar el m´odulo RGM-3000 debe adecuarse a las caracter´ısticas de transmisi´on y as´ı recibir los datos GPS.
El c´odigo VHDL de control generado usa una se˜nal de reloj de 50 MHz para sincronizar la recepci´on y la conversi´on de los datos seriales en datos paralelos. Mediante este reloj se implementa un contador que ayuda a determinar el momento en que cada bit de la comu- nicaci´on serial cambia. El mismo contador determina el punto medio de la duraci´on del bit transmitido para as´ı tomar su valor y almacenarlo mediante un registro de corrimiento. El c´odigo de este contador y el momento del cambio de bit y punto medio, se ve a continuaci´on:
process (clk, reset) is begin
if reset = ’1’ then
baud_counter <= (others=> ’0’); elsif rising_edge(clk) then
if reset_counters = ’1’ then baud_counter <= (others=> ’0’);
elsif baud_counter = conv_std_logic_vector(10416,14) then baud _counter <= (others =>’0’);
else
end if; end if; end process; process (clk,reset)is begin if reset = ’1’ then baud_clock_rising_edge <= ’0’; elsif rising_edge(clk)then
if baud_counter = conv_std_logic_vector(10416,14) then baud_clock_rising_edge <= ’1’; elsebaud_clock_rising_edge baud_clock_rising_edge <= ’0’; end if; end if; end process; process (clk, reset) is begin if reset = ’1’ then baud_clock_falling_edge <= ’0’; elsif rising_edge(clk) then
if baud_counter = conv_std_logic_vector(5208,14) then baud_clock_falling_edge <= ’1’; else baud_clock_falling_edge <= ’0’; end if; end if; end process;
Mientras las se˜nalreset counterssea ’1’ el contador no iniciara. Esta se˜nal se deshabilita cuando se detecta el bit de inicio, de la cadena trasmitida por el m´odulo RGM-3000, por la entrada de datos seriales serial data in; de la siguiente manera:
process (clk, reset) is begin
if (reset = ’1’) then receiving_data <= ’0’; elsif rising_edge(clk) then
if(all_bits_received = ’1’) then receiving_data <= ’0’;
elsif (serial_data_in = ’0’) then receiving_data <= ’1’; end if; end if; end process; . . .
reset_counters <= not receiving_data;
La se˜nal all bits received indica cuando se han recibido la totalidad de bits de la cadena que transmite el RGM-3000, que en este caso son 10 bits; tomando en cuenta el bit de inicio , 8 bits de datos y un bit de paro. Este proceso se realiza con la se˜nal que indica el final
del lapso en que cada bit es trasmitido (baud clock rising edge), con esta se˜nal se hace un conteo de los bits que se reciben y al llegar el contador a 10 se considera que ha terminado la cadena que se espera recibir.
A trav´es de un registro de corrimiento se almacenan los bits hasta que se completa la transmisi´on de 8 bits de datos. Cuando esto sucede se activa la se˜nal received data valid
que indica que se tiene el contenido v´alido de una cadena transmitida, es decir, un valor ASCII de 8. Este valor de 8 bits se obtiene por una de las salidas del m´odulo VHDL creado (received data). Este proceso se realiza de la siguiente forma:
process (clk, reset) is begin
if (reset = ’1’) then
data_in_shift_reg<= (others =>’0’); elsif rising_edge (clk) then
if (baud_clock_falling_edge = ’1’) then
data_in_shift_reg <= serial_data_in & data_in_shift_reg(9 downto 1); end if;
end if; end process;
process (clk, reset, all_bits_received) is begin
if (reset = ’1’) then
data_reg <= (others =>’0’);
elsif rising_edge (all_bits_received) then
data_reg <= data_in_shift_reg(8 downto 1); else data_reg <= data_reg; end if; end process; . . . received_data <= data_reg;
El m´odulo en c´odigo VHDL elaborado, realiza la tarea de convertir los datos seriales en paralelos que representan valores ASCII individuales de informaci´on GPS, sin embargo son cadenas completas de datos las que se busca. El proceso para obtener dicha cadena se trata en la secci´on 3.5.1.
3.2.3.
Resultados del Control Implementado.
Mediante software y una PC port´atil se obtuvieron las cadenas de informaci´on del m´odulo RGM-3000. Se recolectaron 15 ejemplares de la cadena de informaci´on geogr´afica GPRMC que proporciona el modulo RGM-3000, mismas que se observan en la Tabla 2.1.4, con las que
se realiz´o un promedio de para determinar un valor geogr´afico medio con el cual comparar la ubicaci´on con otro dispositivo.
Tabla 3.5: Coordenadas Geogr´aficas del RGM-3000 en la cadena GPRMC Latitud Longitud 19°36’47.16”N 99°02’34.49”W 19°36’47.17”N 99°02’34.85”W 19°36’47.18”N 99°02’34.85”W 19°36’47.19”N 99°02’34.81”W 19°36’47.20”N 99°02’34.76”W 19°36’47.21”N 99°02’34.76”W 19°36’47.22”N 99°02’34.74”W 19°36’47.24”N 99°02’34.71”W 19°36’47.25”N 99°02’34.69”W 19°36’47.26”N 99°02’34.68”W 19°36’47.28”N 99°02’34.68”W 19°36’47.28”N 99°02’34.68”W 19°36’47.29”N 99°02’34.67”W 19°36’47.29”N 99°02’34.65”W 19°36’47.30”N 99°02’34.63”W Promedio 19°36’47.4723”N 99°02’34.763”W
Con el promedio de las coordenadas geogr´aficas se utiliz´o un dispositivo m´ovil comercial para comparar los resultados de ubicaci´on entre ambos dispositivos. Los resultados compara- tivos se observan en la figura 3.7 y se calcula un error promedio de la distancia de ubicaci´on de 6m.; teniendo la mayor exactitud en la ubicaci´on el dispositivo m´ovil comercial. El marcador rojo en la figura 3.7 se˜nala la ubicaci´on de las coordenadas obtenidas mediante el modulo RGM-3000; mientras que el marcador azul proveer la ubicaci´on actual del dispositivo m´ovil utilizado.
Figura 3.7: Imagen Comparativa de Ubicaci´on.
En la figura 3.8 se observa la conexi´on entre el m´odulo RGM-3000 mediante conectores DB9 con la tarjeta Spartan 3E. Esta conexi´on permite la transmisi´on serial de los datos del m´odulo GPS al FPGA.
Mediante el c´odigo VHDL generado se obtiene una de las cadenas de informaci´on de localizaci´on geogr´afica. Vali´endose de uno de los componentes de la tarjeta SP3E, la LCD de 2x26 caracteres, se muestra en esta pantalla el contenido de la cadena GPS, como se ve en la figura 3.8.
En la misma figura 3.8 se observa la cadena de informaci´on RCM (ver secci´on 2.1.4) tal cual el m´odulo RGM-3000 la env´ıa. Con el contenido de la cadena desplegada, se demuestra el funcionamiento tanto de la interfaz f´ısica realizada como del control mediante software, que en conjunto recolectan la informaci´on GPS satisfactoriamente.