Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Verilog

Fungsi Matematika Verilog

Fungsi matematika Verilog dapat digunakan sebagai pengganti ekspresi konstan dan mendukung keduanya bilangan bulat dan nyata matematika.

Fungsi Matematika Bilangan Bulat

Fungsi $clog2 mengembalikan langit-langit log2 dari argumen yang diberikan. Ini biasanya digunakan untuk menghitung lebar minimum yang diperlukan untuk menangani memori dengan ukuran tertentu.

Misalnya, jika desain memiliki 7 penambah paralel, maka jumlah bit minimum yang diperlukan untuk mewakili semua 7 penambah adalah $clog2 dari 7 yang menghasilkan 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

  

Perhatikan bahwa sinyal active_unit memiliki 3-bit untuk menyimpan total 5 unit.

Log Simulasi
xcelium> run
active_unit = 001
active_unit = 111
active_unit = 000
xmsim: *W,RNQUIE: Simulation is complete.

Fungsi Matematika Nyata

Fungsi sistem ini menerima nyata argumen dan kembalikan nyata nomor.

Fungsi Deskripsi $ln(x) Log logaritma natural(x) $log10(x) Log Logaritma Desimal10(x) exp(x) Eksponensial dari x (e x ) di mana e=2.718281828... sqrt(x) Akar kuadrat dari x $pow(x, y) x y $floor(x) Lantai x $ceil(x) Langit x $sin(x) Sin dari x dimana x dalam radian $cos(x) Cosinus dari x dimana x dalam radian $tan(x) Singgung dari x dimana x dalam radian $asin(x) Sinus Busur dari x $acos(x) Busur-Cosinus dari x $atan(x) Arc-tangen dari x $atan2(x, y) Arc-tangen dari x/y $hypot(x, y) Hipotenusa dari x dan y :kuadrat(x x + y y ) $sinh(x) Sinus Hiperbolik dari x $cosh(x) Hyperbolic-Cosinus dari x $tanh(x) Hyperbolic-Tangent dari x $asinh(x) Sinus lengkung-hiperbolik dari x $acosh(x) Cosinus busur-hiperbolik dari x $atanh(x) Singgung busur-hiperbolik dari 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


  
Log Simulasi
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 Verilog
  2. Rangkaian Verilog
  3. Tugas Verilog
  4. Pemblokiran &Non-Pemblokiran Verilog
  5. Fungsi Verilog
  6. Tugas Verilog
  7. Generator Jam Verilog
  8. Format Waktu Verilog
  9. Lingkup Skala Waktu Verilog
  10. Operasi File IO Verilog