一个字符串是由双引号"括起来并包含在一行中的字符序列。
在表达式和赋值语句中,用作操作数的字符串被视为由8bit ASCII码值表示的无符号整数常量。
字符串变量是wire/reg类型的变量,宽度等于字符串中的字符个数乘以8。
reg [8*12 -1 : 0] stringVar; // 可以存储12个字符
initial begin
stringVal = "Hello World!";
end
可以使用Verilog的运算符来操作字符串,操作的值都是以8bit ASCII值为一个整体。
$display自动地在输出后进行换行,$write则在输出后不换行。在$display和$write中输出格式控制是用双引号括起来的字符串。
// 字符串打印
$display("%s is stored as %h", stringVar,stringVar);
// 字符串拼接
stringVar = {"Hello ","World!"};
格式说明符,%和格式字符组成,将输出地数据转换成指定的格式输出。
转义字符
输出数字( 八进制、十进制、十六进制)时:
在线生成字符画网站
`timescale 1ns / 1ns
module tb_ascii_pic();
initial begin
show_pass();
# 100 ;
$stop;
end
task automatic show_pass();
begin: pass
$display("pwd: %m");
$display("PPPPPPPPPPPPPPPPP AAA SSSSSSSSSSSSSSS SSSSSSSSSSSSSSS ");
$display("P::::::::::::::::P A:::A SS:::::::::::::::S SS:::::::::::::::S");
$display("P::::::PPPPPP:::::P A:::::A S:::::SSSSSS::::::SS:::::SSSSSS::::::S");
$display("PP:::::P P:::::P A:::::::A S:::::S SSSSSSSS:::::S SSSSSSS");
$display(" P::::P P:::::P A:::::::::A S:::::S S:::::S ");
$display(" P::::P P:::::PA:::::A:::::A S:::::S S:::::S ");
$display(" P::::PPPPPP:::::PA:::::A A:::::A S::::SSSS S::::SSSS ");
$display(" P:::::::::::::PPA:::::A A:::::A SS::::::SSSSS SS::::::SSSSS ");
$display(" P::::PPPPPPPPP A:::::A A:::::A SSS::::::::SS SSS::::::::SS ");
$display(" P::::P A:::::AAAAAAAAA:::::A SSSSSS::::S SSSSSS::::S ");
$display(" P::::P A:::::::::::::::::::::A S:::::S S:::::S");
$display(" P::::P A:::::AAAAAAAAAAAAA:::::A S:::::S S:::::S");
$display("PP::::::PP A:::::A A:::::A SSSSSSS S:::::SSSSSSSS S:::::S");
$display("P::::::::P A:::::A A:::::A S::::::SSSSSS:::::SS::::::SSSSSS:::::S");
$display("P::::::::P A:::::A A:::::AS:::::::::::::::SS S:::::::::::::::SS ");
$display("PPPPPPPPPPAAAAAAA AAAAAAASSSSSSSSSSSSSSS SSSSSSSSSSSSSSS ");
$display("time: %t",$time );
end
endtask
endmodule