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

Contoh Konversi VHDL

Menggunakan File Paket Numeric_Std dan Std_Logic_Arith

Di bawah ini adalah konversi yang paling umum digunakan dalam VHDL. Halaman dipecah menjadi dua bagian. Paruh pertama halaman menunjukkan konversi menggunakan file paket Numeric_Std. Paruh kedua halaman menunjukkan konversi menggunakan file paket Std_Logic_Arith. Ini adalah praktik yang baik untuk menggunakan paket Numeric_Std karena Anda tidak boleh menggunakan Std_Logic_Arith. Karena banyak orang masih bersikeras untuk menggunakannya, kedua contoh tersebut ditunjukkan di bawah ini.

Perhatikan bahwa banyak contoh di bawah ini menggunakan 'length atribut VHDL. Atribut ini membuat kode Anda lebih portabel dan serbaguna, sehingga harus digunakan.

Contoh Konversi menggunakan Std Numerik

Contoh Konversi menggunakan Std_Logic_Arith

Konversi dari Integer ke Signed menggunakan Numeric_Std

Contoh di bawah ini menggunakan konversi to_signed, yang memerlukan dua parameter input. Yang pertama adalah sinyal yang ingin Anda konversi, yang kedua adalah panjang vektor yang dihasilkan.

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

Pertama, Anda perlu memikirkan kisaran nilai yang disimpan dalam bilangan bulat Anda. Bisakah bilangan bulat Anda positif dan negatif? Jika demikian, Anda perlu menggunakan to_signed() konversi. Jika bilangan bulat Anda hanya positif, Anda perlu menggunakan to_unsigned() konversi.

Kedua fungsi konversi ini membutuhkan dua parameter input. Yang pertama adalah sinyal yang ingin Anda konversi, yang kedua adalah panjang vektor yang dihasilkan.

signal input_1   : integer;
signal output_1a : std_logic_vector(3 downto 0);
signal output_1b : std_logic_vector(3 downto 0);
  
