Verilog - comparación aritmética con parte del registro

0

Nuevo en Verilog / HDL y tengo un problema cada vez que intento realizar un condicional if / else entre dos registros de diferente tamaño. La síntesis se completa pero nunca puedo hacer que encaje.

Por ejemplo, tengo un registro de 8 bits con opciones. Los 4 bits más bajos son un número entre 0 y 15 que debo probar. ¿Cuál es la forma correcta de hacer esto?

reg [7:0] options;
reg [3:0] conuter;

always @(posedge clk)
begin
    if(conuter >= options[3:0])
        ... do somthing... 
end

También lo he intentado de esta manera.

reg [7:0] options;
wire [3:0] options_lowerpartof;
assign options_partof = options[3:0];

always @(posedge clk)
begin
    if(conuter >= options_lowerpartof)
        ... do somthing... 
end
    
pregunta dave.zap

1 respuesta

0

Ambas opciones pueden ayudarlo a comparar la parte del registro. Lo principal que debe tener en cuenta es que los cables son elementos en Verilog que se utilizan para conectar los puertos de entrada y salida de una instanciación de módulo junto con algún otro elemento en su diseño, por lo que es mejor usarlo

wire [3:0] options_lowerpartof; assign options_partof = options[3:0];

solo cuando la única tarea a realizar es la comparación. Aquí, la palabra clave 'cable' ayuda a conectar dos módulos diferentes juntos (este es un concepto de programación modular en Verilog).

    
respondido por el Sumit Panse

Lea otras preguntas en las etiquetas