Apa perbedaan antara menggunakan:
ENTITY MyDemo is
PORT(X: IN STD_LOGIC; F: OUT STD_LOGIC );
END MyDemo;
dan
ENTITY MyDemo is
PORT(X: IN BIT; F: OUT BIT );
END MyDemo;
Apa batasan menggunakan BIT di atas STD_LOGIC dan sebaliknya? Apakah mereka sepenuhnya dapat dipertukarkan? Saya mengerti bahwa jika saya mendefinisikan STD_LOGIC, saya tidak dapat menggunakannya dengan BIT_Vector untuk mengakses elemen dalam array. Tapi sepertinya saya tidak bisa melihat perbedaannya.
Jawaban:
Bit
adalah tipe yang telah ditentukan dan hanya dapat memiliki nilai0
atau1
. TheBit
jenis adalah nilai ideal.std_logic
adalah bagian daristd_logic_1164
paket dan memberikan pemodelan sinyal yang lebih realistis dalam sistem digital. Ia mampu memiliki sembilan nilai berbeda. Biasanya dalam kode Anda, Anda hanya akan menggunakan0
,1
danZ
(High-Z). TetapiU
(Uninitialized) danX
(Unknown) juga sangat berguna ketika memodelkan sistem dalam testbench.The
std_logic_1164
paket juga menyediakan fungsi konversi untuk mengkonversistd_logic
keBit
.sumber
Kebanyakan orang menggunakannya
std_logic
. Itu memungkinkanu
(undefined),x
(tidak diketahui) danz
(impedansi tinggi), yang tidak. Meskipun Anda mungkin tidak pernah menggunakan chip dan karena itu tidak perluz
,u
berguna untuk menemukan pengaturan ulang yang hilang.x
berguna untuk menemukan beberapa driver.sumber
X
untuk menemukan beberapa driver.std_logic
memang tipe standar industri untuk VHDL, tetapi juga merupakan salah satu fitur VHDL yang paling disalahgunakan.std_logic
adalah sinyal yang diselesaikan, yang berarti bahwa suatu fungsi digunakan untuk menyelesaikan nilai sinyal dalam kasus beberapa driver. Tetapi dalam sebagian besar kasus, beberapa driver merupakan kesalahan. Dengan menggunakan tipe yang tidak terselesaikan sepertistd_ulogic
ini akan ditandai oleh kompiler sebagai kesalahan.std_ulogic
. Namun perlu diingat banyak core akan ditulisstd_logic
sehingga Anda mungkin akan melihatnya.std_logic
memang tipe yang paling umum di sekitar; Saya hanya berpendapat bahwa penggunaannya tidak sesuai dengan niat asli: Pemodelan sinyal multi-state. Untuk desain internal kami biasanya hanya mempertimbangkan1
atau0
dan satu driver. Lihat electronics.stackexchange.com/questions/17524/… untuk diskusi menyeluruh tentang topik tersebut.std_logic
memiliki fungsi resolusiTidak hanya
std_logic
memiliki negara yang lebih berguna selain1
dan0
, ia juga memiliki fungsi resolusi yang ditentukan.Fungsi resolusi adalah konsep bahasa VHDL. Ini adalah fungsi yang dikaitkan dengan suatu jenis, dan itu menentukan apa yang terjadi ketika beberapa nilai dari jenis itu diterapkan pada satu sinyal. Sintaksnya adalah:
di mana
std_ulogic
versi yang belum terselesaikan (dan karenanya jauh kurang berguna) daristd_logic
.Secara khusus, ini menyiratkan hal-hal baik seperti
0
dan1
mengarah keX
:Ini masuk akal secara intuitif, seperti yang kita pahami
X
sebagai keadaan di mana banyak nilai yang tidak kompatibel diterapkan ke satu kabel.std_logic
juga tahu bagaimana menyelesaikan setiap pasangan sinyal input yang mungkin menurut tabel yang ada pada LRM.bit
di sisi lain, tidak memiliki fungsi resolusi, dan jika kita menggunakannya pada contoh di atas, itu akan menyebabkan kesalahan simulasi pada GHDL 0,34.Nilai yang mungkin dari
std_logic
adalah pilihan yang baik karena mereka distandarisasi oleh IEEE 1164 dan menangani banyak kasus penggunaan umum.sumber
std_logic lebih kaya daripada bit , dan pada dasarnya harus digunakan sebagian besar waktu.
Ada juga tipe boolean , yang, seperti bit , memiliki dua nilai. Ini adalah tipe hasil perbandingan, tipe yang diharapkan setelah IF [bool] atau WHEN [bool] , sering digunakan untuk konstanta seleksi:
constant ENABLE_DEBUG_INTERFACE : boolean := true;
Satu tempat bit dapat dipilih untuk std_logic adalah untuk array besar, memori. Pada pengoptimalan simulator, bit menempati lebih sedikit area dalam memori simulator daripada std_logic . Dan mungkin masalah jika desain Anda instantiates satu GB RAM.
Ini juga bisa lebih cepat untuk desain yang sangat besar, misalnya sesuatu yang secara otomatis dihasilkan dari netlist gerbang-tingkat pasca-sintesis.
Tentu saja, aspek kinerja ini bukan bagian dari bahasa, dan tergantung pada implementasi simulator VHDL.
sumber