компонент множителя - PullRequest
       100

компонент множителя

0 голосов
/ 25 февраля 2020

Я пытаюсь построить компонент верхнего уровня с множителем 4x4 в VHDL, и у меня возникают некоторые проблемы с пониманием нескольких вещей.

Я пытаюсь написать код VHDL для представления следующего компонента ниже:

Схема для реализации кода VHDL

Я написал для него следующий код VHDL, но хотел бы, чтобы кто-нибудь взглянул на него и дал мне свой отзыв:

LIBRARY ieee;
USE ieee.std_logic_1164.all;


ENTITY multiplier IS
    PORT(
            cin  : IN STD_LOGIC;

            cout:  OUT STD_LOGIC;
            SUM :  OUT STD_LOGIC;

            mk1 :  IN STD_LOGIC;
            mk  :  IN STD_LOGIC;

            q0  :  IN STD_LOGIC;
            q1  :  IN STD_LOGIC);


END multiplier;

ARCHITECTURE function OF multiplier IS
    BEGIN

            cout <= (((q0 AND mk1) AND (q1 AND mk)) OR ((q0 AND mk1) AND cin) OR ((q1 AND mk) AND cin));

            sum  <= ((q0 AND mk1) XOR (q1 AND mk) XOR cin);

END function;

Это подводит меня к моему последнему вопросу, моделирующему сигналу, как я могу подтвердить функциональность схемы самостоятельно?

Заранее спасибо

1 Ответ

0 голосов
/ 25 февраля 2020

Изображение, к которому вы привязали, а также код, который вы написали, не для множителя 4x4 (4x4 имеет два 4-битных входа, в то время как это имеет два 2-битных входа), но я предполагаю, что это часть большая система. Если это не так, то в этом исследовании немного говорится об архитектуре множителя 4x4: https://www.researchgate.net/publication/321382885_A_Novel_Heterogeneous_Approximate_Multiplier_for_Low_Power_and_High_Performance/figures?lo=1

Мне кажется, что изображение, которое вы предоставили, также хочет, чтобы вы поместили q0, q1 и mk как выходы также. Поэтому убедитесь, что вы создали еще 3 выходных порта, которые управляются этими входами. Кроме того, ваша полная логика сумматора c правильная, а код, который вы написали, соответствует изображению, которое вы предоставили. Что касается симуляции, сначала вам нужно написать тестовый стенд. Вот хороший урок для него: https://allaboutfpga.com/vhdl-testbench-tutorial/

И, наконец, вам нужно будет запустить этот тестовый стенд. Это будет зависеть от того, какой комплект моделирования вы используете (Vivado, ModelSim и т. Д. c.), Но в большинстве из них вы просто устанавливаете код в качестве верхнего уровня, а затем нажимаете кнопку запуска.

Надеюсь, что это помогло.

...