我正在寻找一个Verilog函数来将我的ASCII输入字符串转换为十六进制输出。我不确定我是否可以在C中完成它并与Verilog一起使用它。到目前为止,我能够使用以下命令将输入ASCII字符串打印为十六进制值:
printf("Hexadecimal Output for <CALL-ID>: ");
for(c = 0; c < strlen(callid); c++)
{
printf("TO: %x ", callid[c]);
}
有没有办法将输出保存在text / csv文件中并使其可以访问我的verilog代码段?
或者请告诉我Verilog本身是否有更简单的方法?
答案 0 :(得分:1)
要输出到文本文件,您可以执行以下操作:
static int string_to_hex_file(const char *filename, const char *string)
{
FILE *out;
const char *s;
if((out = fopen(filename, "w")) == NULL)
return 0;
fprintf(out, "\"%s\", ", string);
for(s = string; *s; s++)
{
if(s != string)
fprintf(out, ", ");
fprintf(out, "0x%02x", (unsigned char) *s);
}
fprintf(out, "\n");
fclose(out);
return 1;
}
string == "this is a test"
的示例输出:
"this is a test", 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, 0x20, 0x74, 0x65, 0x73, 0x74
错误检查当然可以改进,您可能需要调整输出格式以满足您的需求。