2016-12-19 16 views
10

Tôi có một bảng, trong đó mỗi hàng của bảng chứa trạng thái (thanh ghi). Có logic chọn một hàng cụ thể. Chỉ một hàng nhận tín hiệu "đã chọn". Trạng thái từ hàng đã chọn sau đó được truy cập. Một phần của trạng thái được kết nối như là một đầu ra cho IO của mô-đun, nếu không một phần của IO được sử dụng làm đầu vào để cập nhật trạng thái.Đục: làm thế nào để thực hiện một mux nóng một cách hiệu quả?

Nếu tôi thực hiện điều này bằng mạch điện, tôi sẽ sử dụng cổng thông tin. Tín hiệu được chọn sẽ bật một bộ cổng truyền, sẽ kết nối các thanh ghi của hàng với một bus. Bus sau đó sẽ được kết nối với gói IO. Đây là khu vực nhanh, nhỏ và năng lượng thấp.

Có một cách tiến thẳng để thực hiện điều này ở Chisel. Nó mã hóa hàng đã chọn dưới dạng số nhị phân và sau đó áp dụng số đó cho đầu vào được chọn của một mux truyền thống. Thật không may, đối với một bảng với 20 đến 50 hàng, và trạng thái của hàng trăm bit, việc thực hiện này có thể khá chậm, và lãng phí trong khu vực và năng lượng.

Câu hỏi có hai phần: 1) Có cách nào để chỉ định xe buýt ở Chisel, sao cho bạn có cổng vượt hoặc trình điều khiển tri-trạng thái truyền thống bị treo trên xe buýt?

2) Không, có một khu vực nhỏ, nhanh, năng lượng thấp để làm điều này ở Chisel không?

Cảm ơn

Trả lời

2

1) Chisel không hỗ trợ đầy đủ dây hai chiều, nhưng qua kiểu Analog thực nghiệm (see example), ít nhất bạn có thể khâu một chiếc xe buýt thông qua mã Chisel bạn giữa Verilog Đen Hộp.

2) Bạn đã thử Mux1H in chisel3.util chưa? Nó phát ra về cơ bản tổng sản phẩm của các đầu vào và các bit lựa chọn tương ứng của chúng. Tôi không chắc điều này so sánh với việc triển khai đề xuất của bạn như thế nào. Tôi rất thích nhìn thấy so sánh QOR. Nếu cấu trúc này không đủ và bạn không thể thể hiện chính xác những gì bạn muốn trong đục, bạn có thể sử dụng parameterized BlackBox để triển khai mux nóng một lần của bạn và khởi tạo nó theo ý bạn.

+0

Cảm ơn bạn đã liên kết. Điều này thực sự mang lại một điểm liên tục và quan trọng đối với chúng tôi. Chúng tôi không phải là những người lập trình phức tạp. Nhưng những người thực hiện Rocket và các nhà phát triển Chisel là. Mức độ tinh tế trong thực hành mã hóa phần mềm vượt xa các kỹ năng của chúng tôi. Việc học tập cần thiết để hiểu việc thực hiện Mux1H là không tầm thường. – seanhalle

+0

Khả năng bất khả xâm phạm của mã Chisel là một trở ngại dai dẳng. Một mặt, Chisel cơ sở hiệu quả hơn, đến nay, hơn Verilog. Mất khoảng một tháng đến hai tháng để có thể cung cấp công việc có thể sử dụng ở Chisel. Khoảng 60% số người mà chúng tôi đã thuê, đã bỏ thuốc lá vì họ không thể đến được điểm đó. Nhưng mức độ đại diện bởi Mux1H, và ngày càng tăng bởi mã Rocket, tôi ước tính có lẽ 6 mos đến một năm để có được thoải mái với loại thực hành mã hóa. Đó là một vấn đề thực sự, đối với chúng tôi, khi tạo ra một sản phẩm thương mại, sử dụng các nhà phát triển Verilog bình thường. – seanhalle

+0

Nhận được nội dung của câu trả lời .. Cảm ơn lời khuyên về Analog. Ở điểm 1), tôi không rõ về việc đề cập đến Hộp Đen Verilog. Và tôi không rõ ràng về hai chiều. Xe buýt thực sự là một chiều. Nó chỉ có nhiều nguồn mà tất cả có thể lái cùng một dây. Ví dụ, trình điều khiển ba trạng thái là một hướng. Ngoài ra, logic đặt giá trị lên xe buýt và nhận từ xe buýt đều là Chisel. Không có hộp đen Verilog có liên quan .. – seanhalle

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