¿Cómo implementar un elemento C de Muller en un LUT4 de un FPGA?

1

Estoy practicando el diseño de circuitos asíncronos, y me gustaría realizar algunos experimentos simples construyendo circuitos simples utilizando un FPGA Spartan-3.

Me pregunto cómo se puede implementar un elemento C Muller de 2 entradas y 4 entradas en un FPGA utilizando primitivas LUT4.

¿Estará libre de riesgos?

    
pregunta Ehsan

3 respuestas

1

Parece que debería ser posible implementar hasta un elemento C de 3 entradas en un Spartan 3. En un Spartan 6 con 6 LUT de entrada, debería poder implementar 5 elementos C de entrada. Ahora, no estoy completamente seguro de si el sintetizador manejará la ruta de retroalimentación correctamente o no. Recomendaría sintetizar una sola puerta y luego verificar el esquema asignado para asegurar que se implementa correctamente. Si eso no funciona, entonces es posible que tenga que crear una instancia directa de los primitivos LUT para sus elementos C. Probablemente esto no sea tan malo si solo lo hace una vez para un módulo de elemento C que puede usar muchas veces. El otro problema podría ser el enrutamiento de la ruta de retroalimentación. Aunque no estoy seguro de que se pueda hacer eso. Tal vez el ajuste de maxdelay ayudaría. Tal vez no. Solo tendrás que hacer un poco de experimentación.

Ahora, el lugar y la ruta en función del tiempo es un animal completamente diferente. No tengo idea de cómo funcionará con un diseño asíncrono. El resultado podría ser muy sub-óptimo.

    
respondido por el alex.forencich
1

Se puede implementar un elemento C en los FPGA basados en LUT, aunque no es muy simple. La funcionalidad lógica es la parte fácil. Por ejemplo, para crear un elemento C de 2 entradas con las entradas A y B y la salida C, basta con implementar una red OR-AND (puede hacer esto con una LUT4 FPGA) donde C es la salida de una entrada de 3 entradas. AND y cada una de las entradas de este AND se conecta a la salida de un AND de 2 entradas. En el primer AND, las entradas son A y B, en el segundo AND las entradas son A y C y el último AND tiene como entradas B y C. La parte difícil es implementar el cable de realimentación (C para el segundo y tercer AND) ) de una manera que la salida OR a las horquillas de entrada AND (derivaciones de cable a múltiples lugares) es "isocrónica", es decir, que los retrasos en todas las ramas del cable de realimentación están dentro de algún límite computado. Puede encontrar más información sobre cómo lograr esto en un documento que escribimos sobre la implementación de controladores asíncronos en FPGA (publicado en la conferencia ICCD en 2007), disponible en ( enlace ). Un elemento C de 4 entradas se puede diseñar de la misma manera, pero necesitará al menos un LUT5 (4 entradas más el cable de retroalimentación), o puede construirlo combinando algunos elementos C de 2 entradas.

    
respondido por el Ney Laert Vilar Calazans
0

Puede haber 2 tipos de elementos C, uno está basado en RS-latch y otro está basado en una puerta genérica. Este es el ejemplo de una puerta genérica basada:

module Celement(reset, A1, A2, Z);
    input reset, A1, A2;
    output Z;
        LUT4 #(.INIT(16'h00E8))
        LUT4_inst (
        .O(Z),
        .I0(A1),  
        .I1(A2),  
        .I2(Z),
        .I3(reset)
    );
    
respondido por el Ziho Shin

Lea otras preguntas en las etiquetas