тактовый умножитель на VHDL

Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить
artyombn
Родился
Сообщения: 1
Зарегистрирован: Сб май 20, 2017 15:53:02

тактовый умножитель на VHDL

Сообщение artyombn »

День добрый, уважаемые форумчане. Я новенький в VHDL, и первое задание мое было это восьмиразрядный тактовый умножитель . Причем не банальным способом где a*b, а иным. Немного поискав информации в интернете я нашел способ, получил умножитель в виде счетчика с регистром сдвига. В общем вот код.

Код: Выделить всё

library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_unsigned.all;

entity test is
    port( 
    clk, r: in std_logic;
    a : in std_logic_vector(7 downto 0);
    b : in std_logic_vector(7 downto 0);
    p : out std_logic_vector(15 downto 0)
    );
    
end test;

--}} End of automatically maintained section

architecture test of test is 
begin
process(clk,r,a,b)
    variable pv,bp: std_logic_vector(15 downto 0);
    begin          
        pv:= "0000000000000000";
        bp:= "00000000" & b;
        if r='1' then 
            pv:="0000000000000000";
            p<=pv;
        else
        if clk'event and clk = '1' then
        for i in 0 to 7 loop
                if a(i) = '1' then
                pv:= pv+bp;     
                p<=pv;
            end if;
            bp:= bp(14 downto 0) & '0';
        end loop;
        end if;     
        end if;http://radiokot.ru:5050/elecir/
        end process;
end test;
а вот результат моделирования.
Изображение

Как видите все работает. Но возникает вопрос. Почему он выдает результат сразу за 1 такт, а не за 8 тактов как должно быть? ведь каждое начало цикла должно входить в 1 такт. а тут сразу весь цикл в такт входит. Но мне нужен тактовый умножитель, чтобы за каждый такт он делал сложение pv с bp и последующим сдвигом влево. Подскажите как сделать так чтобы результат умножения был за 8 тактов а не за 1. Если есть возможность, желательно подскажите на примере, так как я начинающий в этом деле на словах могу не понять. Спасибо.
Вложения
testt.PNG
моделирование
(3.94 КБ) 657 скачиваний
Реклама
Аватара пользователя
Zud
Встал на лапы
Сообщения: 129
Зарегистрирован: Пн авг 19, 2013 03:23:00
Откуда: замкадье

Re: тактовый умножитель на VHDL

Сообщение Zud »

хм, возможно for работает не так , как в Си, и код перерабатывается в большой блок логики.

для решения за 8 тактов возможно надо выделить эту итерацию в отдельное "устройство".
Реклама
Ответить

Вернуться в «ПЛИС»