Altifigence Academy

5 / 37 · Konsep

logic, wire, X/Z dan lebar eksplisit

Pisahkan tipe, penggerak dan penyimpanan serta uji literal, perbandingan, perluasan dan nilai tak diketahui.

Tipe, penggerak dan penyimpanan adalah pertanyaan berbeda

logic adalah tipe empat keadaan; wire menggambarkan koneksi net yang juga dapat memuat empat keadaan. Variabel logic bisa menjadi hasil kombinasional atau keadaan clock sesuai aturan penggerak. Nama tidak menjamin flip-flop: cari penugasan kontinu, proses kombinasional atau proses tepi. Gunakan satu sumber yang direncanakan per sinyal biasa. Net terselesaikan dengan banyak penggerak dan antarmuka dua arah memerlukan kontrak listrik dan alat lain, di luar contoh ini.

Tetapkan lebar dan interpretasi

logic [7:0] u memiliki delapan bit tanpa tanda; logic signed [7:0] s menafsirkan bit sama sebagai komplemen dua. 8'hFF bernilai 255 untuk u dan −1 untuk s. Vektor packed mengelompokkan bit, bukan delapan nilai berurutan dalam waktu.

SystemVerilog
module typed_examples (
  input  logic [3:0] a, b,
  input  logic signed [7:0] s,
  output logic [4:0] full_sum,
  output logic signed [8:0] extended_s,
  output logic negative,
  output logic any_bit, all_bits, parity
);
  assign full_sum = {1'b0, a} + {1'b0, b};
  assign extended_s = {s[7], s};
  assign negative = s < 8'sd0;
  assign any_bit = |a;
  assign all_bits = &a;
  assign parity = ^a;
endmodule

extended_s mengulang bit tanda; menambah nol mengubah −1 menjadi +255. Konkatenasi adalah ekspresi tanpa tanda sehingga aritmetika signed perlu interpretasi eksplisit atau perantara sesuai. Di sini pola yang diinginkan ditugaskan ke tujuan signed. Gunakan 4'd15,8'hFF,8'sd0 saat lebar penting. Bilangan tanpa ukuran dapat memperlebar ekspresi: periksa kedua operand dan konteks penugasan, bukan hanya sisi kiri.

Tiga keluarga operator

a & b bekerja per bit; a && b memeriksa apakah kedua vektor benar dan menghasilkan satu bit;&a mereduksi dengan syarat seluruh bit 1. a=0011, b=0101 menghasilkan 0001,1,0. ^a memberi paritas,0 untuk 0011. Pecah ekspresi ambigu menjadi perantara agar rentang tiap sinyal tercatat.

Tak diketahui bukan tegangan ketiga

X berarti tak diketahui, Z impedansi tinggi, bukan nilai tegangan tepat. Model dua keadaan tidak membuktikan empat keadaan. Lakukan reset eksplisit alih-alih menyembunyikan X sebagai nol. == dapat memberi X bila keputusan tak pasti; actual !== expected pada testbench menandai X/Z terhadap harapan diketahui. Case equality bukan pendeteksi X fisik pada perangkat keras umum.

Praktik: perluas, jumlahkan, bandingkan

a=15, b=1 memberi full_sum=10000. s=8'h80 memberi extended_s=110000000, negative=1; s=8'h7F memberi 001111111, negative=0. Uji nol, maksimum positif, minimum negatif dan −1. Ganti dengan {1'b0, s} dan pastikan kegagalan negatif terdeteksi. Ganti !== dengan != lalu masukkan X pada actual: kondisi tak diketahui bisa tidak melaporkan kegagalan yang dimaksud.

Pilihan berlaku di peramban ini. Ubah kapan saja di bagian bawah halaman.