¿Enviar un reloj dividido a través de un pin de reloj no dedicado?

0

Soy moderadamente nuevo en los FPGA, y ahora mismo estoy trabajando en el código para interactuar con un DAC. Estoy usando this PMOD DAC, y un Nexys 4 DDR fpga. En este momento, los estoy conectando a través del encabezado JB PMOD.

El DAC requiere un pulso de reloj (estoy enviando uno de 50MHz, que he dividido del clk de los FPGA a 100MHz), que estoy enviando a través del pin 4, siguiendo el manual de referencia. Sin embargo, una vez que intento sintetizarlo e implementarlo, obtengo un error.

"Mala colocación para enrutamiento entre un pin IO y BUFG. Si esta condición subóptima es aceptable para este diseño, puede usar la restricción CLOCK_DEDICATED_ROUTE en el archivo .XDC para degradar este mensaje a una advertencia. , se desaconseja mucho el uso de esta anulación. Estos ejemplos se pueden usar directamente en el archivo .XDC para anular esta regla de reloj. "

Hay dos problemas posibles:

  1. A la fpga no le gusta que esté enviando una señal de reloj a través de este pin PMOD

  2. Puede haber un problema con Mset_enable, pero no tiene nada que ver con un reloj (en este momento es una entrada asignada a uno de los botones de a bordo), y no veo ninguna razón por la que no debería haber dificultades. colocándolo.

Mi pregunta es: ¿cuál es el problema? ¿Debo seguir adelante y usar esta solución?

Código Mset:

module tuning_word_set(
  input [3:0]data_in,
  input clk,
  input Mset_enable,
  output reg sin_LUT_rst,
  output reg [3:0]data_out
  );

//if enabled, M will change to data_in, otherwise it will stay the same
always @*
begin
  if (Mset_enable)
  begin
    data_out <= data_in;
    sin_LUT_rst <= 1'b1;
  end
  else
    data_out <= data_out;
    sin_LUT_rst <= 1'b0;
end

endmodule
    
pregunta qasddd

2 respuestas

0

Lo que puedes intentar, en lugar de dividir el reloj, es simplemente crear un reloj de 50 MHz en el archivo de restricciones y vincular el pin de salida.

Esto te ayudará a comenzar por el camino correcto: enlace

    
respondido por el Drew
1

Solo algunos de los pines de entrada están conectados a las redes de distribución de reloj dentro del FPGA.

El enrutamiento del reloj es especializado porque admite un mayor fanout, por lo que grandes partes del FPGA pueden usar la misma señal de reloj.

Es posible usar una interconexión de enrutamiento regular como un reloj, pero esto tiene tantas restricciones interesantes que el compilador generará un diseño que usa demasiados recursos y se ejecutará lentamente. Cuando agregue más lógica, el compilador generará un árbol de reloj a partir de LUT, lo que reducirá \ $ f_ {max} \ $ para su diseño, por lo que espere que falle en las restricciones de tiempo una vez que adquiera cierta complejidad. Así que la solución no te llevará muy lejos.

Entonces, ninguna de tus ideas funcionará, el problema está en el lado de entrada, con la asignación de la señal clock a un pin de entrada específico.

    
respondido por el Simon Richter

Lea otras preguntas en las etiquetas