Вы, вероятно, введены в заблуждение неправильным представлением о персонажах. В оборудовании нет такого понятия, как персонаж. Есть только наборы битов или кодов. Единственное, что преобразует двоичные коды в символы, это ваш терминал. Он интерпретирует коды определенным образом и формирует буквы для вас. Таким образом, все printfs
в 'c' и $display
в verilog только отправляют коды на терминал (или в файл).
Для преобразования символов в коды используется клавиатура, которую вы также используете для ввода в программе. Затем компилятор интерпретирует вашу программу. Компилятор Verilog (а также компилятор 'c') представляет строки в двойных кавычках (которые вы ввели) в виде набора байтов напрямую. Verilog, а также 'c' используют кодировку ascii-8 для таких символьных строк, что означает, что код для 'a' является десятичным 97, а 'b' - 98, .... Каждый символ имеет 8-битную ширину и заключен в кавычкиstring формирует конкатенацию байтов кодов ascii.
Итак, отвечая на ваш вопрос, вы можете преобразовать коды ascii в символы, отправив их на терминал через функцию $ display (или другую), используя модификатор% s.
Итак, пример:
module A;
reg[8*5-1:0] hello;
reg[8*3 - 1: 0] bye;
initial begin
hello = "hello"; // 5 bytes of characters
bye = {8'd98, 8'd121, 8'd101}; // 3 bytes 'b' 'y' 'e'
$display("hello=%s bye=%s", hello, bye);
end
endmodule