- 34
- 0
- 约3.29千字
- 约 5页
- 2022-12-23 发布于广东
- 举报
实验目的和要求:
1、学习应用移位相加原理设计8位乘法器。
2、了解移位相加原理构成乘法器与用组合逻辑电路直接设计的同样功能的电路优势。
实验任务:根据图示,完成此项设计必须的4个元件(8位移位寄存器、1位乘法器、8位加法器、16位移位寄存器)的VHDL设计,并对它们分别仿真测试。再根据此图完成整体VHDL程序设计(包括元件例化),再仿真测试,与图5-14比较,硬件验证中,CLK用键控制,注意不能有抖动(实用无抖动键,或设计一个键消抖动模块)。
实验流程
新建工程:file→new→→确定
分别编写8位移位寄存器、1位乘法器、8位加法器、16位移位寄存器,并分别进行波形仿真验证,波形仿真无误后生成文件,以供后面进行调用。
创建文件,在中找到先前生成的文件进行调用。按照所给的原理图进行连接,连接完成之后进行构建,构建无误后将原理图文件设置成顶级实体,进行波形仿真,验证程序。
实验过程
1、8位移位寄存器
代码:LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY SREG8B IS
PORT ( CLK : IN STD_LOGIC;LOAD: IN STD_LOGIC;
load: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
qb: OUT STD_LOGIC );
END SREG8B;
ARCHITECTURE behav OF SREG8B IS
SIGNAL A : STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
PROCESS (CLK, load)
BEGIN
IF LOAD=1THEN A = load;
ELSIF CLKEVENT AND CLK =1THEN
A(6 DOWNTO 0) = A(7 DOWNTO 1);
END IF;
END PROCESS;
qb = A(0);
END behav;
波形仿真结果:
2、1位乘法器
代码:LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY and8b IS
PORT(qb:IN STD_LOGIC;
B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
dout:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END and8b;
ARCHITECTURE behav OF and8b IS
BEGIN
PROCESS(qb,B)
BEGIN
FOR I IN 0 TO 7 LOOP
dout(I)=B(I) AND qb;
END LOOP;
END PROCESS;
END behav;
波形仿真结果:
3、8位加法器
代码:
四位加法器
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity adder4b is
port(cin: in std_logic;
A: in std_logic_vector(3 downto 0);
B: in std_logic_vector(3 downto 0);
S: out std_logic_vector(3 downto 0);
cout: out std_logic);
end entity adder4b;
architecture ART of adder4b is
signal S5: std_logic_vector(4 downto 0);
signal A5,B5: std_logic_vector(4 downto 0);
begin
A5 = 0 A;
B5 = 0 B;
S5 = A5 + B5 + cin;
S = S5(3 downto 0);
cout = S5(4);
end architecture ART;
8位加法器
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity adder8bit is
port(cin: in std_logic;
A: in std_logic_vector(7 downto 0);
B: in std_logic_vector(7 downto 0);
S: out std_logic_vector(7 downto 0);
cout: out std_logic);
end entity adder8bit;
architecture ART of
原创力文档

文档评论(0)