Например TDA7294

Форум РадиоКот • Просмотр темы - тактовый умножитель на VHDL
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 20:04:04

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: тактовый умножитель на VHDL
СообщениеДобавлено: Сб май 20, 2017 15:59:29 
Родился

Зарегистрирован: Сб май 20, 2017 15:53:02
Сообщений: 1
Рейтинг сообщения: 0
День добрый, уважаемые форумчане. Я новенький в 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 KiB]
Скачиваний: 623
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: тактовый умножитель на VHDL
СообщениеДобавлено: Вс июл 23, 2017 02:29:11 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн авг 19, 2013 03:23:00
Сообщений: 129
Откуда: замкадье
Рейтинг сообщения: 3
хм, возможно for работает не так , как в Си, и код перерабатывается в большой блок логики.

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


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y