преобразование ASCII-hex в Verilog - PullRequest
0 голосов
/ 09 ноября 2010

Я искал функцию Verilog для преобразования моих входных строк ASCII в шестнадцатеричный вывод. Я не уверен, смогу ли я сделать это в Си и свернуть это с Verilog. До сих пор я мог печатать входные строки ASCII в виде шестнадцатеричных значений, используя:

printf("Hexadecimal Output for <CALL-ID>: ");
for(c = 0; c < strlen(callid); c++)
{
  printf("TO: %x ", callid[c]);
}

Есть ли способ сохранить вывод в текстовом / CSV-файле и сделать его доступным для моего фрагмента кода verilog?

Или, пожалуйста, дайте мне знать, если есть более простой способ в самом Verilog?

1 Ответ

1 голос
/ 09 ноября 2010

Для вывода в текстовый файл вы можете сделать что-то вроде этого:

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

Конечно, можно улучшить проверку ошибок,и вам, вероятно, потребуется настроить форматирование выходных данных в соответствии с вашими потребностями.

...