相当于 Verilog 局部参数的 VHDL
VHDL equivalent of Verilog localparam
我在 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 字符串?
Verilog 没有字符串类型。字符串文字被转换为等效的 ASCII 位向量,每个字符 8 位。所以 str2 是一个 128 位向量参数。 RHS 表达式将 str2 向左移动 8 位的某个倍数,选择一个 ASCII 字符。
我在 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 字符串?
Verilog 没有字符串类型。字符串文字被转换为等效的 ASCII 位向量,每个字符 8 位。所以 str2 是一个 128 位向量参数。 RHS 表达式将 str2 向左移动 8 位的某个倍数,选择一个 ASCII 字符。