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

skalar dan vektor Verilog

Verilog perlu mewakili bit individu serta kelompok bit. Misalnya, elemen sekuensial bit tunggal adalah flip-flop. Namun elemen sekuensial 16-bit adalah register yang dapat menampung 16 bit. Untuk tujuan ini, Verilog memiliki skalar dan vektor jaring dan variabel.

Skalar dan Vektor

Jaring atau reg deklarasi tanpa spesifikasi rentang dianggap lebar 1-bit dan merupakan skalar . Jika rentang ditentukan, maka net atau reg menjadi entitas multibit yang dikenal sebagai vektor .

scalar and vector in verilog
  
  
	wire 	    o_nor;           // single bit scalar net
	wire [7:0]  o_flop;          // 8-bit vector net
	reg         parity;          // single bit scalar variable
	reg  [31:0] addr;            // 32 bit vector variable to store address

  

Rentang memberikan kemampuan untuk menangani bit individu dalam vektor. Bit paling signifikan dari vektor harus ditentukan sebagai nilai tangan kiri dalam rentang sementara bit paling signifikan dari vektor harus ditentukan di sebelah kanan.

  
  
	wire  [msb:lsb]   name;
	integer           my_msb;
	
	wire [15:0]        priority;      // msb = 15, lsb = 0
	wire [my_msb: 2]   prior;         // illegal

  

Jaring lebar 16 bit yang disebut prioritas akan dibuat dalam contoh di atas. Perhatikan bahwa msb dan lsb harus berupa ekspresi konstan dan tidak dapat diganti dengan variabel. Tetapi mereka dapat berupa nilai bilangan bulat apa saja - positif, negatif, atau nol; dan lsb nilai bisa lebih besar dari, sama dengan atau kurang dari nilai msb.

Pilihan bit

Setiap bit dalam variabel vektor dapat dipilih secara individual dan diberi nilai baru seperti yang ditunjukkan di bawah ini. Ini disebut sebagai pilihan bit . Jika bit-select di luar batas atau bit-select x atau z , maka nilai yang dikembalikan akan menjadi x .

bit-select in verilog
  
  
	reg [7:0]      addr;         // 8-bit reg variable [7, 6, 5, 4, 3, 2, 1, 0]
	
	addr [0] = 1;                // assign 1 to bit 0 of addr
	addr [3] = 0;                // assign 0 to bit 3 of addr
	addr [8] = 1;                // illegal : bit8  does not exist in addr

  

Pilihan sebagian

part-select in verilog

Rentang bit yang berdekatan dapat dipilih dan dikenal sebagai pilihan bagian . Ada dua jenis pemilihan bagian, satu dengan pemilihan bagian yang konstan dan yang lainnya dengan pemilihan bagian yang diindeks.

  
  
	reg [31:0]    addr;
	
	addr [23:16] = 8'h23;         // bits 23 to 16 will be replaced by the new value 'h23 -> constant part-select

  

Memiliki pemilihan bagian variabel memungkinkannya digunakan secara efektif dalam loop untuk memilih bagian vektor. Meskipun bit awal dapat bervariasi, lebarnya harus konstan.

[<start_bit> +: <width>]     // part-select increments from start-bit
[<start_bit> -: <width>]     // part-select decrements from start-bit
  
  
module des;
  reg [31:0]  data;
  int         i;
  
  initial begin
    data = 32'hFACE_CAFE;
    for (i = 0; i < 4; i++) begin
      $display ("data[8*%0d +: 8] = 0x%0h", i, data[8*i +: 8]);
    end
    
    $display ("data[7:0]   = 0x%0h", data[7:0]);
    $display ("data[15:8]  = 0x%0h", data[15:8]);
    $display ("data[23:16] = 0x%0h", data[23:16]);
    $display ("data[31:24] = 0x%0h", data[31:24]);
  end
  
endmodule

  
Log Simulasi
ncsim> run
data[8*0 +: 8] = 0xfe              // ~ data [8*0+8 : 8*0]
data[8*1 +: 8] = 0xca              // ~ data [8*1+8 : 8*1]
data[8*2 +: 8] = 0xce              // ~ data [8*2+8 : 8*2]
data[8*3 +: 8] = 0xfa              // ~ data [8*3+8 : 8*3]

data[7:0]   = 0xfe
data[15:8]  = 0xca
data[23:16] = 0xce
data[31:24] = 0xfa
ncsim: *W,RNQUIE: Simulation is complete.

Kesalahan Umum

  
  
module tb;
   reg [15:0]    data;
   
   initial begin
      $display ("data[0:9] = 0x%0h", data[0:9]);   // Error : Reversed part-select index expression ordering
   end
endmodule

  

Verilog

  1. Tutorial Verilog
  2. Rangkaian Verilog
  3. Tugas Verilog
  4. Pemblokiran &Non-Pemblokiran Verilog
  5. Fungsi Verilog
  6. Tugas Verilog
  7. Penundaan Penugasan Inter dan Intra Verilog
  8. Generator Jam Verilog
  9. Fungsi Matematika Verilog
  10. Format Waktu Verilog