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

Memahami Port Verilog: Input, Output, dan Komunikasi Modul

Port adalah seperangkat sinyal yang bertindak sebagai input dan output untuk modul tertentu dan adalah cara utama untuk berkomunikasi dengannya. Bayangkan modul sebagai chip terfabrikasi yang ditempatkan pada PCB dan menjadi cukup jelas bahwa satu-satunya cara untuk berkomunikasi dengan chip adalah melalui pinnya. Port mirip pin dan digunakan oleh desain untuk mengirim dan menerima sinyal dari dunia luar.

Jenis Port

Port Deskripsi
Input Modul desain hanya dapat menerima nilai dari luar menggunakan port input mereka
Output Modul desain hanya dapat mengirim nilai ke luar menggunakan port output mereka
Inout Modul desain dapat mengirim atau menerima nilai menggunakan port inout mereka

Port secara default dianggap sebagai net tipe wire.

Sintaks

Port yang dideklarasikan sebagai inout dapat bertindak sebagai input dan output.

  input [net_type] [range] list_of_names; // Port input inout [net_type] [range] list_of_names; // Port input & output output [net_type] [range] list_of_names; // Port output yang dijalankan oleh wire output [var_type] [range] list_of_names; // Port output yang dijalankan oleh variabel  

Contoh

Dalam kode yang ditunjukkan di bawah ini, ada tiga port input, satu port output dan satu port inout.

  module my_design ( input wire clk, input en, input rw, inout [15:0] data, output int ); // Perilaku desain sebagai kode Verilog endmodule  

Ilegal untuk menggunakan nama yang sama untuk beberapa port.

  input aport; // Deklarasi pertama - valid input aport; // Error - sudah dideklarasikan output aport; // Error - sudah dideklarasikan  

Port bertanda

Atribut signed dapat dilampirkan ke deklarasi port atau deklarasi net/reg atau keduanya. Net implisit secara default unsigned.

  module ( input a, b, output c); // port a, b, dan c secara default unsigned endmodule  

Jika salah satu deklarasi net/reg memiliki atribut signed, maka yang lain juga akan dianggap bertanda.

  module ( input signed a, b, output c); wire a, b; // a, b bertanda dari deklarasi port reg signed c; // c bertanda dari deklarasi reg endmodule  

Variasi Port

Verilog 1995

Verilog telah mengalami beberapa revisi dan versi IEEE asli pada tahun 1995 memiliki cara berikut untuk deklarasi port. Di sini, deklarasi modul harus terlebih dahulu mencantumkan nama port dalam kurung dan kemudian arah port tersebut didefinisikan nanti dalam tubuh modul.

  module test (a, b, c); input [7:0] a; // input "a" dan "b" adalah wire input [7:0] b; output [7:0] c; // output "c" secara default adalah wire // Masih, Anda dapat mendeklarasikannya lagi sebagai wire untuk menghindari kebingungan wire [7:0] a; wire [7:0] b; wire [7:0] c; endmodule module test (a, b, c); input [7:0] a, b; output [7:0] c; // Secara default c adalah tipe wire // port "c" diubah menjadi tipe reg reg [7:0] c; endmodule  

Verilog 2001 dan seterusnya

Penamaan port gaya ANSI-C diperkenalkan pada tahun 2001 dan memungkinkan tipe ditentukan dalam daftar port.

  module test ( input [7:0] a, b, // "b" dianggap input 8-bit output [7:0] c); // Konten desain endmodule module test ( input wire [7:0] a, input wire [7:0] b, output reg [7:0] c); // Konten desain endmodule  

Jika deklarasi port mencakup tipe net atau variabel, maka port tersebut dianggap sepenuhnya dideklarasikan. Ilegal untuk mendeklarasikan ulang port yang sama dalam deklarasi tipe net atau variabel.

  module test ( input [7:0] a, // a, e secara implisit dideklarasikan tipe wire output reg [7:0] e ); wire signed [7:0] a; // ilegal - deklarasi a sudah lengkap -> tergantung simulator wire [7:0] e; // ilegal - deklarasi e sudah lengkap // Sisa kode desain endmodule  

Jika deklarasi port tidak mencakup tipe net atau variabel, maka port dapat dideklarasikan lagi dalam deklarasi tipe net atau variabel.

  module test ( input [7:0] a, output [7:0] e); reg [7:0] e; // Okay - net_type tidak dideklarasikan sebelumnya // Sisa kode desain endmodule  

Verilog

  1. Menguasai Verilog: Tutorial Lengkap untuk Desain Sirkuit Digital
  2. Menguasai Konkatenasi Verilog: Panduan Praktis
  3. Memahami Penugasan Verilog: Jenis, Sintaks, dan Praktik Terbaik
  4. Perbedaan Kunci Penugasan Blokir dan Non-Blokir Verilog
  5. Menguasai Fungsi Verilog untuk Desain RTL yang Efisien
  6. Memahami Tugas Verilog: Fungsi vs Tugas, Sintaks, dan Penggunaan
  7. Generator Jam Verilog: Panduan Desain dan Implementasi
  8. Menguasai Fungsi Matematika Verilog untuk Desain Perangkat Keras yang Efisien
  9. Menguasai $timeformat Verilog: Kontrol Presisi dan Tampilan
  10. Memahami dan Mencetak Timescale Verilog pada Setiap Cakupan