Recopilación de preguntas de entrevistas de alta frecuencia para la verificación digital de CI, con respuestas (3)

Recientemente, todo el mundo habla del reclutamiento de otoño de IC, lo que definitivamente falta en el reclutamiento de otoño son las preguntas de la entrevista. Esto viene~

Se compilan un total de 150 preguntas de entrevistas verificadas de alta frecuencia, incluidas las respuestas (todas las preguntas se pueden obtener al final del artículo)
Insertar descripción de la imagen aquí

P1. Características de los códigos binarios, códigos Gray y códigos one-hot

Código binario: lenguaje de máquina básico, cada bit solo puede ser 0 o 1, y cada segundo se convierte en uno;
Código Gray: en la codificación de un conjunto de números, si dos códigos adyacentes tienen solo un número binario que es diferente, Entonces esta codificación se llama Código Gray. Además, debido a que solo hay una diferencia de un dígito entre el número máximo y el número mínimo, está "conectado de un extremo a otro".
Código one-hot: también conocido como codificación efectiva de un bit, el método consiste en utilizar un registro de estado de N bits para codificar estados N. Cada estado tiene su propio bit de registro independiente y, en cualquier momento, solo uno de ellos es válido. .

Q2.La diferencia entre matriz empaquetada y matriz desempaquetada

El método de declaración de matriz empaquetada: bit [7:0][3:0] matriz_empaquetada: significa que matriz_empaquetada consta de cuatro números de 8 bits y el espacio de almacenamiento es continuo; el método de declaración de matriz desempaquetada: bit [7:0 ] unpacked_array[3
: 0]: indica que unpacked_array consta de cuatro números de 8 bits y el espacio de almacenamiento no es continuo;

P3. La diferencia entre asignación con bloqueo y asignación sin bloqueo

Bloque de declaraciones de asignación de bloqueo ("=") y declaraciones de asignación sin bloqueo ("<=")
: generalmente correspondiente a la asignación lógica combinacional en el circuito, el resultado en el lado derecho del signo igual se asignará inmediatamente a la izquierda lado.
Sin bloqueo: generalmente correspondiente a la asignación lógica secuencial en el circuito, el resultado en el lado derecho del signo igual no se asignará inmediatamente al lado izquierdo.
En la declaración siempre, si el parámetro en el lado izquierdo del signo igual de asignación de bloqueo participa en otras operaciones del módulo, participará en la operación de acuerdo con el resultado después de la asignación, mientras que el parámetro en el lado izquierdo del no -El signo igual de asignación de bloqueo seguirá participando en la operación de acuerdo con el resultado antes de la asignación.
La asignación de bloqueo se usa en la instrucción Assign, la asignación de bloqueo se usa en circuitos combinacionales y la asignación sin bloqueo se usa en circuitos secuenciales.

P4. La diferencia entre declaraciones de procedimiento y declaraciones de asignación continua

La declaración de asignación continua está marcada por asignación y la declaración de asignación de procedimiento no puede contener esta palabra clave; el
tipo de datos en el lado izquierdo de la declaración de asignación continua debe ser un tipo de datos de red de línea y el tipo de datos asignado en la declaración de asignación de procedimiento debe ser una variable de tipo registro;

Las declaraciones de asignación continua no pueden aparecer en bloques de procedimiento (inicial o siempre), pero las declaraciones de asignación de procedimiento sí pueden; las declaraciones de asignación
continua se utilizan principalmente para modelar circuitos lógicos combinacionales y describir conexiones entre datos de línea y red, mientras que las declaraciones de asignación de procedimiento se utilizan principalmente para Solía ​​​​para describir el comportamiento de circuitos lógicos secuenciales;

La asignación de declaraciones de asignación continua a los datos de la red asignados es "continua" (es decir, cualquier cambio en la expresión de asignación se reflejará inmediatamente en el valor de los datos de la red), mientras que la declaración de asignación procedimental solo se puede utilizar cuando el procedimiento La declaración de asignación es La operación de asignación se realiza solo cuando se ejecuta la declaración. Después de ejecutar la declaración, el valor de la variable asignada ya no se ve afectado por la expresión de asignación (tenga en cuenta que una vez aquí se refiere a: en el bloque inicial, el procedimiento La asignación solo se ejecuta una vez en secuencia, y en el bloque siempre, cada vez que se cumple la condición de siempre, las declaraciones en el bloque siempre deben ejecutarse secuencialmente).