-- This line demonstrates how to convert positive integers
output_1a <= std_logic_vector(to_unsigned(input_1, output_1a'length));

-- This line demonstrates how to convert positive or negative integers
output_1b <= std_logic_vector(to_signed(input_1, output_1b'length));

Konversi dari Integer ke Unsigned menggunakan Numeric_Std

Contoh di bawah ini menggunakan konversi to_unsigned, yang memerlukan dua parameter input. Yang pertama adalah sinyal yang ingin Anda konversi, yang kedua adalah panjang vektor yang dihasilkan.

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, Anda perlu memikirkan data yang diwakili oleh std_logic_vector Anda. Apakah itu data yang ditandatangani atau itu data yang tidak ditandatangani? Data yang ditandatangani berarti std_logic_vector Anda dapat berupa atau positive positif angka negatif. Data yang tidak ditandatangani berarti std_logic_vector Anda hanya angka positif. Contoh di bawah ini menggunakan unsigned() typecast, tetapi jika data Anda bisa negatif, Anda perlu menggunakan signed() typecast. Setelah Anda memasukkan std_logic_vector input Anda sebagai tidak ditandatangani atau ditandatangani, maka Anda dapat mengonversinya menjadi bilangan bulat seperti yang ditunjukkan di bawah ini:

signal input_4   : std_logic_vector(3 downto 0);
signal output_4a : integer;
signal output_4b : integer;
  
-- This line demonstrates the unsigned case
output_4a <= to_integer(unsigned(input_4));

-- This line demonstrates the signed case
output_4b <= to_integer(signed(input_4));

Konversi dari Std_Logic_Vector ke Signed menggunakan Numeric_Std

Ini adalah konversi yang mudah, yang perlu Anda lakukan hanyalah mentransmisikan std_logic_vector seperti yang ditunjukkan di bawah ini:

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

Ini adalah konversi yang mudah, yang perlu Anda lakukan adalah memasukkan std_logic_vector sebagai unsigned seperti yang ditunjukkan di bawah ini:

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

Ini adalah konversi yang mudah, yang perlu Anda lakukan adalah menggunakan panggilan fungsi to_integer dari numeric_std seperti yang ditunjukkan di bawah ini:

  
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

Ini adalah konversi yang mudah, yang perlu Anda lakukan hanyalah menggunakan pemeran std_logic_vector seperti yang ditunjukkan di bawah ini:

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

Ini adalah konversi yang mudah, yang perlu Anda lakukan hanyalah menggunakan pemeran yang tidak ditandatangani seperti yang ditunjukkan di bawah ini:

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

Ini adalah konversi yang mudah, yang perlu Anda lakukan adalah menggunakan panggilan fungsi to_integer dari numeric_std seperti yang ditunjukkan di bawah ini:

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

output_7 <= to_integer(input_7);

Konversi dari Tidak Ditandatangani menjadi Ditandatangani menggunakan Numeric_Std

Ini adalah konversi yang mudah, yang perlu Anda lakukan hanyalah menggunakan pemeran yang ditandatangani seperti yang ditunjukkan di bawah ini:

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

Ini adalah konversi yang mudah, yang perlu Anda lakukan hanyalah menggunakan pemeran std_logic_vector seperti yang ditunjukkan di bawah ini:

  
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

Contoh di bawah ini menggunakan konversi conv_signed, yang membutuhkan dua parameter input. Yang pertama adalah sinyal yang ingin Anda konversi, yang kedua adalah panjang vektor yang dihasilkan.

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

Contoh di bawah ini menggunakan konversi conv_std_logic_vector, yang membutuhkan dua parameter input. Yang pertama adalah sinyal yang ingin Anda konversi, yang kedua adalah panjang vektor yang dihasilkan.

Satu hal yang perlu diperhatikan di sini adalah jika Anda memasukkan angka negatif ke dalam konversi ini, maka keluaran std_logic_vector Anda akan direpresentasikan dalam notasi bertanda komplemen 2.

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

Contoh di bawah ini menggunakan konversi conv_unsigned, yang membutuhkan dua parameter input. Yang pertama adalah sinyal yang ingin Anda konversi, yang kedua adalah panjang vektor yang dihasilkan.

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

Pertama, Anda perlu memikirkan data yang diwakili oleh std_logic_vector Anda. Apakah itu data yang ditandatangani atau itu data yang tidak ditandatangani? Data yang ditandatangani berarti std_logic_vector Anda dapat berupa atau positive positif angka negatif. Data yang tidak ditandatangani berarti std_logic_vector Anda hanya angka positif. Contoh di bawah ini menggunakan unsigned() typecast, tetapi jika data Anda bisa negatif, Anda perlu menggunakan signed() typecast. Setelah input Anda std_logic_vector tidak ditandatangani atau ditandatangani, maka Anda dapat mengubahnya menjadi integer seperti yang ditunjukkan di bawah ini:

signal input_4   : std_logic_vector(3 downto 0);
signal output_4a : integer;
signal output_4b : integer;
  
-- This line demonstrates the unsigned case
output_4a <= conv_integer(unsigned(input_4));

-- This line demonstrates the signed case
output_4b <= conv_integer(signed(input_4));

Konversi dari Std_Logic_Vector ke Signed menggunakan Std_Logic_Arith

Ini adalah konversi yang mudah, yang perlu Anda lakukan hanyalah mentransmisikan std_logic_vector seperti yang ditunjukkan di bawah ini:

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

Ini adalah konversi yang mudah, yang perlu Anda lakukan adalah memasukkan std_logic_vector sebagai unsigned seperti yang ditunjukkan di bawah ini:

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

Ini adalah konversi yang mudah, yang perlu Anda lakukan adalah menggunakan panggilan fungsi conv_integer dari std_logic_arith seperti yang ditunjukkan di bawah ini:

  
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

Ini adalah konversi yang mudah, yang perlu Anda lakukan hanyalah menggunakan pemeran std_logic_vector seperti yang ditunjukkan di bawah ini:

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

Ini adalah konversi yang mudah, yang perlu Anda lakukan hanyalah menggunakan pemeran yang tidak ditandatangani seperti yang ditunjukkan di bawah ini:

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

Ini adalah konversi yang mudah, yang perlu Anda lakukan adalah menggunakan panggilan fungsi conv_integer dari std_logic_arith seperti yang ditunjukkan di bawah ini:

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

output_7 <= conv_integer(input_7);

Konversi dari Tidak Ditandatangani menjadi Ditandatangani menggunakan Std_Logic_Arith

Ini adalah konversi yang mudah, yang perlu Anda lakukan hanyalah menggunakan pemeran yang ditandatangani seperti yang ditunjukkan di bawah ini:

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

Ini adalah konversi yang mudah, yang perlu Anda lakukan adalah menggunakan typecast std_logic_vector seperti yang ditunjukkan di bawah ini:

  
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 Paling Populer

VHDL

  1. Tutorial - Pengantar VHDL
  2. Pernyataan Prosedur - Contoh VHDL
  3. Catatan - Contoh VHDL
  4. Ditandatangani vs. Tidak Ditandatangani di VHDL
  5. Variabel - Contoh VHDL
  6. Verifikasi formal dalam VHDL menggunakan PSL
  7. Cara membuat daftar string di VHDL
  8. Bagaimana menghentikan simulasi di testbench VHDL
  9. Cara membuat pengontrol PWM di VHDL
  10. Cara menghasilkan angka acak di VHDL