相当于 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 字符。