Я думаю, что этот вопрос лучше всего понять на примере. Итак, здесь мы go:
Представьте себе, что определены следующие значения:
parameter number_of_points_before_point_of_interest = 4;
logic [15:0] test_data = 16'b0000111100001111;
logic [3: 0] point_of_interest;
logic [7: 0] output_data;
, если значение, присвоенное point_of_interest, равно 1, а значение number_of_points_before_point_of_interest равно 4. Я хочу, чтобы мои output_data были {test_data [E: F], test_data [5: 0]} или 8'b00111100.
По сути, я хочу взять 8 битов, начиная с (point_of_interest - number_of_points_before_point_of_interest) и заканчивая (point_of_interest - number_of_points_interest_before_point_of + 7.) -> num_pt_before_pot
buffer[pot - num_pt_before_pot: 4'hF] // Invalid since pot not constant
buffer[pot -: num_pt_before_pot] // Part-select doesn't work either
Примечание: изменчивость банка не является проблемой во втором случае, поскольку начальная точка может быть переменной. Несмотря на это, part-select не дает желаемых результатов в этом примере.
Ваша помощь очень ценится. Заранее спасибо