У меня есть простой блок, написанный на System C, который принимает два массива 10x10 и выполняет умножение матриц на них для получения вывода 10x1. Проблема, с которой я сталкиваюсь, заключается в том, что эти массивы 10x10 фактически хранятся как «двойники», поэтому данные, поступающие в этот блок, очень велики, а использование пространства на плате FPGA, которую я использую, слишком велико для моих целей.
Как мне последовательно читать один бит за такт массивов 10x10, чтобы я не пытался вставить два двойных массива 10x10 за один такт?
Как мне также настроить свой тестовый стенд для отправки этих данных?
В настоящее время в моем модуле у меня есть:
sc_in<double> in_0;
double [10][10] input_0;
void init_0(){
int i, j;
for (i=0; i<10; i++){
for(j=0; j<10; j++){
input_0[i][j] = in_0.read();
}
}
}
SC_METHOD(init_0);
sensitive << in_0 << clock.pos();
и мой тестовый стенд работает следующим образом:
for(i=0; i<10; i++){
for(j=0; j<10; j++){
in_0 = j;
wait();
}
}
Эти два фрагмента кода предназначены только для настройки данных перед умножением матриц. Текущий код создает input_0 как матрицу 10x10, содержащую все 9, то есть последнее значение цикла double for в моем тестовом стенде. Мне нужен массив 10x10, где каждая строка равна {0 1 2 3 4 5 6 7 8 9}.
Спасибо.