8位乘法器实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.2 8位乘法器的设计
1.实验目的
(1)熟悉isEXPERT/MAX+plusisEXPERT/MAX+plus II/Foudation Series 软件的基本使用方法。
(2)熟悉GW48-CK EDA实验开发系统的基本使用方法。
(3)学习VHDL基本逻辑电路的综合设计。
2.实验内容
设计并调试好由8位加法器构成的以时序逻辑方式设计的8位乘法器。此乘法器通过判断被乘数的位值为1还是零,并通过乘数的左移与上一次和相加的方法,实现了8位乘法的运算,并用GW48-CK EDA实验开发系统进行硬件验证。
3.实验条件
(1)开发设备:Lattice ispEXPERT。
(2)实验设备:GW48-CK EDA实验开发系统。
(3)拟用芯片:ispLSI1032E PLCC-84或EPF10K10LC84-3或XCS05/XL PLCC84以及运算控制电路和外部时钟。
4.实验设计
1)系统的原理框图
2)VHDL源程序
(1)选通与门模块的源程序ANDARITH.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ANDARITH IS
PORT(ABIN: IN STD_LOGIC;
DIN: IN STD_LOGIC_VECTOR(7 DOWNTO 0); DOUT: OUT STD_LOGIC_vector(7 DOWNTO 0)); END ENTITY ANDARITH;
ARCHITECTURE ART OF ANDARITH IS
BEGIN
PROCESS(ABIN,DIN)IS
BEGIN
FOR I IN 0 TO 7 LOOP
DOUT(I)<=DIN(I)AND ABIN;
END LOOP;
END PROCESS;
END ARCHITECTURE ART;
(2)16位锁存器的源程序REG16B.VHD LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY REG16B IS
PORT (CLK: IN STD_LOGIC;
CLR: IN STD_LOGIC;
D: IN STD_LOGIC_VECTOR(8 DOWNTO 0); Q: OUT STD_LOGIC_VECTOR(15 DOWNTO 0)); END ENTITY REG16B;
ARCHITECTURE ART OF REG16B IS
SIGNAL R16S: STD_LOGIC_VECTOR(15 DOWNTO 0); BEGIN
PROCESS(CLK,CLR)IS
BEGIN
IF CLR='1' THEN R16S<="0000000000000000"; ELSIF CLK'EVENT AND CLK= '1' THEN
R16S(6 DOWNTO 0)<=R16S(7 DOWNTO 1);
R16S(15 DOWNTO 7)<=D;
END IF;
END PROCESS;
Q<=R16S;
END ARCHITECTURE ART;
(3)8位右移寄存器的源程序SREG8B.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY SREG8B IS
PORT(CLK:IN STD_LOGIC; LOAD:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); QB: OUT STD_LOGIC);
END ENTITY SREG8B;
ARCHITECTURE ART OF SREG8B IS
SIGNAL REG8B :STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN
PROCESS(CLK, LOAD)IS
BEGIN
IF CLK'EVENT AND CLK='1'THEN
IF LOAD='1'THEN REG8B<=DIN;
ELSE REG8B(6 DOWNTO 0)<=REG8B(7 DOWNTO 1); END IF;
END IF;
END PROCESS;
QB<=REG8B(0);
END ARCHITECTURE ART;
(4)乘法运算控制器的源程序ARICTL.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ARICTL IS
PORT(CLK:IN STD_LOGIC; START:IN STD_LOGIC; ARIEND:OUT STD_LOGIC;
CLKOUT: OUT STD_LOGIC;
RSTALL: OUT STD_LOGIC);
END ENTITY ARICTL;
ARCHITECTURE ART OF ARICTL IS
SIGNAL CNT4B: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN
RSTALL<=START;
PROCESS(CLK,START)IS
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)IS
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 ART;
(5)8位乘法器的源程序MULTI8X8.VHD
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MULTI8X8 IS
PORT(CLK:IN STD_LOGIC;
START:IN STD_LOGIC;
A:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
ARIEND:OUT STD_LOGIC;