Q5.Similitudes y diferencias entre inicial y siempre

siempre:
siempre es para describir el comportamiento del hardware y, al usarlo, debe prestar atención a qué método de uso es una descripción de circuito secuencial y qué método de uso es una descripción de circuito combinacional.

La lista sensible @(evento...) en siempre es para simular el comportamiento de activación de las señales de hardware y debe estar alineada correctamente con el comportamiento del hardware y siempre procesar la descripción del bloque.

Por lo tanto, el bloque de proceso siempre se usa para describir la forma correcta de abrir circuitos secuenciales y circuitos combinacionales de hardware, por lo que solo se puede usar en módulos o interfaces.

inicial:
También se puede ver por el nombre que inicial es obviamente diferente de siempre en la ruta de ejecución, es decir, inicial es muy consistente con el modo de ejecución del software, es decir, solo se ejecuta una vez.

Las iniciales, como siempre, no se pueden retrasar en su ejecución, es decir, se ejecutarán todas al mismo tiempo al inicio de la simulación, y no existe un orden en la ejecución entre diferentes iniciales y siempre.

A juzgar por las propiedades de su ruta de ejecución, inicial no debería existir en el código de diseño del hardware, no se sintetiza por sí mismo y no ayuda a describir el circuito.

Inicial nace para las pruebas, dado que las pruebas deben completarse de acuerdo con el hábito cronológico, es decir, el método del software, inicial puede cumplir con este requisito.

En la era Verilog, todas las declaraciones de prueba se pueden colocar en el inicial. Para facilitar la gestión unificada de la secuencia de prueba, se recomienda colocar todas las declaraciones de prueba relevantes en el mismo bloque de procedimiento inicial.

El bloque de procedimiento inicial se puede utilizar en módulo, interfaz y programa. Al escribir bloques de procedimientos, recuerde ajustar su alcance con inicio...fin.

P6.¿Qué tipos de MEV existen? ¿Cual es la diferencia?

La clave al describir una máquina de estados es describir claramente varios elementos de la máquina de estados, es decir, cómo realizar las transiciones de estados, cuál es la salida de cada estado y las condiciones para las transiciones de estados. Existen varios métodos para una descripción específica, y los más comunes son tres métodos de descripción:
(1) Un párrafo: toda la máquina de estados se escribe en un módulo siempre, en el que se describe la transición de estado, así como la entrada y salida. del estado;
(2) Dos etapas: Se usan dos módulos siempre para describir la máquina de estado. Uno de los módulos siempre usa sincronización sincrónica para describir la transición de estado; el otro módulo usa lógica combinada para determinar las condiciones de transición de estado, describir las reglas de transición de estado y la salida; (3)
Tipo de tres segmentos: basado en el método de descripción de los dos módulos siempre, se utilizan tres módulos siempre. Un módulo siempre usa sincronización sincrónica para describir la transferencia de estado, el otro siempre usa lógica de combinación para determinar las condiciones de transferencia de estado y describe las reglas de transferencia de estado, y el otro módulo siempre describe el estado Salida (puede ser salida por circuito combinacional o circuito secuencial).

Pregunta 7. ¿Por qué se utilizan flip-flops en circuitos digitales?

Los flip-flops se utilizan porque pueden guardar datos y el estado del circuito; los flip-flops se activan en el borde del reloj y la sincronización del reloj permite que todo el circuito funcione de manera sincrónica y uniforme; además, si solo se usa lógica combinacional , los datos no se pueden guardar, por lo que los datos resultantes no se pueden utilizar más adelante.

Q8 Características y diferencias entre reinicio asíncrono y reinicio síncrono

