Я нашел следующее утверждение в модуле 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?