VHDL эквивалент Verilog localparam - PullRequest
       16

VHDL эквивалент Verilog localparam

0 голосов
/ 12 сентября 2018

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

1 Ответ

0 голосов
/ 12 сентября 2018

Verilog не имеет строковых типов. Строковый литерал преобразуется в эквивалентный битовый вектор ASCII, 8 бит на символ. Таким образом, str2 является 128-битным векторным параметром. Выражения RHS сдвигают str2 влево на кратное 8 битам, выбирая один символ ASCII.

...