Processing math: 100%

8 votos

¿Cómo se implementan las declaraciones de Verilog "siempre" en hardware?

La declaración Verilog always , a saber

 always @(/* condition */)
    /* block of code */
 

ejecuta block of code siempre que se cumpla condition . ¿Cómo se implementa dicho bloque always en hardware?

16voto

maxpower47 Puntos 176

En primer lugar, tenga en cuenta que no todos los Verilog diseños son synthesizable. Generalmente, sólo un subconjunto específico de las construcciones pueden ser utilizados en un diseño que se realiza en el hardware.

Una restricción importante que aparece es que cada reg variable sólo puede ser asignado a más de un always declaración. En otras palabras, regs tienen afinidad always bloques.

Los siguientes tipos de always bloques en general puede ser utilizado.

always @(*) begin
    // combinatorial
end

always @(posedge clk) begin
    // sequential
end

En el primer caso, el * indica que el bloque debe ser ejecutado cada vez que cualquier señal utilizada en el bloque de cambios o, equivalentemente, que el bloque debe ser ejecutado de forma continua. Por lo tanto, regs que tienen afinidad de combinatoria always bloques se implementan como señales calculadas a partir de otras señales usando la lógica combinatoria, es decir, puertas.

Los registros que tienen afinidad a always bloques de este último tipo, por otro lado, son las salidas de los D flip-flops que se registró en el flanco ascendente de la clk (flanco de bajada si negedge se utiliza). Las entradas de los flip-flops son, de nuevo, calculada con la lógica combinatoria de otras señales.

Considere el siguiente, tanto artificial ejemplo.

reg out, out_n;
always @(*) begin
    out_n = !out;
end
always @(posedge clk) begin
    out <= !out;
end

Aquí, out_n está asociado con la primera always bloque, out con el segundo. out_n será implementada con una sola NO la puerta que va a la unidad out_n y ser impulsado desde out (tenga en cuenta que es un puro de la lógica combinatoria). Por otro lado, out será impulsado por un flip-flop en la velocidad de reloj de clk. La entrada del flip-flop volverá a ser computada por una puerta not desde out (que es impulsado por el mencionado flip-flop). La optimización de los sintetizadores se combinan las dos NO las puertas y el uso de una puerta not y un flip-flop.

Dependiendo del hardware que se tienen disponibles otros tipos de construcciones que se pueden utilizar. Por ejemplo, si el flip-flops tienen asincrónica restablece, la siguiente construcción es también synthesizable.

always @(posedge clk or posedge rst) begin
    if (rst)
        // reset
    else
        // sequential
end

2voto

RWH Puntos 21

Un always bloque es comúnmente usado para describir un flip-flop, un seguro o un multiplexor. El código sería implementado con un flip-flop, un seguro o un multiplexor.

En una FPGA de un flip-flop y un pestillo en general son sólo dos configuraciones diferentes de una más general-propósito registrar el dispositivo. Un multiplexor sería construido a partir de uno o más de uso general de la lógica de elementos (tablas de búsqueda).

En general, hay dos maneras de ir sobre diseño con Verilog:

  1. Visualizar la lógica que usted desea en términos de compuertas y registros, luego de averiguar cómo describirlo en Verilog. La síntesis de la guía de los libros de la FPGA vendedores o herramienta de síntesis vendedores de dar la caldera de la placa para las estructuras más comunes es posible que desee trabajar con.

  2. Acaba de escribir Verilog y no te preocupes acerca de lo que el hardware subyacente parece. Sin embargo, incluso si usted hace esto, usted todavía tiene que saber qué es y qué no es synthesizable. Así que, de nuevo, usted va a mirar a la plantilla proporcionada por la herramienta de proveedores y adaptarlo a su aplicación.

EDITAR

Avakar la respuesta es mucho mejor para tu pregunta, pero esto generó una interesante discusión acerca de las diferencias entre Xilinx y Altera así que no voy a borrar.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X