Restablecimiento sincrónico: cuando se detecta la señal de reinicio en el flanco ascendente del reloj, se realiza la operación de reinicio y el requisito previo es que el flanco del reloj sea válido. siempre @ (posedge clk);
Ventajas :
a. Es beneficioso para la simulación del simulador;
b. Puede hacer que el sistema diseñado sea un circuito secuencial 100% sincrónico, lo cual es beneficioso para el análisis de tiempos y puede sintetizar una Fmax más alta; c
Dado que sólo es efectivo cuando llega el nivel válido del reloj, se pueden filtrar los fallos de reinicio superiores a la frecuencia del reloj.
Desventajas:
a. La duración efectiva de la señal de reinicio debe ser mayor que el ciclo del reloj para que el sistema realmente la reconozca y complete la tarea de reinicio. Al mismo tiempo, también se deben considerar factores como la desviación del reloj, el retardo de la ruta lógica combinacional, el retardo de reinicio, etc. (por lo que la señal de reinicio a veces requiere una ampliación del pulso para garantizar un ancho de reinicio suficiente durante el período de validez del reloj); b. Dado que la mayoría Dispositivos lógicos
Los DFF en la biblioteca de destino solo tienen puertos de reinicio asíncronos. Por lo tanto, si se utiliza el reinicio sincrónico, el sintetizador insertará lógica combinacional en el puerto de entrada de datos del registro. Esto aumentará los recursos lógicos internos de la FPGA por un lado. Por un lado, y también aumentar los recursos lógicos internos de la FPGA, por otro lado. Se agrega el correspondiente retardo de puerta lógica combinacional.

Restablecimiento asíncrono: independientemente de si llega el flanco del reloj, siempre que la señal de reinicio sea válida, el sistema se reiniciará. siempre @ (posedge clk o negedge rst_n);
Ventajas :
a. La mayoría de los DFF de la biblioteca del dispositivo de destino tienen puertos de reinicio asíncronos, por lo que el puerto de reinicio del flip-flop no requiere lógica combinacional adicional, lo que ahorra recursos; b. El
diseño es relativamente simple,
c. La señal de reinicio asíncrona es fácil de identificar (el circuito se puede reiniciar bajo cualquier circunstancia, independientemente de si hay un reloj).
Desventajas:
a. El mayor problema es que pertenece a la lógica asíncrona. El problema ocurre cuando se libera el reinicio, no cuando es válido. Si el reinicio se libera cerca del flanco válido del reloj, la salida del flip- flop puede entrar en un estado metaestable (en este momento, clk detecta que el estado de rst_n será un estado metaestable, es decir, si 0 o 1 es incierto), lo que provocará una falla de reinicio.
b. Las señales de reinicio falsas pueden ser causadas por ruido o fallas (por ejemplo, consolas de juegos anteriores se reinician repentinamente en medio de un juego) (Nota: el puerto del reloj, los puertos de borrado y configuración son muy sensibles a las señales de falla, y cualquier falla puede causar el sistema salga mal, por lo que juzgar si existen riesgos en los circuitos lógicos y cómo evitarlos son cuestiones que los diseñadores deben considerar);
c. El análisis de temporización estática es difícil.
d. Para el diseño DFT (Diseño para prueba), si la señal de reinicio no proviene directamente del pin de E/S, la señal de reinicio debe desactivarse durante el escaneo y la prueba DFT, por lo que se requiere un circuito de sincronización adicional.

Se recomienda utilizar reinicio asíncrono y liberación síncrona, y la señal de reinicio está activa a bajo nivel.

P39: Implementación de código de reinicio asíncrono y lanzamiento síncrono

[imagen]

Pregunta 10. ¿En qué dos tipos de circuitos se suelen dividir los circuitos digitales?

Dividido en circuitos lógicos combinacionales y circuitos lógicos secuenciales.
La característica de la función lógica de un circuito lógico combinacional es que la salida en cualquier momento solo depende de la entrada en ese momento y no tiene nada que ver con el estado original del circuito.
La función lógica característica de los circuitos lógicos secuenciales es que la salida en cualquier momento no solo depende de la señal de entrada en ese momento, sino que también depende del estado original del circuito, o en otras palabras, también está relacionada con la entrada anterior. .

Debido a limitaciones de espacio, las preguntas de la entrevista de verificación de IC no se enumerarán una por una. Si necesita preguntas de la entrevista y desea conocer los problemas que requieren atención en su currículum, puede preguntarle al ingeniero primero (todas las preguntas de la entrevista están disponibles).

Aquí hay una entrada: Preguntas de la entrevista de verificación de IC

Supongo que te gusta

Origin blog.csdn.net/coachip/article/details/132585674
Recomendado
Clasificación