VHDL: Thành phần vs Thực thể


25

Tôi tự hỏi sự khác biệt giữa các thành phần một thực thể. Tôi muốn biết trong trường hợp nào là tốt hơn để sử dụng các thành phần thay vì các thực thể. Cảm ơn bạn rất nhiều.


1
Xin vui lòng, bất cứ ai cũng có thể tạo một cuộc gọi thẻ 'vs'. Cảm ơn bạn.
Peterstone

7
Bạn có nghĩa là "vs" như trong tiêu đề? Hừm, không phải là một ý kiến ​​hay, methinks.
stevenvh

2
Không phải tất cả mọi người ở đây đều sử dụng Visual Studio .... oh chờ đã ... bạn có nghĩa là "vs" khác phải không? ;-)
cbmeek

Câu trả lời:


17

Đây là một sự tương tự giúp một số người (đặc biệt là những người từ nền tảng điện tử vật lý):

A componentnói với trình biên dịch "sẽ có một cái gì đó với các loại ghim trên nó được gọi là cái này vào lúc nào đó, nhưng đừng lo lắng bây giờ". Nó loại định nghĩa một "ổ cắm". Bạn có thể tiếp tục mô tả những gì "nối dây" với "ổ cắm" đó, v.v.

An entitylà một cái gì đó cụ thể với một tên và một bộ chân, mà trình biên dịch có thể "cắm" vào "ổ cắm" đó (và do đó được kết nối với "dây").

Lưu ý rằng bạn không cần một componentbạn có thể làm "instantiation thẳng" có nghĩa trình biên dịch đã biết về một thực thể do đó, "ổ cắm" không cần phải được xác định riêng. Trong thực tế, đó sẽ là cách tiếp cận được đề xuất của tôi, vì nếu không thì componentmức độ bổ sung sẽ được giữ đồng bộ.

Bạn cần sử dụng các thành phần nếu bạn đang trộn Verilog và VHDL và cần sử dụng khối Verilog trong VHDL. Sau đó, componentlà ổ cắm và mãi đến sau này, trình biên dịch / trình biên dịch mới có thể cắm Verilog vào ổ cắm.


Thành phần giống như gói DIP. Bạn có thể sử dụng cùng một op-amp 8 chân một chục lần trong một mạch và nó luôn luôn là 8 chân. Chúng là các thành phần riêng biệt, mặc dù chúng cùng loại op amp. Thực thể giống như sơ đồ chân trên biểu dữ liệu; tất cả các op-amps riêng biệt có cùng sơ đồ chân.
ajs410

14

Một thực thể là một giao diện thực sự cho một đơn vị thiết kế có thể có nhiều kiến trúc. Một thực thể xác định cách thức vào và ra, trong khi kiến ​​trúc xác định cách thức đơn vị thiết kế hoạt động. Vì vậy, bạn có thể có nhiều cách để thực hiện cùng một chức năng, sẽ được mô tả bởi cùng một thực thể.

Một thành phần là một đơn vị thiết kế lý tưởng hoặc "ảo". Khi bạn đang thực hiện thiết kế từ trên xuống (nghĩa là bạn đang kết hợp cấp cao nhất trước khi các khối cấp thấp hơn được thiết kế), bạn có thể sử dụng một thành phần để mô tả loại giao diện mà bạn đang mong đợi cho các đơn vị thiết kế của mình. Bạn có thể nghĩ về điều này như một người giữ chỗ hoặc hộp đen để thực hiện trong tương lai.

Sử dụng các cấu hình, bạn có thể liên kết một thể hiện thành phần cụ thể với một định nghĩa thực thể. Tại đây bạn có thể vạch ra cổng nào sẽ kết nối với cổng nào. Điều này ánh xạ cách thành phần được xác định trong ý nghĩa lý tưởng ánh xạ tới thực thể được thực hiện.

Trong thực tế , tôi đã thấy rằng các thành phần thường không cần thiết và tạo ra một mức độ trừu tượng khác thường không được sử dụng. Bạn có thể bỏ qua việc sử dụng (và cần) cho các thành phần bằng cách trực tiếp khởi tạo thực thể và tham chiếu kiến ​​trúc nào sẽ sử dụng cho thể hiện đó của thực thể.

Ví dụ:

MyDesignUnit : entity library_name.entity_name(architecture_name)
               port map(
                     ...

2

Từ [1] bên dưới:

Có một sự khác biệt quan trọng giữa một thực thể, một thành phần và một thể hiện thành phần trong VHDL. Thực thể mô tả giao diện thiết kế, thành phần mô tả giao diện của thực thể sẽ được sử dụng làm phiên bản (hoặc khối phụ) và phiên bản thành phần là bản sao riêng biệt của thành phần được kết nối với các bộ phận và tín hiệu khác . Để so sánh những điều này với quá trình thiết kế bảng bánh mì với các bộ phận tự. Thực thể và kiến ​​trúc giống như cuốn sách dữ liệu mô tả giao diện và sơ đồ về cách thức hoạt động của bộ phận. Thành phần này giống như danh sách pin ngắn đi kèm với phần để mô tả cách kết nối nó. Ví dụ thành phần là phần thực tế, trong đó bạn có thể có nhiều phần mà mỗi phần hoạt động độc lập.

Xem [1] để biết ngữ cảnh và chi tiết hơn.


Có rất nhiều hướng dẫn về VHDL trên mạng, ví dụ [2] [3] ... Sách (84 trang PDF) [4] Có vẻ tốt [5] Chủ yếu cho các liên kết [6]


1
bạn dường như ủng hộ các liên kết trong chú thích, nhưng đó là cách nó được thực hiện trong in ấn và không sử dụng siêu liên kết như nó được sử dụng. Bạn có thể đã viết "Xem liên kết này để biết ngữ cảnh và chi tiết hơn". Thân thiện với người dùng hơn nhiều, AFAIC. Chỉ là một gợi ý.
stevenvh

2
Não cũ :-). Tôi nghiêng về thông tin tối đa (như bạn sẽ nhận thấy :-)) và phương pháp ghi chú cho phép người đọc xem liên kết đến từ đâu và liệu một số có trên cùng một trang - như đôi khi xảy ra. Đối với các liên kết rất dài, tôi có xu hướng sử dụng bit.ly / j.mp với một tên có ý nghĩa. Tôi cũng đã thấy người dùng thận trọng về việc nhấp vào một liên kết (mặc dù những điều này có thể được sao chép và dán để kiểm tra (công việc làm thêm)). NHƯNG điểm lưu ý và tôi sẽ coi mỗi là tùy chọn trong tương lai.
Russell McMahon

0

Một thực thể là một đơn vị thiết kế có các cổng đầu vào-đầu ra được chỉ định. Thực thể chỉ xác định các cổng bên ngoài trong khi chức năng bên trong được chỉ định bởi kiến ​​trúc tương ứng. Một thành phần là đơn vị thiết kế hoàn chỉnh bao gồm cả thực thể và kiến ​​trúc. Bước đầu tiên là khai báo thành phần (chỉ định tên và cổng của nó) và sau đó khởi tạo thành phần (ánh xạ cổng).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.