本文為大家介紹五款乘法器電路設計方案,包括五款模擬電路設計原理及仿真程序分享,以供參考。
乘法器電路設計方案一:簡易兩位二進制乘法器設計
設計原理:
1、基本公式: A1 A0 * B1 B0=Y3 Y2 Y1 Y0
2、設計理念: 兩位二進制數 A1 A0 和B1 B0 相乘后,結果最高為四位Y3 Y2 Y1 Y0
3、歸納得出:由上式可歸納得出輸出的4位二進制數與輸入的兩位二進制數之間的邏輯,得出下表:
邏輯電路圖
仿真波形圖
乘法器電路設計方案二:十六位硬件乘法器電路設計
利用硬件箱自帶16進制碼發生器,由對應的鍵控制輸出4位2進制構成的1位16進制碼,數的范圍是0000~1111,即0H~FH.每按鍵一次,輸出遞增1,輸出進入目標芯片的4位2進制數將顯示在該鍵對應的數碼管。
乘數和被乘數的輸入模塊將16進制碼的A~F碼設計成輸出為null.使得減少了無用碼的輸入。 兩數相乘的方法很多,可以用移位相加的方法,也可以將乘法器看成計數器,乘積的初始值為零,每一個時鐘周期將乘數的值加到積上,同時乘數減一,這樣反復執行,直到乘數為零。本設計利用移位相加的方法使得程序大大簡化。
系統總體電路組成原理圖如下圖所示:
乘法器電路設計方案三:8位并行乘法器
串行乘法器,通常是兩個N位二進制數x、y的乘積用簡單的方法計算就是利用移位操作來實現。但計算一次乘法需要8個周期,這種乘法器的優點是所占用的資源是所有類型乘法器中最少的,在低速的信號處理中有著廣泛的應用,但是串行乘法器速度比較慢、時延大。
程序設計
? ? ? ? VHDL代碼
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.STD_LOGIC_ARITH.all;
use IEEE.STD_LOGIC_UNSIGNED.all;
entity chengfa is
port( clk :in std_logic;
a :in std_logic_VECTOR(7 downto 0);
b :in std_logic_VECTOR(7 downto 0);
cout:out std_logic_VECTOR(15 downto 0) );
end chengfa;
architecture one of chengfa is
signal a1,b1:std_logic_vector(3 downto 0);
signal a2,b2:std_logic_vector(7 downto 4);
signal cout1:std_logic_vector(15 downto 0);
signal cout2:std_logic_vector(15 downto 0);
signal a1b1,a2b1,a1b2,a2b2:std_logic_vector(15 downto 0);
begin
process(a,b,clk)
begin
if clk‘event and clk=’1‘ then
a1b1《=“0000”&(a(5 downto 0) *b(5 downto 0));
a2b1《=“00”&(a(7 downto 6)*b(5 downto 0))&“000000”;
a1b2《=“00”&(a(5 downto 0)*b(7 downto 6))&“000000”;
a2b2《=(a(7 downto 6)*b(7 downto 6))&“000000000000”;
end if;
end process;
process(clk)
begin
if clk’event and clk=‘1’ then
cout1《=a1b1+a2b1;
cout2《=a1b2+a2b2;
end if;
end process;
process(clk)
begin
if clk‘event and clk=’1‘ then
cout《=cout1+cout2;
end if;
end process;
end one;
8位并行乘法器RTL圖
乘法器電路設計方案四:移位相加乘法器
程序設計
仿真波形圖
?
乘法器電路設計方案五:模擬乘法器設計
下圖顯示了一個簡單的模擬乘法器體現。該電路提供了三個象限模擬乘法。
評論
查看更多