Hice el examen escrito como ingeniero DSP. El documento tiene una sola página, anverso y reverso. 1***10 preguntas. Responda las preguntas en el papel en blanco proporcionado.
1. ¿Qué son los chips DSP de punto fijo y los chips DSP de punto flotante? ¿Cuáles son los pros y los contras?
El DSP de punto fijo y el DSP de punto flotante se distinguen principalmente por el formato de los datos cuando funciona el DSP. Un DSP cuyos datos operan en formato de punto fijo es un DSP de punto fijo, y un DSP cuyos datos operan en formato de punto flotante es un DSP de punto flotante. El DSP de punto flotante puede realizar operaciones de punto flotante, que se completan de una vez y se implementan mediante hardware. El DSP de punto fijo no puede realizar operaciones de punto flotante directamente y las operaciones de punto flotante deben implementarse con la ayuda de programas.
Ventajas: El rango operativo del DSP de punto flotante es mayor que el del DSP de punto fijo. El rango de direccionamiento del DSP de punto flotante también es mayor. El DSP de punto flotante tiene mayor precisión. Las operaciones de coma flotante son rápidas.
Desventajas: el DSP de punto fijo siempre debe prestar atención al desbordamiento de operaciones. La precisión no es suficiente y la velocidad de operación del DSP de punto fijo es lenta.
2. ¿Cuál es la mayor diferencia entre DSP y CPU de uso general? ¿Cuáles son las similitudes?
(1) En primer lugar, la arquitectura: la CPU es una estructura de von Neumann, mientras que el DSP tiene buses de código y datos separados, que es la "estructura de Harvard".
(2) Estandarización y versatilidad: la estandarización y versatilidad de la CPU son muy buenas y es compatible con el sistema operativo, por lo que el sistema con la CPU como núcleo es conveniente para la interacción y comunicación entre humanos y computadoras. con dispositivos de interfaz estándar, lo cual es muy conveniente y no requiere desarrollo de hardware, pero esto también complica el circuito de interfaz periférica de la CPU. El DSP se utiliza principalmente para desarrollar sistemas de procesamiento de señales integrados y no enfatiza la interacción entre humanos y computadoras. Generalmente no requiere muchas interfaces de comunicación, por lo que la estructura también es relativamente compleja y fácil de desarrollar. Si solo nos centramos en aplicaciones integradas, la diferencia entre CPU integrada y DSP debería ser que uno se centra en el control y el otro en el cálculo.
(3) Estructura de canalización: la mayoría de los DSP tienen una estructura de canalización, es decir, cada instrucción se completa mediante múltiples unidades funcionales en el chip para completar pasos como la búsqueda de instrucciones, la decodificación, la búsqueda de números y la ejecución. Esto puede mejorar enormemente la eficiencia de ejecución del sistema. Sin embargo, la adopción de canalizaciones también aumenta la dificultad del diseño de software, lo que requiere que los diseñadores consideren las necesidades de las canalizaciones en el diseño del programa.
Multiplicador rápido: Los algoritmos de procesamiento de señales suelen hacer un uso extensivo de operaciones de acumulación múltiple (MAC). DSP tiene un multiplicador de hardware dedicado, que puede completar la operación MAC en un ciclo de reloj. Los multiplicadores de hardware ocupan una gran parte del área del chip DSP. (Por el contrario, las CPU de uso general utilizan una técnica de multiplicación iterativa más lenta que puede completar una operación de multiplicación en múltiples ciclos de reloj pero utiliza menos recursos de silicio).
Generador de direcciones: DSP tiene una unidad de generación de direcciones de hardware dedicada para que pueda admitir patrones de direcciones de datos específicos requeridos por muchos algoritmos de procesamiento de señales. Esto incluye el incremento (decremento) previo (posterior), la dirección de módulo del búfer de datos en anillo y la dirección de inversión de bits de la FFT. La unidad generadora de direcciones funciona en paralelo con la ALU principal y el multiplicador, lo que aumenta aún más la cantidad de trabajo que el DSP puede realizar en un ciclo de reloj.
Bucles asistidos por hardware: Los algoritmos de procesamiento de señales suelen requerir la ejecución de bucles cerrados de instrucciones. La compatibilidad con bucles asistidos por hardware permite al DSP recorrer eficientemente bloques de código sin detener la canalización ni permitir que el software pruebe las condiciones de terminación del bucle.
3. ¿Cuál es la diferencia entre un sistema preventivo y un sistema no preventivo? ¿Cuál es DSP/BIOS y ucOSⅡ?
Preventivo: si una tarea de mayor prioridad entra en estado listo mientras la tarea actual se está ejecutando, la tarea actual entregará inmediatamente la CPU a la tarea de mayor prioridad.
No preventiva: espera a que se ejecute la tarea actual antes de pasarla a una tarea con mayor prioridad.
DSP/BIOS y ucOSII son sistemas operativos preventivos.
4. Hable sobre su comprensión de DSP MAP.
El archivo MAP es un archivo de mapeo generado después de la compilación del software CCS sobre todos los programas, datos y espacios IO utilizados por DSP.
1. Método de generación
Hay dos formas principales de generar archivos MAP. Una la genera automáticamente el sistema. El nombre del archivo predeterminado es el nombre del proyecto que creó. Por ejemplo, XXX es el nombre del proyecto) más el sufijo .map xxx.map. Otro método es especificar en el archivo CMD para generar un archivo MAP. El método de operación es agregar "-m abc.map". Comando MEMORIA. El nombre del archivo puede ser arbitrario.
2. Formato de archivo
Un archivo MAP se divide aproximadamente en cuatro partes: encabezado de archivo, configuración de memoria, mapeo de segmentos y símbolos globales. La configuración de la memoria está asociada con la instrucción MEMORY en el archivo CMD. Las definiciones de intervalo de datos y programa definidas en el archivo CMD se pueden encontrar en esta sección. A diferencia del archivo CMD, se agrega un intervalo realmente utilizado al archivo MAP. es decir, la longitud del espacio realmente utilizado en el programa. La parte de mapeo de segmentos está asociada con la instrucción SECTION en el archivo CMD. En esta parte del programa, se detallan la dirección inicial y la longitud real de todos los segmentos realmente mapeados. Puede ser específico de los segmentos especificados por PROGMA en el programa y los archivos OBJ generados por cada archivo individual. El símbolo global puede ser cada función utilizada por el programa, y la dirección inicial correspondiente de las variables globales definidas en el programa se puede encontrar aquí. Hay dos formas de enumerar en el archivo MAP: una está organizada según la dirección correspondiente y la otra según la letra del símbolo global.
5. Cuestiones procesales sencillas. Mire el programa y escriba el resultado. Está escrito en C.
6. ¿Cuál es el complemento a dos de -7 y 10 en 16 bits? Escribe Q15 0.25 y Q15 0.5
⑴El código complemento del número positivo es el mismo que el código original.
⑵El complemento de un número negativo El complemento de un número negativo es la inversión de su código original bit a bit, excepto el bit de signo, entonces el número entero se suma a 1;
El código binario original de -7 convertido es 1000000000000111, el complemento es 1111111111111000, el complemento es el complemento +1=1111111111111001
El código binario original de 10 es 0000000000001010, que es un número positivo, complemento El código es el mismo que el código original
El número del chip DSP se expresa en forma de complemento a 2. Cada número de 16 bits utiliza un bit de signo para representar el signo del número. 0 significa que el valor es positivo y l significa que el valor es negativo. Los 15 bits restantes representan el tamaño del valor.
Por ejemplo, el número binario 0010000000000011b=8195
El número binario 1111111111111100b= -4
Hay dos tipos de escalado de números: notación Q y S notación.
Los números representados por diferentes Q no sólo tienen diferentes rangos, sino que también tienen diferentes precisiones. Cuanto mayor sea Q, menor será el rango numérico, pero mayor será la precisión;
Por ejemplo, el número hexadecimal 2000H=8192 está representado por Q0
El número hexadecimal 2000H=0,25 está representado por Q15 significa
7.
8. Escribe el prototipo de función de strcpy.
char* strcpy(char *strDest,const char * strSrc)
{
}
9. función de lista enlazada individualmente.
struct stu_info{
int x;
struct stu_info *next;
};
void inputstuinfo (struct stu_info**head,int n)
{
}
10 Reorganice una cadena para que las letras sean lo primero y los números. Después de eso, las posiciones relativas de letras y números permanecen sin cambios.
include
include
include
Nombre de la función: divertido
Parámetros: char*s, int *m
Valor de retorno de la función: chLetter (nombre de matriz de la matriz chLetter[N])
Variable local: char chLetter [N]; char chNumber[N]; int i,j,k;
char *fun(char*s,int *m)
{