Diseño de tabla de búsqueda (LUT) para medio sumador en FPGA

Quiero implementar medio sumador usando FPGA. Para esto necesito diseñar CLB, más específicamente LUT para medio sumador. Sé que LUT solo da una salida. Pero, para medio sumador obtenemos dos salidas. Uno para suma y otro para llevar.

¿Cómo puedo diseñar CLB para medio sumador?

¿Cómo puedo obtener dos salidas de LUT? ¿Que estoy haciendo mal?

ingrese la descripción de la imagen aquí

Del estudio, lo que entendí sobre FPGA es que esta imagen representa el componente básico de FPGA, que es CLB. CLB consta de LUT, D-Flipflop y MUX.

LUT se utiliza para configurar cualquier tipo de puertas lógicas. AND, OR, NOT o cualquier otra puerta lógica compleja. Al usar el programa, almacenamos la salida de la tabla de verdad para, por ejemplo, la puerta AND en LUT. Y mientras le damos entrada a FPGA, pasa por LUT a través de la barra de direcciones y accede a la dirección de memoria específica en LUT. Y luego la salida de LUT pasa por dos caminos. Aquí, debemos elegir si queremos que nuestra salida sea a través de un circuito combinacional o un circuito secuencial. Usamos MUX para este propósito de selección. 0 para circuito combinacional y 1 para circuito secuencial.

¿Estoy en lo correcto Lo que entendí hasta ahora?

¿Cuándo necesitamos elegir un circuito secuencial y un circuito combinacional?

¿Qué familia de FPGA? Muchos tienen funciones especiales en su bloque lógico para permitir el diseño de sumadores sin un segundo CLB. Pero para mostrarle qué características, tenemos que saber a qué FPGA se dirige.
Casi nunca desea apuntar directamente a la estructura FPGA en esta escala; a veces lo hace para bloques funcionales especiales (memoria, IO, DLL, multiplicador...), pero para la lógica básica simplemente escribe expresiones lógicas (o mejor aún, aritméticas) y deja que las herramientas las asignen de manera óptima. En términos de secuencial frente a combinatorio, elige lo que necesita su aplicación, pero tenga en cuenta que las largas rutas combinatorias entre registros limitarán las velocidades de reloj alcanzables.
@ThePhoton FPGA que estoy usando es este: tequipment.net/Digilent/ZedBoard
Su pregunta es como si quisiera construir una puerta AND con transistores en la placa de prueba mientras ya tiene chips dedicados para eso. ¿Por qué quieres incluso hacerlo cuando el objetivo de diseñar en FPGA es HACER USO DE CLB QUE YA ESTÁN EXISTENTES EN FPGA?

Respuestas (1)

Tiene un dispositivo Zynq-7020, que contiene un chip FPGA Artix-7. El CLB para este FPGA se describe aquí . Es mucho más complejo de lo que imaginabas. El CLB contiene dos segmentos, y cada segmento tiene 4 LUT y 8 elementos de almacenamiento (flip-flops o pestillos).

La rebanada se parece aingrese la descripción de la imagen aquí

Además, cada LUT tiene dos salidas, O5 y O6. O5 está conectado a una "cadena de transporte" que proporciona una conexión muy corta a una tabla de búsqueda, segmento o CLB vecino. Esto está diseñado específicamente para ser la salida de acarreo de un sumador o contador.

Como lo mencionó Chris en los comentarios, en lugar de tratar de administrar toda esta complejidad usted mismo, con herramientas de síntesis modernas (es decir, herramientas desarrolladas en los últimos 20 años), por lo general logrará mejores resultados simplemente escribiendo en su Verilog que tratando de assign X = A + B;configurar el CLB usted mismo.