Verilog Case Statement evaluando todas las combinaciones de una muestra de ADC de 10 bits

0

Tengo (con suerte) una pregunta bastante sencilla sobre las declaraciones de los casos. Si muestro una señal entrante, que se devuelve como un valor de 10 bits, ¿puedo evaluar esa muestra en una declaración de caso y asignar un valor de resultado para el registro de salida en función de cada uno de los 1024 casos? ¿Comería esto LUTs en el tejido FPGA? Consideré simplemente hacer una gran cadena if-else, pero ya lo hice con el gran bloque de mayúsculas y sintetiza y funciona bien en el FPGA Spartan-6 después de hacerlo por 2 entradas. Pero ahora que mi diseño se ha vuelto más grande y ahora lo he hecho con 4 entradas diferentes, ahora el fpga solo funciona cuando destello el fpga, pero si lo enciendo, arranca hasta un extraño estado desconocido.

    
pregunta us3rnotfound

1 respuesta

2
  

Estoy muestreando una señal entrante, que se devuelve como un valor de 10 bits. ¿Puedo evaluar esa muestra en una declaración de caso y asignar un valor de resultado para el registro de salida en función de cada uno de los 1024 casos? ¿Comería esto LUT en el tejido FPGA?

Sí, la sintaxis de Verilog lo permite.

  

¿Comería esto LUTs en el tejido FPGA?

Depende completamente de la tabla de verdad real que está implementando y de cuántos bits es el valor de salida. La herramienta de síntesis optimizará su salida tanto como pueda. Es posible que se pueda optimizar hasta 2 o 3 LUT por bit de salida. O podría ser 10 de LUts por bit de salida.

Puede consultar el informe de síntesis y ver exactamente cuántos LUT consume su diseño.

  

Pero ahora que mi diseño se ha vuelto más grande y lo he hecho ahora para 4 entradas diferentes, ahora el fpga solo funciona cuando destello el fpga, pero si lo enciendo, arranca hasta un estado desconocido extraño.

Esto no debería tener que ver con el diseño real que implementas, sino solo con el hecho de haber flasheado correctamente el NVM que carga el FPGA desde el ciclo de alimentación.

Si está utilizando un flujo de bits comprimido (no recuerdo que Spartan 6 lo admita), es posible que un pequeño diseño se ajuste a su NVM, pero un diseño complejo no. Puede consultar el informe desde el generador del flujo de bits para asegurarse de que el tamaño del flujo de bits no sea más grande de lo que admite su NVM.

    
respondido por el The Photon

Lea otras preguntas en las etiquetas