# [n:0]?還是[0:n]? [TOC] ## 前言 由於很多同學都有宣告上的問題,到底是[n:0]?還是[0:n]?以下為大家說明他們的差異。 ## 測試 這邊做了一個小測試。我宣告兩個input分別是in_a、in_b,兩者分別使用[1:0]與[0:1],然後看看讓out在sel=0的時候選in_a[1];在sel=1的時候選in_b[1],比較兩者差別: ```verilog= module Sig(in_a, in_b, out, sel); input [1:0]in_a; input [0:1]in_b; input sel; output out; assign out = (sel == 1'b1)? in_b[1] : in_a[1]; endmodule ``` 以下是test bench: ```verilog= module tb; reg [1:0]in_a; reg [1:0]in_b; reg sel; wire out; Sig sig_000(.in_a(in_a), .in_b(in_b), .out(out), .sel(sel)); initial begin in_a = 2'b01; in_b = 2'b01; sel = 1'b0; #5 sel = 1'b1; #5 $finish; end endmodule ``` 以下是波形圖: | ![](https://i.imgur.com/qoMQEkY.png) | | -------- | ## 懶人包結論 結論如下圖:(in[0]、in[1]所拿到的值會不同) | ![](https://i.imgur.com/OVkpaqj.png) | ![](https://i.imgur.com/31K3XHQ.png)| | -------- | -------- | 在助教最終測試的時候會按照我們spec的方式給值,宣告[n:0]跟[0:n]如上所示,出來的結果不同,所以盡量按照spec。 # [HOMEPAGE](https://hackmd.io/s/HJdaLPTQV)