Menggunakan benar perpustakaan

N

neocool

Guest
Hai lagi,
Pada contoh di bawah ini, jika vektor mengandung 2's pujian angka, perpustakaan apa yang harus saya gunakan untuk membuat kode eksekusi benar?Aku tidak terlalu peduli tentang apakah akan menggunakan TO_SIGNED atau CONV_SIGNED.Saya hanya bingung ketika menggunakan yang perpustakaan (std_numeric, std_logic_artith, std_logic_unsigned, std_logic_signed)?Kode:sinyal max: sd_logic_vector (9 downto 0);

sinyal a: sd_logic_vector (9 downto 0);

hasil sinyal: sd_logic_vector (10 downto 0);Hasilnya <= std_logic_vector (ditandatangani (maks) - menandatangani (a));

 
Untuk VHDL, tergantung pada paket Anda menyatakan, Anda dapat menggunakan jenis:
1.Untuk unsigned:
- Numeric_std paket: menggunakan tipe unsigned
- Std_logic_arith paket: menggunakan tipe unsigned
- Std_logic_unsigned paket: gunakan std_logic_vector
2.Untuk Tertanda
- Numeric_std paket: menggunakan jenis ditandatangani
- Std_logic_arith paket: menggunakan jenis ditandatangani
- Std_logic menandatangani paket: gunakan std_logic_vector

 
dapat saya gunakan std_logic_arith (ditandatangani dan unsigned) dan std_numeric (ditandatangani) perpustakaan dalam modul yang sama atau lebih baik tidak?

Alasan saya mengajukan pertanyaan itu adalah karena saya telah menandatangani penambahan dan pengurangan dalam sebuah modul, dan ModelSim memberikan hasil simulasi yang baik.Namun mengimplementasikannya pada perangkat keras, memberikan beberapa kesalahan - sinyal dipotong dan dialihkan sebagai ada kebingungan antara jenis unsigned ditandatangani dan dalam.Di sana, saya menggunakan perpustakaan std_numeric dan 1164 saja.Kompilator memungkinkan saya untuk memasukkan std_logic_unsigned sana juga, tapi itu tidak membuat perbedaan di kedua (perangkat lunak atau perangkat keras) simulasi.Terima kasih

 
Saya pikir Anda hanya harus menggunakan paket std_logic_arith atau numeric_std.
Dalam modul, masalahnya mungkin:
- Ketika Anda menambahkan angka masuk, overflow mungkin terjadi.Anda harus memperkirakan kisaran hasil untuk memilih jumlah sedikit, yaitu 8-bit memiliki jangkauan -128 ke 127.
- Jika Anda tidak ingin meluap, Anda harus melakukan 1-bit tanda ekstensi.Hasilnya selalu benar.

 
terima kasih

Jadi, yang memungkinkan penambahan library melakukan SLV dan integer untuk mendapatkan SLV (untuk counter)?

Dalam kode saya, saya menggunakan vektor dihasilkan dengan panjang satu bit ekstra untuk memperhitungkan melimpah.
Yaitu (10 downto 0) <= ('0 '& (9 downto 0)) - ('1' & (9 downto 0));
dengan asumsi nomor pertama adalah positif dan negatif kedua adalah SLV diwakili dalam 2 pujian.
Aku tidak tahu di mana masalah berasal dari sebagai simulasi menggunakan Modelsim menunjukkan tidak ada kesalahan, sedangkan implementasi perangkat keras tidak.Ketika saya menggunakan fungsi lain yang menggunakan ve /-ve hasil untuk perhitungan variabel dan mengkonversinya ke SLV ditandatangani, baik hardware dan modelsim pengujian yang baik.

terima kasih lagi

 

Welcome to EDABoard.com

Sponsor

Back
Top