文档介绍:EDA课设八位硬件乘法器
8位硬件乘法器
一、设计目的
①学习移位相加时序式乘法器的设计方法
②学习层次化设计方法
③学习原理图调用VHDL模块方法
④熟悉EDA仿真分析方法
设计CESS(ABIN, DIN)
BEGIN
FOR I IN 0 TO 7 LOOP
DOUT(I) <= DIN(I) AND ABIN;
END LOOP;
END PROCESS;
END behave;
时序仿真图:
4. 16为锁存寄存器REG16
LIBRARY IEEE;
USE ;
ENTITY REG16 IS
PORT ( CLK,CLR,EN : IN STD_LOGIC;
D : IN STD_LOGIC_VECTOR(8 DOWNTO 0);
Q : OUT STD_LOGIC_VECTOR(15 DOWNTO 0)
);
END REG16;
ARCHITECTURE behave OF REG16 IS
SIGNAL R16S : STD_LOGIC_VECTOR(15 DOWNTO 0);
BEGIN
PROCESS(CLK, CLR,EN)
BEGIN
IF EN='1' THEN
IF CLR = '1' THEN R16S <= (OTHERS =>'0') ;
ELSIF CLK'EVENT AND CLK='1' THEN
R16S(6 DOWNTO 0) <= R16S(7 DOWNTO 1);
R16S(15 DOWNTO 7) <= D;
END IF;
END IF;
END PROCESS;
Q <= R16S;
END behave;
时序仿真图:
5. 运算控制器ARICTL
LIBRARY IEEE;
USE ;
USE ;
ENTITY arictl IS
PORT ( CLK:IN STD_LOGIC; START:IN STD_LOGIC;
CLKOUT:OUT STD_LOGIC; RSTALL:OUT STD_LOGIC;
ARIEND:OUT STD_LOGIC);
END ENTITY arictl;
ARCHITECTURE ART5 OF arictl IS
SIGNAL CNT4B:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
RSTALL<=START;
PROCESS (CLK,START)
BEGIN
IF START = '1'THEN CNT4B<="0000";
ELSIF CLK'EVENT AND CLK='1' THEN
IF CNT4B<8 THEN
CNT4B<=CNT4B+1;
END IF;
END IF;
END PROCESS;
PROCESS (CLK,CNT4B,START)
BEGIN
IF START = '0' THEN
IF CNT4B<8 THEN
CLKOUT <=CLK; ARIEND<= '0';
ELSE CLKOUT<='0';
ARIEND<= '1';
END IF;
ELSE CLKOUT<=CLK; ARIEND<= '0';
END IF;
END PROCESS;
END ARCHITECTURE ART5;
时序仿真图:
四、实验数据记录及结果
实验电路图:
引脚分布图:
仿真结果:
进行仿真时,先分别将A,B置数,之后将置入的数据锁存,摁下控制CLK的按
钮进行计算,当最左边灯亮起时则为运算结束,左边灯为结果。
上图为2*2