Программируемая логика - это не так уж и сложно. Разберемся вместе.
Ответить

Двухразрядный умножитель vhdl

Вт окт 08, 2013 14:22:22

Провести описание (двумя способами) логической схемы с регулярными соединениями элементов и сравнить результаты моделирования.

С сумматором все понятно, но как описать умножитель?((
Вложения
1.JPG
фотка
(51.67 KiB) Скачиваний: 1005

Re: Двухразрядный умножитель vhdl

Вт окт 08, 2013 20:32:43

Что, лекции не слушал? :))

i - номер бита множимого
j - номер бита множителя

Ni*Mj=0, если Ni или Mj равно 0
Ni*Mj=Ni*2^j, если Ni и Mj равны 1

Умножение на 2^j это, фактически, сдвиг, т.е. можно свести к одно битовым сумматорам со сдвигом, подобно обычному умножению в столбик.
Код:
      11001001b
*          101b
  ----------
      11001001b
+    00000000 b
+   11001001  b 
  ----------
    1111101101b

Для множителей больших размеров есть хитрости. Посмотреть можно, например, тут. И вообще, поисковики рулят.

Банзай! Дерзай! :)

Re: Двухразрядный умножитель vhdl

Ср окт 09, 2013 14:26:06

Как раз таки это до меня дошло (вот только применять уж извините мозговю.net), я начеркал такой код, но правильно ли я в begin все сделал?

Код:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity mult2 is
    Port ( a1 : in  STD_LOGIC;
           a2 : in  STD_LOGIC;
           sx : in  STD_LOGIC;
           p1 : out  STD_LOGIC;
           p2 : out  STD_LOGIC);
end mult2;

architecture Behavioral of mult2 is

COMPONENT add1
   PORT(
      a : IN std_logic;
      b : IN std_logic;         
      s : OUT std_logic;
      c : OUT std_logic
      );
   END COMPONENT;
   
signal s1,s2 : std_logic;

begin

   p1 <= a1 and sx;
   s1 <= a1 and a2;
   s2 <= a2 and sx;
   o1: add1 port map (s1,p2,s2);
   o2: add1 port map (s2);

end Behavioral;
Последний раз редактировалось SKyzZz Ср окт 09, 2013 15:24:20, всего редактировалось 1 раз.

Re: Двухразрядный умножитель vhdl

Ср окт 09, 2013 15:04:41

Цитировать предыдущее сообщение, да ещё полностью, это нарушение правил этого форума (если мне не изменяет память). Уберите цитату, а то от модераторов ещё оплеуху получите. :)

С синтаксисом VHDL я вам не помогу, давно это было, как говориться.
И, как вы наверное уже догадались, поисковики снова рулят!
http://yandex.ru/yandsearch?text=vhdl+m ... 9644&lr=67
http://www.csee.umbc.edu/portal/help/VH ... html#mul32
Я бы на вашем месте пару тройку страниц поискового ответа просмотрел бы...
Вы не первый с таким вопросом, и вы далеко не одиноки...

Re: Двухразрядный умножитель vhdl

Ср окт 09, 2013 15:27:19

Да не там искал скорее всего, спасибо, просто мне по большому счастью это не нужно, потому, мне гораздо интересно ковыряться в ассемблере например...не мое это явно)

Re: Двухразрядный умножитель vhdl

Ср окт 09, 2013 16:04:17

А есть ещё однотактные умножители... :) http://paralichka85.px6.ru/5cpu/glava05_11.htm
Ответить