VHDL: (поток данных и блок управления) вычислить log2, представленный как 8-битное целое число без знака - PullRequest
0 голосов
/ 09 июля 2020

Мне нужно спроектировать цифровую схему в форме потока данных и управления, чтобы вычислить всю часть логарифма по основанию 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" мне понадобится регистр сдвига,
  • для журнала мне понадобится регистр счетчика

Я смог увидеть это только теоретически, я изо всех сил пытаюсь поместить все это в код.

Есть кто-нибудь знает, как я могу запустить архитектуру?

...