2010-09-04 20 views
6

Tôi đã gãi đầu vì lớp VHDL đầu tiên của tôi và quyết định đăng câu hỏi của tôi ở đây.Tại sao tôi cần phải redeclare các thành phần VHDL trước khi instantiating chúng trong kiến ​​trúc khác?

Cho rằng tôi có một thực thể được khai báo (và cũng là kiến ​​trúc của nó) và muốn khởi tạo nó bên trong một kiến ​​trúc khác, tại sao tôi phải redeclare "entity" (component) bên trong kiến ​​trúc này trước khi instantiating nó?

Trình biên dịch có đủ thông minh để phù hợp với sự khởi tạo với kiến ​​trúc của nó chỉ bằng tên của nó không? Cần khai báo thành phần ở đâu?

Trả lời

10

Bạn có thể trực tiếp nhanh chóng các thành phần, nếu muốn:

MyInstantiatedEntity : entity work.MyEntity_E 
    generic map (
     config   => whatever) 
    port map (
     clk    => signal1, 
     clk_vid   => signal2, 
     ... 

Tạo một bản tuyên bố thành phần mang đến cho bạn thêm khả năng thay đổi những gì được ràng buộc với instantiation qua một đặc điểm kỹ thuật cấu hình hoặc tương đương.

+0

Tôi hiểu, cảm ơn! –

+1

Bạn có thể chỉ định kiến ​​trúc cho: nhãn: thực thể work.MyEntity_E (RTL) bản đồ chung ... – Hendrik

2

Quay lại khi tôi đã hoàn thành bài tập VHDL khi tôi còn đi học, tôi được yêu cầu phải có tất cả mã trong một tệp để tôi không nhớ bạn có thể viết một tệp cho từng mô-đun hay không đã được thực hiện. Điều đó đang được nói, bạn sẽ phải khai báo thực thể bạn sẽ sử dụng khi xác định hành vi, nếu bạn sử dụng nó theo cách tương tự như bạn định nghĩa nguyên mẫu, cấu trúc, lớp và whatnot trong C hoặc C++. Sự khác biệt ở đây là bạn không có sự sang trọng của việc xác định các tập tin tiêu đề cho "redeclaration" trong VHDL (ít nhất tôi không nghĩ rằng có một tương đương). Vì vậy, có vẻ như hoàn toàn hợp lý để tôi phải làm điều này. Lưu ý rằng VHDL xuất hiện khi C rất phổ biến và các trình biên dịch không phải là "đủ thông minh" như ngày nay.

Một guru VHDL có thể có câu trả lời dứt khoát cho điều này nhưng đây là cách tôi hiểu nó.

+0

Tôi nghĩ rằng đây có thể là một điều thú vị, [Làm thế nào để bao gồm tập tin tiêu đề trong mô-đun VHDL] (http://www.edaboard.com/thread169224.html) (có _isn't_ một cách). Có thể có liên quan nhưng tôi không chắc chắn làm thế nào bạn sẽ áp dụng nó mặc dù. Bạn có thể xác định "tiêu đề" theo cách này. –

+0

Ahh, điều đó có ý nghĩa rất nhiều. Cảm ơn câu trả lời! –

+1

Một gói phần mềm giống như một tệp tiêu đề - bạn có thể đặt các thành phần trong chúng để bạn chỉ phải khai báo chúng một lần. Nhưng sự khởi tạo trực tiếp như Charles gợi ý là cách để đi trừ khi bạn có lý do chính đáng để không (ví dụ như các thành phần hộp đen, cần phải sử dụng cấu hình.) –

Các vấn đề liên quan