2010-03-10 24 views
5

Sử dụng VHDL tôi muốn có một số thanh ghi lưu trữ 16 bit trong mỗi mảng. Vì vậy, tôi thấy rằng VHDL có một xây dựng trong mảng, và tôi muốn sử dụng nó để lưu trữ 16 bit trong mỗi yếu tố trong iy vì vậy tôi muốn biết nếu VHDL bản đồ mảng này để đăng ký thực tế hay không?Biểu diễn phần cứng cho mảng trong VHDL

Trả lời

3

Câu trả lời ngắn gọn là không - loại mảng không ánh xạ tới thanh ghi.

Câu trả lời dài:

Loại mảng trong VHDL chỉ là tập hợp các phần tử cùng loại được lập chỉ mục. Trong trường hợp của bạn, bạn có thể sử dụng một mảng làm đầu ra từ một ngân hàng đăng ký.

Vì vậy, giả sử bạn có một ngân hàng gồm 8 thanh ghi, mỗi thanh chứa 16 bit. Đầu ra từ ngân hàng này sẽ là một mảng (có kích thước 8) của các vectơ 16 bit. Khai báo thành phần cho ngân hàng đăng ký này sẽ trông giống như sau:

 
component reg8x16 
    port(
    clock: in std_logic; 
    reset: in std_logic; 
    enable: in std_logic; 
    rout : out r_array(0 to 7) 
    ); 
end component; 

rout là mảng đầu ra đã đăng ký của bạn từ ngân hàng đăng ký. Vì vậy, bạn có thể dereference đầu ra của thanh ghi 0 từ ngân hàng bằng cách sử dụng rout(0), là loại std_logic_vector(15 downto 0).

Ngoài ra, đừng quên khai báo loại mảng ở đâu đó (thường là trong tệp gói). Nó sẽ giống như thế:

type r_array is array (integer range <>) of std_logic_vector(15 downto 0);

Các (integer range <>) tuyên bố là một loại giữ chỗ cho phạm vi chỉ số mảng - nó sẽ được điền vào sau khi loại mảng được sử dụng (ví dụ như trong việc kê khai thành phần của chúng tôi ở trên) .

Tôi không chắc liệu điều này có trả lời được câu hỏi của bạn hay không. Tôi sẽ không đi sâu vào chi tiết cụ thể về cách tạo thành phần reg8x16. Về cơ bản, bạn chỉ cần tạo một thanh ghi 16 bit có đầu ra là loại std_logic_vector(15 downto 0); (bạn có thể tra cứu cách thực hiện trực tuyến ... đó là VHDL khá cơ bản). Sau đó, bạn chỉ cần thực hiện 8 trong số các thanh ghi đó và đặt chúng vào thành phần có tên là reg8x16.

3

Một mảng giống như bất kỳ biến hoặc tín hiệu nào khác: Nếu bạn mô tả hành vi có nghĩa là nó phải nhớ trạng thái của nó từ một đồng hồ đánh dấu khác, sau đó flipflops (hoặc khối bộ nhớ, nếu điều kiện là đúng) sẽ được suy ra bởi bộ tổng hợp.

1

Bất kỳ mảng nào có phạm vi hợp lệ sẽ ánh xạ tới các dây trong danh sách phát được tạo. Đây là phần cứng khá rõ ràng - chỉ chứa các cổng và dây điện. Một cái gì đó giống như một (3 downto 0) (1 đến 0) sẽ làm cho một dây kích thước 4x2 hoặc 8-bit. Bây giờ bạn ánh xạ các truy cập riêng lẻ như (3) (1) đến các chỉ mục trong mảng 1 chiều này. Vì vậy, một (3) (1) về cơ bản là một (7).

0

séc this trang, cũng kiểm tra vhdl register

về cơ bản nó là một mảng của std_logic_vector với độ dài cần thiết

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