Мне нужно спроектировать цифровую схему в форме потока данных и управления, чтобы вычислить всю часть логарифма по основанию 2 положительного числа N, представленного как 8-битное целое число без знака в VHDL.
Обычно я делаю это:
int log2 (int N) {
int count = -1;
while (N>0){
N = N >> 1;
count++
}
return count;
}
Я использую 8-битное целое число для представления числа N и смещаю его нулями вправо. Тогда количество смещений минус 1 равно log2.
Я уже создал объект:
entity log2 is
port (
clock, reset: in bit; -- global control: clock and reset
start: in bit;
ready: out bit; -- finished execution (equal to 1 when the calculation is finished)
N: in bit_vector(7 downto 0);
logval: out bit_vetor(3 downto 0) -- log2(N)
);
end entity log2;
Но я борюсь со следующим процессом.
Я сделал диаграмму ASM, чтобы помочь, и вот она:
Блок-схема дизайна
И я также знаю, что мне нужны некоторые элементы потока данных, например:
- для "reg" мне понадобится регистр сдвига,
- для журнала мне понадобится регистр счетчика
Я смог увидеть это только теоретически, я изо всех сил пытаюсь поместить все это в код.
Есть кто-нибудь знает, как я могу запустить архитектуру?