Ich möchte ein Byte-Array (oder einen anderen möglichen Typ) zu einer langen Zeichenfolge initialisieren. Zum Beispiel definieren: string str = "abcdefg"
. Ich lese diese zwei Links (Link 1 & Link 2), aber ich konnte einen einfachen Weg nicht finden. Dies sind zwei harte Code-Möglichkeiten, die ich fand:Wie kann man einem Byte-Array in SystemVerilog einen synthetisierbaren String zuweisen?
1_ byte str [0:7]; = '{"a", "b", "c", "d", "e", "f", "g", "h"};
Dies ist kein geeigneter Weg, weil die Zeichenfolge ist sehr lang in meiner realen Anwendung und ich kann sie nicht schreiben, Brief für Buchstabe.
2_ Verwendung des Zeichenfolgetyps: string str = "abcdefg"
. Aber es kann nur simuliert werden und ist nicht synthetisierbar. Quartus erlaubt nur die Definition einer Zeichenkette in Funktion oder Aufgabe. So verwende ich die Funktion getStr()
zur Initialisierung string:
typedef byte string_t[0:7];
function string_t getStr();
int i;
string tmp_str = "abcdefgh";
string_t str;
for(i=0; i<8; i=i+1)
str[i]=tmp_str[i];
return str;
endfunction
und verwenden Sie es in meinem Code:
byte str [0:7];
always @(posedge clk) begin
str = getStr(); // str will be "abcdefg" after getStr() return it.
//The rest of the code...
end
Ich denke, es muss eine bessere und einfachere Möglichkeit für eine Zeichenfolge in SystemVerilog initialisieren. Wenn du es weißt, hilf mir. Vielen Dank.
Die Answare ist in [dieser Link] (http://electronics.stackexchange.com/questions/228686/how-can-assign-a-synthesizable-string-to-a-byte-array-in-systemverilog/ 228779 # 228779) ... –