Cómo hacer un programa de simulación para comprobar si la comunicación serie es exitosa
Necesito un tema. Con esta tecnología, la recopilación en tiempo real y el procesamiento preciso de señales se pueden dividir en dos etapas en el tiempo, lo que favorece la obtención de resultados de procesamiento más satisfactorios. Al aplicar métodos de recepción y almacenamiento de datos en equipos receptores de transmisión inalámbrica de datos, además de cumplir con los requisitos de velocidad de transmisión de datos y control de errores, también es necesario considerar cómo hacer que el equipo sea fácil de transportar, con una interfaz simple y fácil de usar. usar.
La tecnología de interfaz periférica tradicional no solo tiene una baja tasa de transferencia de datos, sino que también monopoliza recursos clave del sistema informático, como interrupciones, direcciones de E/S y canales DMA, lo que puede provocar fácilmente conflictos de recursos. Procedimientos complicados de instalación y configuración al usarlo. Trae muchos inconvenientes a los usuarios finales. En los últimos años, la tecnología de interfaz USB se ha desarrollado rápidamente y las nuevas computadoras le han brindado soporte. USB2.0 es el último logro en el desarrollo de la tecnología USB. El uso de la tecnología de interfaz USB2.0 para desarrollar periféricos de computadora no solo puede usar su mecanismo de control de errores [1] [6] para reducir la carga de los desarrolladores y obtener datos de alta velocidad. Capacidades de transmisión (480 Mb/s) y puede realizar prácticas funciones plug-and-play fuera del chasis, lo que hace que su uso sea cómodo para los usuarios finales.
1 Composición general del equipo receptor de transmisión inalámbrica de datos
El equipo receptor de transmisión inalámbrica de datos es una parte importante de un determinado sistema de medición de rango de tiro. Como se muestra en la Figura 1, el dispositivo utiliza un receptor de telemetría para recibir señales de ondas de radio moduladas usando una antena y luego las demodula para formar un flujo de datos en serie diferencial de nivel RS-422 con una velocidad de transmisión de 4 Mb/s. Periódicamente aparecen tramas de datos válidas que comienzan con la palabra de sincronización de tramas en estos datos en serie. El sistema de transferencia de datos extrae el marco de datos válido e inserta la información de hora local generada por el receptor GPS después de la palabra de sincronización del marco para registrar la hora en que se recibieron los datos del marco y luego los envía al hardware del host para su almacenamiento.
En los equipos receptores de transmisión inalámbrica de datos, el sistema de transferencia de datos es un subsistema clave para la recepción y almacenamiento de datos. La implementación del hardware y el proceso de trabajo del sistema se presentarán en detalle a continuación.
2 Composición básica e implementación de hardware del sistema de transferencia de datos
El sistema de transferencia de datos se compone principalmente de un módulo FPGA, un módulo DSP y un chip de interfaz USB2.0. módulo Como se muestra en la Figura 2. En la figura, la señal de entrada de datos en serie SDI de 4 Mb/s se ha convertido del nivel diferencial RS-422 al nivel CMOS. Para resaltar el énfasis, en la figura no se dibujan conexiones de señales menos importantes. Las funciones principales de estos módulos se presentan a continuación.
2.1 Implementación y funciones del módulo FPGA
El módulo FPGA está implementado en el chip EP1K30TI144-2 de la serie ACEX de Altera. Los principales submódulos funcionales incluyen: lógica de sincronización de bits, lógica de sincronización de tramas, reloj de temporización y lógica de decodificación. La lógica de sincronización de bits se compone principalmente de un bucle digital de bloqueo de fase y se utiliza para recuperar la señal de reloj de bits de la señal de entrada de datos en serie SDI. La lógica de sincronización de trama extrae el pulso de sincronización de trama de la señal de salida de la lógica de sincronización de bits. Ambos preparan el DSP para recibir datos serie utilizando su puerto serie síncrono. De esta manera, se puede utilizar un par de líneas de señal diferencial para recibir datos en serie síncronos, simplificando la interfaz externa a la placa de circuito impreso. El reloj de cronometraje genera información de cronometraje con una precisión de 0,1 ms con la ayuda de receptores DSP y GSP. La lógica de decodificación se utiliza para implementar la interconexión del sistema.
2.2 Implementación del módulo DSP y sus funciones
El módulo DSP es el módulo de control principal del sistema de transferencia de datos y está implementado en el chip DSP de punto fijo de 16 bits TMS320F206 de la empresa T1. [4]. El espacio de datos externo del DSP también está equipado con una SRAM de alta velocidad 32KX16, que puede almacenar en caché más de 80 cuadros de datos para mejorar las capacidades de control de errores del sistema. El DSP usa el puerto serie síncrono para recibir los datos serie síncronos enviados desde la FPGA, usa el puerto serie asíncrono para recibir la información de tiempo enviada por el receptor GPS (usado para inicializar el reloj de sincronización FPGA) y usa la interfaz de bus externo para acceda al reloj de sincronización FPGA, SRAM externa y registros en chip ISP1581. Se puede ver que el módulo DSP se utiliza principalmente para completar tareas como la recepción, reorganización y programación de transferencia de tramas de datos.
El chip ISP1581 es un controlador de dispositivo USB2.0 de alta velocidad lanzado por PHILIPS. Implementa la capa física y la capa de protocolo USB2.0/1.1 y cumple totalmente con la especificación USB2.0. admite operación de alta velocidad (480 Mb/s) y admite operación de velocidad completa (12 Mb/s).
ISP1581 no tiene un microprocesador incorporado, pero tiene una interfaz flexible para el microprocesador. Cuando está encendido, los niveles de pin BUS - CONF, DAO, MODE1, MODE0, DA1 se pueden configurar para adaptarse a la mayoría de los tipos de interfaz de microprocesador. Por ejemplo, a través del pin BUS_CONF/DA0, la configuración del bus puede seleccionar el modo de bus dividido (modo de bus dividido) en el módulo de procesador ordinario (modo Phocessor genérico, en el modo de procesador general, a través del pin MODE0/DA1); seleccione las opciones de lectura y escritura. Generalmente estilo 8051 o estilo Motorola.
En el sistema de volcado de datos, ISP1581 se utiliza para manejar la transmisión de datos de alta velocidad del host. Funciona en el modo de interfaz de procesador normal, utiliza señales estroboscópicas de lectura y escritura estilo 8051 y está controlado por el chip DSP TMS320F206. Las conexiones de señal entre los dos en el modo de trabajo seleccionado se muestran en la Figura 3. Los pines de señal que no se muestran en la figura se pueden dejar flotantes. El método de conexión de los pines de fuente de alimentación se describe brevemente en la página 46 de la referencia [2]. . Bajo la acción de la lógica de decodificación FPGA, los registros en el chip del ISP1581 se asignan en el espacio de datos fuera del chip del DSP. El DSP selecciona el registro al que se accederá a través de la línea de dirección de 8 bits y utiliza la línea de datos de 16 bits para intercambiar datos con el registro seleccionado bajo el control de las señales estroboscópicas de lectura y escritura. Al acceder a los registros de un solo byte ISP1581, el contenido del byte alto del bus de datos no importa. ISP1581 informa eventos del bus al DSP a través del pin de interrupción INT y utiliza los pines D y D- para completar el intercambio de datos con el host.
3 Proceso de trabajo del sistema de transferencia de datos
Después de encender el sistema, cuando finaliza el proceso de configuración de FPGA, si hay entrada de datos en serie, la lógica de sincronización de bits y la lógica de sincronización de cuadros iniciará el proceso de sincronización. Al mismo tiempo, el programa de servicio de interrupción de reinicio c_int0()[4] en el FLASH en el chip DSP se ejecuta inmediatamente después de que se establece el entorno de trabajo en lenguaje C, llamará a la función principal main(). En main (), es necesario organizar una serie de trabajos de inicialización secuenciales. Entre ellos, el proceso de inicialización de ISP1581 es relativamente complicado. Debe considerar el modo de fuente de alimentación utilizado por el dispositivo (aquí es el modo autoalimentado [6]), la secuencia de conexión del host y encendido del sistema. y debe combinarse con el proceso de enumeración del bus USB [1][6] combinado.
La lógica de sincronización de bits y la lógica de sincronización de cuadros en la FPGA ingresan al estado de sincronización y, después de que el módulo de control principal DSP coopera con el host para completar la tarea de inicialización, se puede iniciar el proceso de transmisión de datos. A continuación se presenta el proceso de inicialización de ISP1581 y el proceso de volcado del receptor de tramas de datos controladas por DSP.
3.1 Inicialización de ISP1581
Durante el proceso de inicialización, primero debe configurar algunos registros que afectan el modo de trabajo del propio ISP1581 y luego cooperar con el sistema USB del lado host para Responder a las solicitudes del dispositivo desde el lado del host. Cuando la placa del sistema de transferencia de datos está conectada como un dispositivo USB 2.0 a un puerto en el concentrador raíz USB del host a través de un conector, el host puede detectar la conexión, luego encender el puerto, detectar el dispositivo, activar el puerto y enviar datos. al puerto USB. El dispositivo envía una señal de reinicio. Después de recibir esta señal de reinicio, el dispositivo ingresa al estado predeterminado y luego puede responder a las solicitudes del dispositivo enviadas desde el host a través del canal de comunicación predeterminado. El host obtiene información detallada sobre el dispositivo a través de la solicitud de descriptor (GET_DESCRIPTOR), establece la dirección del dispositivo a través de la solicitud de configuración de dirección (SET_ADDRESS) y selecciona la configuración adecuada del dispositivo a través de la solicitud de configuración establecida (SET_CONFIGURATION). Una vez que el dispositivo responde con éxito a estas solicitudes del dispositivo, puede comunicarse con el host.
En el proceso de responder a la solicitud del host, el DSP necesita configurar el punto final del ISP1581 para implementar diferentes tipos de canales de transmisión. De acuerdo con los requisitos de velocidad de transmisión de datos, además del canal de control predeterminado, se implementa en el sistema un canal de entrada de tipo transmisión por lotes (a granel) [1]. De esta manera, ISP1581 puede transmitir datos desde el sistema de volcado de datos al host tan fácilmente como FIFO y tiene capacidades de control de errores, lo que simplifica la complejidad del diseño de software del lado del dispositivo.
3.2 Proceso de recepción y volcado de marcos de datos
Cuando el sistema funciona normalmente, necesita cooperar con el programa del lado host.
Los programas que los desarrolladores deben implementar en el lado principal incluyen aplicaciones y controladores de dispositivos. En el sistema operativo Windows 2000, el controlador del dispositivo USB es un controlador modelo WDM. El entorno de desarrollo DriverStudio proporciona una estructura de marco para controladores de tipo WDM, lo que facilita el desarrollo de controladores (consulte Referencias [5] 8, 9, Capítulo 10). El controlador recibe la solicitud de la aplicación, utiliza el controlador del bus USB (US-BD) y el controlador del controlador del host (HCD) para organizar las transacciones del bus USB a través del controlador del host, y el lado del dispositivo programa la transmisión de las tramas de datos correspondientes en función de estas transacciones. . Para obtener información sobre cómo el puerto anfitrión organiza las transacciones de autobús, consulte la referencia [1]. Lo siguiente se centra en el proceso de programación de datos del lado del dispositivo.
El DSP es el principal responsable del proceso de recepción y volcado de tramas de datos. El DSP establece una cola de tramas de datos en la SRAM externa, como se muestra en la Figura 4. El sistema funciona principalmente en modo controlado por interrupciones. El programa de servicio de interrupciones relacionado con el puerto serie síncrono es responsable de establecer la cola de la cola, y el programa de servicio de interrupciones correspondiente al pin de interrupción INT ISP1581 es responsable de establecer el principio de la cola. cola.
Cuando una trama de datos que comienza con una palabra de sincronización de trama llega en forma de un flujo de bits en serie, el pulso de sincronización de trama generado por la FPGA puede iniciar directamente el puerto serie síncrono del DSP para recibir datos, y el El pulso de sincronización también se interrumpe. Este método notifica al DSP que se prepare para la recepción de una trama de datos. Después de recibir la notificación, el DSP primero verifica si hay suficiente espacio en la SRAM externa para acomodar un cuadro de datos. Si no hay espacio, el marco de datos actual se descarta (por diseño, esta situación es rara; si hay espacio, se reserva suficiente espacio para el marco de datos actual). Luego complete la palabra de paso del cuadro al comienzo del cuadro, lea el valor actual del reloj de sincronización y complételo después de la palabra de sincronización del cuadro. De esta manera, se crea una nueva trama de datos (trama de datos F_N en la Figura 4), pero no se agrega a la cola. En cambio, tiene que esperar a que los datos posteriores del puerto serie síncrono se incrusten en la trama antes de agregarlos. a la cola.
Después de recibir una cantidad de palabras (determinadas por la configuración durante la inicialización), el búfer de recepción del puerto serie síncrono emitirá una solicitud de interrupción al DSP. En la rutina del servicio de interrupción, el DSP lee el contenido del buffer de recepción y lo llena en el marco F_N recién abierto. Después de recibir una trama de datos, la trama se agrega al final de la cola, lo que indica que los datos de la trama están listos (marco de datos F_R en la Figura 4) y se pueden enviar al hardware del host para su almacenamiento a través de ISP1581.
Cuando DSP consulta que hay un marco de datos preparado en la cola, configura el registro de índice de punto final de ISP1581 para que apunte al punto final de entrada de transmisión por lotes configurado durante la inicialización y luego configura la cola Los datos del primer marco se completa en el búfer del punto final a través del registro de puerto de datos de ISP1581. Entra en vigor automáticamente una vez que se llena el búfer del punto final. En el caso de que no se pueda llenar el búfer de punto final, se puede forzar que el búfer de punto final tenga efecto configurando el bit VENDP [2] del registro de función de control. Una vez que el búfer del punto final entra en vigor, cuando el siguiente token IN llega al bus USB, los datos del búfer del punto final se transmiten al host a través del bus USB. Después de que el host reciba correctamente los datos, responderá con ACK al ISP1581. Se puede informar al DSP a través del pin INT, y el DSP puede continuar completando los datos restantes del marco en el punto final.
Después de que el primer cuadro de datos en la cola se transfiere exitosamente al host, el DSP descarta el primer cuadro de datos. Si todavía hay una trama de datos en la cola, la siguiente primera trama se utilizará como primera trama y el proceso de transmisión antes mencionado continuará; si no hay ninguna trama de datos para transmitir, se le asignará un valor nulo (NULL); el puntero del primer marco Head_Ptr de la cola y espere la llegada del nuevo marco de datos.
USB2.0 es el último éxito en el desarrollo de la tecnología de interfaz periférica de computadora y tiene amplias perspectivas de aplicación. Este artículo presenta la aplicación del chip de interfaz USB2.0 ISP1581 de la empresa PHILIPS en equipos de recepción de datos inalámbricos. Equipos portátiles de transmisión y recepción de datos inalámbricos de alto rendimiento. Ha sido bien recibido por los usuarios en pruebas con fuego real en el campo de tiro.
El puerto serie RS-232C del PC es una de las interfaces más utilizadas. Por lo tanto, se han lanzado en grandes cantidades productos de tarjetas de bus ISA con el propósito de aumentar el número de puertos serie, como 4 puertos serie y 8 puertos serie.
Generalmente, las aplicaciones de puerto serie solo utilizan las condiciones de aplicación más básicas de un puerto serie compuesto por dos líneas de transmisión, RXD y TXD, y un cable de tierra. Este artículo presenta un circuito de interfaz que utiliza el puerto serie RS-232 de una PC y varios. Circuitos para satisfacer las necesidades de múltiples puertos serie.
1. RTS, DTR y circuito de expansión del puerto serie de la PC
RTS y DTR son los dos pines de salida D1 y D0 del registro de control MODEM del chip 8250 en la PC. La dirección del puerto es COM1, que es. 3FCH. El que tiene dirección COM2 es 2FCH. Podemos controlarlo escribiendo en el registro de control MODEM 3FCH o 2FCH. Este circuito de operación y expansión se utiliza para implementar la expansión multilínea de TXD y RXD. La Figura 1 es el circuito de expansión.
En el circuito de expansión del puerto serie de la PC que se muestra en la Figura 1, 74LS161 es un contador binario, el pin 1 es el terminal 0 claro, el pin 2 es el terminal de conteo, el pulso de conteo es una señal de pulso negativo y 4051 es uno de los ocho circuitos de interruptor electrónico digital/analógico bidireccional, uno de los cuales se utiliza para salida directa y otro para salida inversa. El principio de funcionamiento de este circuito de expansión es formar la señal de pulso negativo del terminal de conteo de pines P2 de 74LS161 controlando los niveles alto y bajo de la salida DTR del puerto serie de la PC, de modo que los terminales de salida P14 (QA), P13 (QB), P12 (QC), el pin P11 (QD) cambia en dieciséis estados de 0000 a 1111. Este circuito solo usa las tres salidas de QA, QB y QC para formar el control ABC del 4051, y finalmente hace el terminal de entrada TXD del 4051 (1) pasa en secuencia y se conecta con TX1~TX8 para obtener la señal de salida, y el terminal de salida RXD del 4051(2) se conecta con RX1~RX8 en secuencia para formar la entrada. señal. Dado que la conducción de RXD y TXD tiene correspondencia uno a uno, la comunicación en serie se puede lograr comunicándose con hasta 8 dispositivos externos con puertos serie básicos de tres cables para lograr la transmisión de datos. El circuito de conversión de nivel en el lado de la PC convierte el nivel RS232 al nivel TTL, y el circuito de conversión de nivel en el lado periférico convierte el nivel TTL al nivel RS232. Dado que hay muchos circuitos que pueden implementar esta conversión, no los presentaremos aquí.
2. Programa de uso del circuito
Programe el puerto serie COM1 del PC de la siguiente manera:
… Establezca la velocidad en baudios del puerto COM1;
<; p> MOV DX, 3FCHMOV AL, XXXXXX01B
OUT DX, AL; D1 genera un pulso negativo RTS y borra la salida 74LS161 a 0
MOV AL, XXXXXX11B;
OUT DX, AL; RX1 y TX1 de 4051 están activados
CALL COM; Llame a la subrutina de comunicación para comunicarse con el primer dispositivo externo;
MOV CX, 7; Establecer contador de bucle;
SIGUIENTE: MOV DX, 3FCH
MOV AL, XXXXXX10B
OUT DX, AL bit genera un; pulso negativo de DTR, formando un pulso de conteo de pines 161 P2
MOV AL, XXXXXX11B
OUT DX, AL RX2 y TX2 están activados
CALL COM; ; llamar a la subrutina de comunicación para comunicarse con el segundo dispositivo externo
LOOP NEXT; comunicarse con los otros 6 dispositivos externos en un bucle
…
…; Se omiten las subrutinas
3. Instrucciones de uso
Dado que la interfaz multicanal extendida utiliza una subrutina durante la comunicación, cuando se conecta a un determinado canal, el sistema solo puede comunicarse con el equipo externo de este canal.
Si el sitio de trabajo necesita comunicarse con un determinado canal de inmediato, debe realizar dos operaciones de escritura en el bit D1 de 3FCH y formar un pulso negativo en el pin RTS para borrar 7416I a 0, y luego conectar y realizar varias operaciones de emparejamiento. Dos operaciones de escritura en DTR. Por ejemplo, si desea comunicarse con el cuarto dispositivo periférico, debe borrar 74LS161 a 0, luego escribir dos escrituras en el bit D0 de 3FCH tres veces seguidas para formar un pulso negativo en el pin DTR y luego llamar la subrutina de comunicación.
Si desea utilizar el puerto serie COM2 de la PC, simplemente reemplace todos los 3F8H~3FDH en el programa con 2F8H~2FDH.
Si se utiliza un circuito de interruptor electrónico digital/analógico bidireccional de dieciséis selecciones, los cuatro terminales de salida QA, QB, QC y QD del 74LS161 se pueden conectar a los cuatro terminales de control A, B y C del interruptor electrónico, D, para que se pueda lograr la comunicación de datos entre el puerto RS232 de una PC y 16 periféricos con puerto serie. Hola, espero que esto ayude. Más información sobre la base de pruebas de software, burbuja de pruebas 365