📄 chengfa_8.vhd
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY CHENGFA_8 IS
PORT(CLK:IN STD_LOGIC;
A:IN INTEGER RANGE -128 TO 127; --被乘数
B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);--乘数
Y:OUT INTEGER RANGE -32768 TO 32767); --最后的乘积结果
END CHENGFA_8;
ARCHITECTURE CHENGFA_8_2 OF CHENGFA_8 IS
TYPE STATE_TYPE IS(S0,S1,S2);--定义三种状态
SIGNAL STATE :STATE_TYPE;
BEGIN
PROCESS(CLK)
variable p,t:integer range -32768 TO 32767;--p为累加结果T=2^k
variable count:INTEGER RANGE 0 TO 7;--计数
begin
if clk'event and clk='1' then
case state is
WHEN S0=> --初始化
COUNT:=0;
P:=0;
T:=A;
STATE<=S1;
WHEN S1=> --按位进行相乘累加
IF COUNT=7 THEN --判断八位乘法是否结束
STATE<=S2;
ELSE
IF B(COUNT)='1' THEN --如果没有结束,且B的这一位是一累加
P:=P+T;
END IF;
T:=T*2; --T指向前一位
COUNT:=COUNT+1;
STATE<=S1;
END IF;
WHEN S2=> --将结果输出
Y<=P;
STATE<=S0; --进行下一次的乘法运算
END CASE;
END IF;
END PROCESS;
END CHENGFA_8_2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -