VHDL: Komponen vs Entitas

25

Saya bertanya-tanya apa perbedaan antara komponen suatu entitas. Saya ingin tahu dalam hal apa lebih baik menggunakan komponen daripada entitas. Terima kasih banyak.

Peterstone
sumber
1
Tolong, bisakah orang membuat panggilan tag 'vs'. Terima kasih.
Peterstone
7
Maksudmu "vs" seperti dalam judul? Hm, bukan ide yang bagus, methinks.
stevenvh
2
Tidak semua orang di sini menggunakan Visual Studio .... oh tunggu ... maksudmu yang lain "vs" kan? ;-)
cbmeeks

Jawaban:

17

Berikut ini analogi yang membantu beberapa orang (terutama yang berlatar belakang elektronik fisik):

A componentmemberitahu kompiler "akan ada sesuatu dengan pin semacam ini yang disebut ini di beberapa titik, tapi jangan khawatir untuk saat ini". Ini semacam mendefinisikan "soket". Anda dapat melanjutkan untuk menggambarkan apa yang "kabel" ke "soket" itu dll.

An entityadalah sesuatu yang spesifik dengan nama dan satu set pin, yang kemudian dapat "dihubungkan" oleh kompiler ke "soket" (dan karenanya terhubung ke "kabel").

Perhatikan bahwa Anda tidak perlu sebuah componentdapat Anda lakukan "Instansiasi langsung" yang berarti compiler sudah tahu tentang entitas sehingga "soket" tidak perlu didefinisikan secara terpisah. Bahkan, itu akan menjadi pendekatan yang saya rekomendasikan, karena jika tidak, componentini adalah level tambahan yang harus disinkronkan.

Anda perlu menggunakan komponen jika Anda mencampur Verilog dan VHDL dan perlu menggunakan blok Verilog di dalam VHDL. Maka itu componentadalah soket dan tidak lama kemudian kompilator / elaborator dapat memasukkan Verilog ke dalam soket.

Martin Thompson
sumber
Komponen seperti paket DIP. Anda dapat menggunakan op-amp 8-pin yang sama belasan kali dalam satu rangkaian, dan selalu 8 pin. Mereka adalah komponen yang terpisah, meskipun mereka adalah jenis op amp yang sama. Entitas seperti pinout pada lembar data; semua op-amp yang terpisah memiliki pinout yang sama.
ajs410
14

Sebuah entitas adalah antarmuka nyata untuk unit desain yang dapat memiliki beberapa arsitektur. Entitas mendefinisikan bagaimana barang masuk dan keluar, sedangkan arsitektur menentukan bagaimana unit desain beroperasi. Jadi Anda bisa memiliki banyak cara untuk mengimplementasikan fungsi yang sama, yang akan dijelaskan oleh entitas yang sama .

Sebuah komponen adalah ideal atau "virtual" desain unit. Saat Anda melakukan desain top-down (yaitu Anda menyusun level atas sebelum blok level bawah dirancang), Anda dapat menggunakan komponen untuk menggambarkan jenis antarmuka yang Anda harapkan untuk unit desain Anda. Anda dapat menganggap ini sebagai pemegang tempat atau kotak hitam untuk implementasi nyata di masa depan.

Menggunakan konfigurasi, Anda dapat mengikat instance komponen tertentu ke definisi entitas. Di sini Anda dapat memetakan port mana yang harus terhubung ke port mana. Ini memetakan bagaimana komponen yang didefinisikan dalam pengertian ideal memetakan ke entitas yang sebenarnya diimplementasikan.

Dalam praktiknya , saya telah menemukan bahwa komponen biasanya tidak diperlukan dan membuat tingkat abstraksi lain yang biasanya tidak digunakan. Anda dapat melewati penggunaan (dan kebutuhan) untuk komponen dengan langsung membuat entitas dan referensi arsitektur yang digunakan untuk instance entitas tersebut.

Sebagai contoh:

MyDesignUnit : entity library_name.entity_name(architecture_name)
               port map(
                     ...
Josh
sumber
2

Dari [1] di bawah ini:

Ada perbedaan penting antara entitas, komponen, dan komponen contoh dalam VHDL. Entitas menggambarkan antarmuka desain, komponen menggambarkan antarmuka entitas yang akan digunakan sebagai instance (atau sub-blok), dan instance komponen adalah salinan berbeda dari komponen yang telah terhubung ke bagian dan sinyal lain . Untuk membandingkan ini dengan proses desain papan roti dengan bagian off-the-self. Entitas dan arsitektur seperti buku data yang menggambarkan antarmuka dan skema cara kerja bagian tersebut. Komponen seperti daftar pin pendek yang disertakan dengan bagian untuk menggambarkan bagaimana seharusnya terhubung. Instance komponen adalah bagian aktual itu sendiri, di mana Anda mungkin memiliki banyak yang masing-masing beroperasi secara independen.

Lihat [1] untuk konteks dan lebih detail.


Ada banyak tutorial VHDL on line, misalnya [2] [3] ... Buku (84 halaman PDF) [4] Terlihat bagus [5] Terutama untuk tautan [6]

Russell McMahon
sumber
1
Anda tampaknya menyukai tautan dalam catatan akhir, tetapi itulah yang dilakukan di media cetak, dan tidak menggunakan hyperlink seperti itu dimaksudkan untuk digunakan. Anda bisa menulis "Lihat tautan ini untuk konteks dan lebih detail". Jauh lebih ramah pengguna, AFAIC. Hanya sebuah saran.
stevenvh
2
Otak tua :-). Saya condong ke informasi maksimum (seperti yang akan Anda perhatikan :-)) dan metode catatan akhir memungkinkan pembaca untuk melihat dari mana tautan berasal dan apakah ada yang di situs yang sama - seperti yang kadang-kadang terjadi. Untuk tautan yang sangat panjang, saya cenderung menggunakan bit.ly / j.mp dengan nama yang bermakna. Saya juga melihat pengguna enggan mengklik tautan (meskipun ini dapat disalin dan ditempel untuk diperiksa (pekerjaan tambahan)). TAPI poin dicatat dan saya akan mempertimbangkan masing-masing sebagai opsi di masa depan.
Russell McMahon
0

Entitas adalah unit desain yang port input-outputnya ditentukan. Entity hanya mendefinisikan port eksternal sementara fungsi internal ditentukan oleh arsitektur yang sesuai. Komponen adalah unit desain lengkap yang terdiri dari entitas dan arsitektur. Langkah pertama adalah deklarasi komponen (menentukan nama dan portnya) dan kemudian instantiasi komponen (pemetaan port).

varshika03
sumber