У меня есть следующая функция с директивой set_directive_interface -mode axis -register -register_mode both "FIR" Result
в Vivado HLS:
void Func(int A[2], int B[2], int* Result)
{
int Temp = 0x00;
Loop: for(int i = 0x00; i < 0x02; i++)
{
Temp += A[i] * B[i];
}
*Result = Temp;
}
Эта функция выдаст следующий отчет:
Я получил два интерфейса памяти с адресом, CE и входом данных. Все как и ожидалось.
Теперь я использую следующую функцию:
void Func(int A[2], int B[2], int* Result)
{
int Temp = 0x00;
Temp = A[1] * B[1] + A[0] * B[0];
*Result = Temp;
}
Это даст следующий вывод:

Так почему вторая функция создает интерфейс с двумя портами RAM?