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

Menguasai Tipe Signed dan Unsigned dalam VHDL: Panduan Praktis

Dalam VHDL, signed dan unsigned adalah vektor bit khusus yang memungkinkan Anda melakukan aritmetika pada bus data. Tidak seperti std_logic_vector, yang ideal untuk merutekan sinyal tetapi tidak untuk perhitungan, tipe ini ditafsirkan sebagai nilai numerik oleh kompiler.

Mencoba menambahkan std_logic_vector akan memicu kesalahan kompilasi: No feasible entries for infix operator "+", karena alat tidak dapat menentukan cara memperlakukan pola bit mentah sebagai angka.

Bagian dari seri Tutorial VHDL Dasar.

Untuk mengaktifkan aritmetika, deklarasikan vektor sebagai signed atau unsigned:

signal <name> : signed(<N-1> downto 0) := <initial_value>; signal <name> : unsigned(<N-1> downto 0) := <initial_value>;

Rentang dapat menggunakan to atau downto, tetapi downto 0 adalah yang paling umum. Nilai awal opsional; jika dihilangkan, semua bit default ke 'U'.

Mengapa memilih signed/unsigned daripada integer tradisional? Desainer digital sering membutuhkan kontrol yang tepat atas lebar bit. Tipe vektor ini membungkus pada overflow, sedangkan integer akan memicu kesalahan waktu eksekusi jika nilai melebihi batasnya. Selain itu, vektor dapat berisi metanilai seperti 'U' dan 'X', yang membantu mengungkap bug desain lebih awal.

Demonstrasi Video

Dalam video pendamping, kita menjelajahi bagaimana sinyal signed dan unsigned berperilaku serupa dan di mana mereka berbeda.

Kode Contoh

library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity T12_SignedUnsignedTb is end entity; architecture sim of T12_SignedUnsignedTb is signal UnsCnt : unsigned(7 downto 0) := (others => '0'); signal SigCnt : signed(7 downto 0) := (others => '0'); signal Uns4 : unsigned(3 downto 0) := "1000"; signal Sig4 : signed(3 downto 0) := "1000"; signal Uns8 : unsigned(7 downto 0) := (others => '0'); signal Sig8 : signed(7 downto 0) := (others => '0'); begin process is begin wait for 10 ns; -- Wrapping counter UnsCnt <= UnsCnt + 1; SigCnt <= SigCnt + 1; -- Adding signals Uns8 <= Uns8 + Uns4; Sig8 <= Sig8 + Sig4; end process; end architecture; 

Analisis Gelombang

Gelombang ModelSim, diperbesar pada peristiwa kunci, menampilkan semua nilai dalam heksadesimal untuk keterangannya:

Menguasai Tipe Signed dan Unsigned dalam VHDL: Panduan Praktis

Dalam contoh penghitung, baik UnsCnt maupun SigCnt dimulai dari 0, bertambah hingga FF (desimal 255), lalu kembali ke 0—menunjukkan perilaku membungkus yang sama.

Sinyal 4-bit Uns4 dan Sig4 keduanya menahan nilai biner 1000, yang adalah desimal 8 untuk unsigned dan –8 untuk signed (two's complement).

Saat menambahkan bilangan 4-bit ini ke akumulasi 8-bit, perpanjangan tanda masuk ke dalam perhitungan. Bilangan unsigned diperlengkapi dengan nol, sedangkan bilangan signed diperlengkapi dengan bit tanda. Hasilnya adalah Uns8 bertambah 8, sedangkan Sig8 berkurang 8.

Memvisualisasikan proses perpanjangan tanda menjelaskan perbedaannya:

Menguasai Tipe Signed dan Unsigned dalam VHDL: Panduan Praktis

Menguasai Tipe Signed dan Unsigned dalam VHDL: Panduan Praktis

Hal Utama yang Perlu Diingat

Lanjutkan ke tutorial berikutnya untuk wawasan yang lebih dalam.

VHDL

  1. Menguasai Tipe Signed vs. Unsigned dalam VHDL: Wawasan Praktis
  2. Memanfaatkan Prosedur Dalam Proses untuk Desain FSM VHDL yang Lebih Bersih
  3. Menggunakan Fungsi Tidak Murni di VHDL: Meningkatkan Keterbacaan dan Pemeliharaan FSM
  4. Menguasai Fungsi VHDL: Panduan Praktis untuk Desain Efisien
  5. Menggunakan Prosedur dalam VHDL: Sederhanakan Desain dengan Kode yang Dapat Digunakan Kembali
  6. Memanfaatkan Konstanta dan Generic Map dalam VHDL untuk Desain Modul Fleksibel
  7. Menguasai Instantiasi Port Map dalam VHDL: Panduan Praktis
  8. Panduan Setup Editor & Simulator VHDL Gratis bagi Mahasiswa
  9. Mikrokontroler PIC18: Fitur, Performa, dan Cara Menggunakannya
  10. Memahami Reference Designator: Cara Melabeli Koneksi Rangkaian Papan Sirkuit Cetak