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

Panduan Lengkap Konversi Tipe VHDL dengan Numeric_Std dan Std_Logic_Arith

Menggunakan Kedua Berkas Paket Numeric_Std dan Std_Logic_Arith

Di bawah ini Anda akan menemukan konversi tipe VHDL yang paling sering digunakan. Artikel ini dibagi menjadi dua bagian: bagian pertama menampilkan konversi yang bergantung pada paket numeric_std modern, sementara bagian kedua menunjukkan konversi setara menggunakan paket legacy std_logic_arith. Meskipun banyak desainer masih menggunakan std_logic_arith, praktik terbaik industri merekomendasikan numeric_std karena kejelasan dan portabilitasnya.

Perhatikan bahwa banyak contoh menggunakan atribut VHDL 'length, yang memastikan kode Anda menyesuaikan secara otomatis dengan perubahan lebar vektor—strategi kunci untuk desain yang dapat digunakan ulang dan dapat dipelihara.

Contoh Konversi menggunakan Numeric Std

Contoh Konversi menggunakan Std_Logic_Arith

Konversi dari Integer ke Signed menggunakan Numeric_Std

Fungsi to_signed memerlukan dua argumen: integer yang akan dikonversi dan lebar vektor yang diinginkan. Menggunakan atribut 'length menjaga kode tetap fleksibel.

