我在verilog模中找到了以下语句:
localparam str2=" Display Demo ", str2len=16;
在我看来str2是一个字符串值,但是我想知道如何在下面的代码片段中处理它。
always@(write_base_addr)
case (write_base_addr[8:7])//select string as [y]
0: write_ascii_data <= 8'hff & (str1 >> ({3'b0, (str1len - 1 - write_base_addr[6:3])} << 3));//index string parameters as str[x]
1: write_ascii_data <= 8'hff & (str2 >> ({3'b0, (str2len - 1 - write_base_addr[6:3])} << 3));
2: write_ascii_data <= 8'hff & (str3 >> ({3'b0, (str3len - 1 - write_base_addr[6:3])} << 3));
3: write_ascii_data <= 8'hff & (str4 >> ({3'b0, (str4len - 1 - write_base_addr[6:3])} << 3));
endcase
首先将字符串值转换为位值吗? Write_ascii_data只有8位长,在我看来,它不足以完全存储案例处理的最终结果。有什么vhdl等效于localparam字符串吗?
答案 0 :(得分:0)
Verilog没有字符串类型。字符串文字被转换为等效的ASCII位向量,每个字符8位。因此str2是一个128位向量参数。 RHS表达式将str2左移8位的倍数,并选择一个ASCII字符。