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

Menguasai Pernyataan Blok Verilog: Eksekusi Sekuensial & Parallel

Ada cara untuk mengelompokkan sekumpulan pernyataan yang secara sintaksis setara dengan satu pernyataan dan dikenal sebagai block statements. Terdapat dua jenis block statements: sekuensial dan parallel.

Sekuensial

Pernyataan dibungkus menggunakan kata kunci begin dan end dan akan dieksekusi secara berurutan dalam urutan yang diberikan, satu per satu. Nilai keterlambatan diperlakukan relatif terhadap waktu eksekusi pernyataan sebelumnya. Setelah semua pernyataan dalam blok dieksekusi, kontrol dapat dialihkan ke tempat lain.

  module design0; bit [31:0] data; // "initial" block dimulai pada waktu 0 initial begin // Setelah 10 unit waktu, data menjadi 0xfe #10 data = 8'hfe; $display ("[Time=%0t] data=0x%0h", $time, data); // Setelah 20 unit waktu, data menjadi 0x11 #20 data = 8'h11; $display ("[Time=%0t] data=0x%0h", $time, data); end endmodule  

Dalam contoh di atas, pernyataan pertama dalam blok begin-end akan dieksekusi pada 10 unit waktu, dan pernyataan kedua pada 30 unit waktu karena sifat relatif. Ini adalah 20 unit waktu setelah eksekusi pernyataan sebelumnya.

Simulation Log
 ncsim> run [Time=10] data=0xfe [Time=30] data=0x11 ncsim: *W,RNQUIE: Simulasi selesai. 

Parallel

Sebuah blok parallel dapat mengeksekusi pernyataan secara bersamaan dan kontrol keterlambatan dapat digunakan untuk memberikan pengurutan waktu dari penugasan. Pernyataan diluncurkan secara parallel dengan membungkus mereka dalam kata kunci fork dan join.

  initial begin #10 data = 8'hfe; fork #20 data = 8'h11; #10 data = 8'h00; join end  

Dalam contoh di atas, blok fork-join akan diluncurkan setelah mengeksekusi pernyataan pada 10 unit waktu. Pernyataan di dalam blok ini akan dieksekusi secara paralel dan pernyataan pertama yang akan diluncurkan adalah yang data ditugaskan nilai 8'h00 karena keterlambatannya adalah 10 unit waktu setelah peluncuran fork-join. Setelah 10 unit waktu lagi, pernyataan pertama akan diluncurkan dan data akan mendapatkan nilai 8'h11.

  initial begin #10 data = 8'hfe; fork #10 data = 8'h11; begin #20 data = 8'h00; #30 data = 8'haa; end join end  

Ada blok begin-end dalam contoh di atas, dan semua pernyataan di dalam blok begin-end akan dieksekusi secara berurutan, tetapi blok itu sendiri akan diluncurkan secara paralel bersama dengan pernyataan lain. Jadi, data akan mendapatkan 8'h11 pada 20 unit waktu, 8'h00 pada 30 unit waktu dan 8'haa pada 60 unit waktu.

Penamaan blok

Kedua blok sekuensial dan parallel dapat diberi nama dengan menambahkan : name_of_block setelah kata kunci begin dan fork. Dengan demikian, blok dapat direferensi dalam pernyataan disable.

  begin : name_seq [statements] end fork : name_fork [statements] join  

Verilog

  1. Mempercepat Pembuatan Wawasan melalui Persiapan Data Otomatis
  2. Menguasai Verilog: Tutorial Lengkap untuk Desain Sirkuit Digital
  3. Menguasai Konkatenasi Verilog: Panduan Praktis
  4. Dasar-dasar Verilog: Ringkasan Ringkas
  5. Memahami Penugasan Verilog: Jenis, Sintaks, dan Praktik Terbaik
  6. Perbedaan Kunci Penugasan Blokir dan Non-Blokir Verilog
  7. Menguasai Aliran Kontrol Verilog: IF-ELSE, Case, dan Lainnya
  8. Menguasai Fungsi Verilog untuk Desain RTL yang Efisien
  9. Memahami Semantik Jadwal Verilog: Waktu, Peristiwa, dan Urutan Eksekusi
  10. Tingkatkan Sistem S&OP, Data, dan Perencanaan Anda untuk Kesuksesan di Masa Depan