2016-12-21 16 views
5

Làm thế nào để sử dụng mảng (đại diện cho bus) trong HDL?Xử lý các mảng trong HDL

Ví dụ, tôi đã đoạn mã sau:

/** 
* 16-bit bitwise And: 
* for i = 0..15: out[i] = (a[i] and b[i]) 
*/ 

CHIP And16 { 
    IN a[16], b[16]; 
    OUT out[16]; 

    PARTS: 
    // Put your code here: 
} 

Giả sử tôi có And đã thực hiện, làm thế nào tôi có thể thực hiện điều này?

Tôi không muốn có những điều sau đây:

And(a=a[0],b=b[0],out=out[0]); 
And(a=a[1],b=b[1],out=out[1]); 
... 
And(a=a[14],b=b[14],out=out[14]); 
And(a=a[15],b=b[15],out=out[15]); 
+1

Nếu, và tôi chắc chắn điều này là, liên quan đến khóa học nand2tetris, hãy gắn thẻ câu hỏi này cho phù hợp. Nếu đây là phiên bản nand2tetris hdl, thì bạn sẽ phải đối phó với các xe buýt bằng tay, như trong ví dụ của bạn. – zubergu

+0

@zubergu - Có, bạn đã đúng. Tôi không muốn nó âm thanh như HW-giúp đỡ (mà nó không phải là, tôi đảm bảo với bạn) và tôi nghĩ rằng nguồn là không thích hợp. Ngoài ra, tôi cho rằng HDL là tên của một ngôn ngữ, không phải là phân loại các ngôn ngữ khác nhau. Lời xin lỗi của tôi. Cảm ơn, mặc dù! –

Trả lời

1

There are no arrays in HDL. Trong phần 1.3 của nand2tetris companion book, ông nói

Vì chúng ta đã biết làm thế nào để thực hiện các phiên bản tiểu của các cửa, việc thực hiện các phiên bản n -ary đơn giản chỉ là vấn đề xây dựng các mảng của các cổng chính n, mỗi cổng hoạt động riêng biệt trên các bit của nó. Nhiệm vụ triển khai này khá nhàm chán, nhưng nó sẽ mang trọng lượng của nó khi các cổng nhiều bit này được sử dụng trong các chip phức tạp hơn, như được mô tả trong các chương tiếp theo.

Vì vậy, ngoài việc viết một kịch bản tầm thường bằng Python để tránh tất cả việc nhập đó, bạn không bỏ sót bất kỳ thứ gì.

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