Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Verilog

Funciones matemáticas de Verilog

Las funciones matemáticas de Verilog se pueden usar en lugar de expresiones constantes y admiten tanto integer y real matemáticas.

Funciones matemáticas enteras

La función $clog2 devuelve el techo de log2 del argumento dado. Esto se usa típicamente para calcular el ancho mínimo requerido para direccionar una memoria de un tamaño dado.

Por ejemplo, si el diseño tiene 7 sumadores paralelos, entonces la cantidad mínima de bits necesarios para representar los 7 sumadores es $clog2 de 7 que da 3.

  
  
module des 
  #(parameter NUM_UNITS = 7) 
  
  // Use of this system function helps to reduce the 
  // number of input wires to this module
  (input [$clog2(NUM_UNITS)-1:0] active_unit);
  
  initial 
    $monitor("active_unit = %d", active_unit);
endmodule

`define NUM_UNITS 5

module tb;
  integer i;
  reg [`NUM_UNITS-1:0] 	active_unit;
  
  des #(.NUM_UNITS(`NUM_UNITS)) u0(active_unit);
  
  initial begin
    active_unit     = 1;     
	#10 active_unit = 7;
    #10 active_unit = 8;    
  end
endmodule

  

Tenga en cuenta que la señal active_unit tiene 3 bits para almacenar un total de 5 unidades.

Registro de simulación
xcelium> run
active_unit = 001
active_unit = 111
active_unit = 000
xmsim: *W,RNQUIE: Simulation is complete.

Funciones matemáticas reales

Estas funciones del sistema aceptan real argumentos y devolver un real número.

Función Descripción
$ln(x) Logaritmo natural log(x)
$log10(x) Logaritmo decimal log10(x)
exp(x) Exponencial de x (e x ) donde e=2.718281828...
raíz cuadrada(x) Raíz cuadrada de x
$pow(x, y) x y
$piso(x) Planta x
$ceil(x) Techo x
$sin(x) Seno de x donde x está en radianes
$cos(x) Coseno de x donde x está en radianes
$tan(x) Tangente de x donde x está en radianes
$asin(x) Arco-seno de x
$acos(x) Arco-coseno de x
$atán(x) Arco-tangente de x
$atan2(x, y) Arco-tangente de x/y
$hipot(x, y) Hipotenusa de x e y :sqrt(x x + y y )
$sinh(x) Seno hiperbólico de x
$cosh(x) Coseno Hiperbólico de x
$tanh(x) Tangente Hiperbólica de x
$asinh(x) Arco-seno hiperbólico de x
$acosh(x) Arco-coseno hiperbólico de x
$atanh(x) Arco-hiperbólica tangente de x
  
  

module tb;
  real x, y;
  
  initial begin
    x = 10000;
    $display("$log10(%0.3f) = %0.3f", x, $log10(x));
    
    x = 1;
    $display("$ln(%0.3f) = %0.3f", x, $ln(x));
    
    x = 2;
    $display("$exp(%0.3f) = %0.3f", x, $exp(x));
    
    x = 25;
    $display("$sqrt(%0.3f) = %0.3f", x, $sqrt(x));
    
    x = 5;
    y = 3;
    $display("$pow(%0.3f, %0.3f) = %0.3f", x, y, $pow(x, y));
    
    x = 2.7813;
    $display("$floor(%0.3f) = %0.3f", x, $floor(x));
    
    x = 7.1111;
    $display("$ceil(%0.3f) = %0.3f", x, $ceil(x));
    
    x = 30 * (22.0/7.0) / 180;   // convert 30 degrees to radians
    $display("$sin(%0.3f) = %0.3f", x, $sin(x));
    
    x = 90 * (22.0/7.0) / 180;
    $display("$cos(%0.3f) = %0.3f", x, $cos(x));
    
    x = 45 * (22.0/7.0) / 180;
    $display("$tan(%0.3f) = %0.3f", x, $tan(x));
    
    x = 0.5;
    $display("$asin(%0.3f) = %0.3f rad, %0.3f deg", x, $asin(x), $asin(x) * 7.0/22.0 * 180);
    
    x = 0;
    $display("$acos(%0.3f) = %0.3f rad, %0.3f deg", x, $acos(x), $acos(x) * 7.0/22.0 * 180);
    
    x = 1;
    $display("$atan(%0.3f) = %0.3f rad, %f deg", x, $atan(x), $atan(x) * 7.0/22.0 * 180);    
  end
endmodule


  
Registro de simulación
xcelium> run
$log10(10000.000) = 4.000
$ln(1.000) = 0.000
$exp(2.000) = 7.389
$sqrt(25.000) = 5.000
$pow(5.000, 3.000) = 125.000
$floor(2.781) = 2.000
$ceil(7.111) = 8.000
$sin(0.524) = 0.500
$cos(1.571) = -0.001
$tan(0.786) = 1.001
$asin(0.500) = 0.524 rad, 29.988 deg
$acos(0.000) = 1.571 rad, 89.964 deg
$atan(1.000) = 0.785 rad, 44.981895 deg
xmsim: *W,RNQUIE: Simulation is complete.


Verilog

  1. Tutorial de Verilog
  2. Concatenación Verilog
  3. Asignaciones de Verilog
  4. Bloqueo y no bloqueo de Verilog
  5. Funciones de Verilog
  6. Tarea Verilog
  7. Generador de reloj Verilog
  8. Formato de hora de Verilog
  9. Alcance de la escala de tiempo de Verilog
  10. Operaciones de E/S de archivos de Verilog
  11. Verilog Hola Mundo