Verilog シミュレーションで、連結、置換、比較などの文字列の基本操作を実行する必要があります。どうしてそれが可能でしょうか?組み込みのサポートはありますか?
前もって感謝します。
Verilog シミュレーションで、連結、置換、比較などの文字列の基本操作を実行する必要があります。どうしてそれが可能でしょうか?組み込みのサポートはありますか?
前もって感謝します。
SystemVerilog構文をサポートする最新のシミュレーターにアクセスできる場合は、string
データ型があります。文字列は連結して比較できます。IEEE Std(1800-2009)を参照してください。
Verilog には文字列データ型はありませんが、Verilog は文字列リテラルをサポートし、それらをバイト ベクトルとして使用します。これは仕様の例です:
module string_test;
reg [8*14:1] stringvar;
initial begin
stringvar = "Hello world";
$display ("%s is stored as %h", stringvar,stringvar);
stringvar = {stringvar,"!!!"};
$display ("%s is stored as %h", stringvar,stringvar);
end
endmodule
文字列は reg データ型を使用するため、通常の演算子を使用して文字列を操作できますが、各文字は 8 ビットを使用することに注意してください。
5.2.3.1 文字列操作
一般的な文字列操作のコピー、連結、および比較は、Verilog HDL 演算子でサポートされています。コピーは簡単な割り当てで提供されます。連結は、連結演算子によって提供されます。比較は等値演算子によって提供されます。ベクトル reg で文字列値を操作する場合、8 ビットの ASCII コードを維持するために、reg は少なくとも 8*n ビット (n は ASCII 文字の数) である必要があります。
検索などの操作が必要な場合は、いくつかのタスクまたは関数を作成する必要があります。