signal input_3 : integer; signal output_3 : signed(3 downto 0); output_3 <= to_signed(input_3, output_3'length);

Konversi dari Integer ke Std_Logic_Vector menggunakan Numeric_Std

Tentukan apakah rentang integer adalah signed atau unsigned. Untuk nilai positif saja gunakan to_unsigned; untuk nilai signed gunakan to_signed. Kedua fungsi menerima nilai dan lebar target.

signal input_1 : integer; signal output_1a : std_logic_vector(3 downto 0); signal output_1b : std_logic_vector(3 downto 0); -- Hanya integer positif output_1a <= std_logic_vector(to_unsigned(input_1, output_1a'length)); -- Integer signed atau unsigned output_1b <= std_logic_vector(to_signed(input_1, output_1b'length));

Konversi dari Integer ke Unsigned menggunakan Numeric_Std

signal input_2 : integer; signal output_2 : unsigned(3 downto 0); output_2 <= to_unsigned(input_2, output_2'length);

Konversi dari Std_Logic_Vector ke Integer menggunakan Numeric_Std

Pertama cast vektor ke unsigned atau signed tergantung pada semantik data, lalu terapkan to_integer.

signal input_4 : std_logic_vector(3 downto 0); signal output_4a : integer; signal output_4b : integer; -- Kasus unsigned output_4a <= to_integer(unsigned(input_4)); -- Kasus signed output_4b <= to_integer(signed(input_4));

Konversi dari Std_Logic_Vector ke Signed menggunakan Numeric_Std

signal input_6 : std_logic_vector(3 downto 0); signal output_6 : signed(3 downto 0); output_6 <= signed(input_6);

Konversi dari Std_Logic_Vector ke Unsigned menggunakan Numeric_Std

signal input_5 : std_logic_vector(3 downto 0); signal output_5 : unsigned(3 downto 0); output_5 <= unsigned(input_5);

Konversi dari Signed ke Integer menggunakan Numeric_Std

signal input_10 : signed(3 downto 0); signal output_10 : integer; output_10 <= to_integer(input_10);

Konversi dari Signed ke Std_Logic_Vector menggunakan Numeric_Std

signal input_11 : signed(3 downto 0); signal output_11 : std_logic_vector(3 downto 0); output_11 <= std_logic_vector(input_11);

Konversi dari Signed ke Unsigned menggunakan Numeric_Std

signal input_12 : signed(3 downto 0); signal output_12 : unsigned(3 downto 0); output_12 <= unsigned(input_12);

Konversi dari Unsigned ke Integer menggunakan Numeric_Std

signal input_7 : unsigned(3 downto 0); signal output_7 : integer; output_7 <= to_integer(input_7);

Konversi dari Unsigned ke Signed menggunakan Numeric_Std

signal input_9 : unsigned(3 downto 0); signal output_9 : signed(3 downto 0); output_9 <= signed(input_9);

Konversi dari Unsigned ke Std_Logic_Vector menggunakan Numeric_Std

signal input_8 : unsigned(3 downto 0); signal output_8 : std_logic_vector(3 downto 0); output_8 <= std_logic_vector(input_8);

Konversi dari Integer ke Signed menggunakan Std_Logic_Arith

signal input_3 : integer; signal output_3 : signed(3 downto 0); output_3 <= conv_signed(input_3, output_3'length);

Konversi dari Integer ke Std_Logic_Vector menggunakan Std_Logic_Arith

signal input_1 : integer; signal output_1 : std_logic_vector(3 downto 0); output_1 <= conv_std_logic_vector(input_1, output_1'length);

Konversi dari Integer ke Unsigned menggunakan Std_Logic_Arith

signal input_2 : integer; signal output_2 : unsigned(3 downto 0); output_2 <= conv_unsigned(input_2, output_2'length);

Konversi dari Std_Logic_Vector ke Integer menggunakan Std_Logic_Arith

signal input_4 : std_logic_vector(3 downto 0); signal output_4a : integer; signal output_4b : integer; -- Kasus unsigned output_4a <= conv_integer(unsigned(input_4)); -- Kasus signed output_4b <= conv_integer(signed(input_4));

Konversi dari Std_Logic_Vector ke Signed menggunakan Std_Logic_Arith

signal input_6 : std_logic_vector(3 downto 0); signal output_6 : signed(3 downto 0); output_6 <= signed(input_6);

Konversi dari Std_Logic_Vector ke Unsigned menggunakan Std_Logic_Arith

signal input_5 : std_logic_vector(3 downto 0); signal output_5 : unsigned(3 downto 0); output_5 <= unsigned(input_5);

Konversi dari Signed ke Integer menggunakan Std_Logic_Arith

signal input_10 : signed(3 downto 0); signal output_10 : integer; output_10 <= conv_integer(input_10);

Konversi dari Signed ke Std_Logic_Vector menggunakan Std_Logic_Arith

signal input_11 : signed(3 downto 0); signal output_11 : std_logic_vector(3 downto 0); output_11 <= std_logic_vector(input_11);

Konversi dari Signed ke Unsigned menggunakan Std_Logic_Arith

signal input_12 : signed(3 downto 0); signal output_12 : unsigned(3 downto 0); output_12 <= unsigned(input_12);

Konversi dari Unsigned ke Integer menggunakan Std_Logic_Arith

signal input_7 : unsigned(3 downto 0); signal output_7 : integer; output_7 <= conv_integer(input_7);

Konversi dari Unsigned ke Signed menggunakan Std_Logic_Arith

signal input_9 : unsigned(3 downto 0); signal output_9 : signed(3 downto 0); output_9 <= signed(input_9);

Konversi dari Unsigned ke Std_Logic_Vector menggunakan Std_Logic_Arith

signal input_8 : unsigned(3 downto 0); signal output_8 : std_logic_vector(3 downto 0); output_8 <= std_logic_vector(input_8);


Halaman Nandland yang Paling Populer

VHDL

  1. Pengantar VHDL: Membuat AND Gate Pertama Anda
  2. Contoh Prosedur VHDL: Meningkatkan Vektor Logika Standar
  3. Memanfaatkan Rekaman VHDL untuk Antarmuka FIFO Bersih dan Reusable
  4. Menguasai Tipe Signed vs. Unsigned dalam VHDL: Wawasan Praktis
  5. Variabel VHDL Dijelaskan: Contoh Praktis & Aturan untuk Desain Terpercaya
  6. Menguasai Verifikasi Formal Modul VHDL dengan PSL
  7. Membuat Daftar String dalam VHDL: Praktik Terbaik & Contoh
  8. Mengakhiri Simulasi Testbench VHDL dengan Elegan
  9. Implementasi Pengontrol PWM dalam VHDL: Desain, Simulasi, dan Demo FPGA
  10. Menghasilkan Angka Acak dalam VHDL: Dari Uniform hingga OSVVM