3.4.3字符串常量
字符串是雙引號內的字符序列,用一串8位二進制ASCⅡ碼的形式表示,每一個8位二進制ASCⅡ碼代表一個字符。例如:字符串“ab”等價於16'h5758。如果字符串被用作Verilog表達式或復制語句的操作數,則字符串被看做無符號整數序列。
1.字符串變量聲明
字符串變量是寄存器型變量,它具有與字符串的字符數乘以8相等的位寬。
【例3.13】字符串變量的聲明。
存儲12個字符的字符串“Hello China!”需要8*12(即96位)寬的寄存器。
reg [8*12:1] str1;
initial
begin
str =“Hello China!”;
end
2.字符串操作
可以使用Verilog HDL的操作符對字符串進行處理,被操作符處理的數據是8位ASCⅡ碼的序列。在操作過程中,如果聲明的字符串變量位數大於字符串實際長度,則在賦值操作后,字符串變量的左端(即高位)補0。這一點與非字符串值的賦值操作是一致的。如果聲明的字符串變量位數小於字符串實際長度,那么字符串的左端被截去,這些高位字符就丟失了。
【例3.14】字符串操作的例子
module string_test;
reg[8*14:1] stringvar;
initial
begin
stringvar=“Hello China”;
$display(“%s is stored as %h”,stringvar,stringvar);
Stringvar={stringvar.“!!!”};
$display(“%s is stored as %h”,stringvar,stringvar);
end
endmodule
輸出結果為:
Hello China is stored as 00000048656c6c6f20776f726c64
Hello China!!! is stored as 48656c6c6f20776f726c64212121
