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
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
.
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.
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).
- 1. Diễn đàn lập trình có liên quan đến VHDL/Verilog?
- 2. Biểu diễn mảng trong lược đồ
- 3. Clojure biểu diễn mảng byte
- 4. cách khai báo mảng hai chiều và các phần tử của chúng trong VHDL
- 5. Gói chung trong VHDL
- 6. Mô phỏng phần cứng tăng tốc GPU?
- 7. In biểu diễn thập lục phân của mảng char []
- 8. Phần cứng cho .NET Micro Framework
- 9. biểu diễn byte trong BINARY_CHECKSUM()?
- 10. Phần cứng Mô phỏng
- 11. Biểu diễn nhị phân trong C
- 12. Tạo thành phần tùy chỉnh - cách thêm biểu tượng nhỏ biểu diễn thành phần trong Bảng công cụ?
- 13. Lập trình với phần cứng trong python
- 14. Tăng tốc phần cứng không được bật
- 15. Java: Chuyển đổi tập hợp thành mảng cho biểu diễn chuỗi
- 16. Tăng tốc phần cứng Java
- 17. un-biểu diễn
- 18. Phần cứng ngoài Thông tin
- 19. ElasticSearch biểu diễn mong đợi
- 20. Phần cứng cho môi trường MongoDB thừa + thừa
- 21. C# Biểu diễn chuỗi của phương thức
- 22. Canvas in SurfaceView - tăng tốc phần cứng
- 23. Chuẩn mực biểu diễn biểu đồ
- 24. Hỗ trợ .NET Framework cho phần cứng đa lõi
- 25. Biểu diễn char dưới dạng byte trong Java
- 26. Biểu diễn chuỗi của time_t?
- 27. Câu hỏi REST: PUT một biểu diễn, NHẬN một biểu diễn khác?
- 28. UML để biểu diễn XML
- 29. Rails 3 thức biểu diễn cho Tuỳ chỉnh hành động
- 30. Android ffmpeg và tăng tốc phần cứng