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
- Integer ke Signed
- Integer ke Std_Logic_Vector
- Integer ke Unsigned
- Std_Logic_Vector ke Integer
- Std_Logic_Vector ke Signed
- Std_Logic_Vector ke Unsigned
- Signed ke Integer
- Signed ke Std_Logic_Vector
- Signed ke Unsigned
- Unsigned ke Integer
- Unsigned ke Signed
- Unsigned ke Std_Logic_Vector
Contoh Konversi menggunakan Std_Logic_Arith
- Integer ke Signed
- Integer ke Std_Logic_Vector
- Integer ke Unsigned
- Std_Logic_Vector ke Integer
- Std_Logic_Vector ke Signed
- Std_Logic_Vector ke Unsigned
- Signed ke Integer
- Signed ke Std_Logic_Vector
- Signed ke Unsigned
- Unsigned ke Integer
- Unsigned ke Signed
- Unsigned ke Std_Logic_Vector
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 |
|---|