一、实验目的
(1)熟悉EDA软件,并能熟练使用。
(2)分析设计任务,根据任务要求完成设计内容。
(3)利用软件对设计内容进行仿真调试,得到正确运行结果。
二、实验要求
(1)首先设计半减器,然后用例化语句将它们连接起来,图1中h_suber是半减器,diff是输出差,s_out是借位输出,sub_in是借位输入。
(2)根据图1设计全减器。以全减器为基本硬件,构成串行借位的8位减法器,要求用例化语句来完成此项设计(减法运算是 x – y - sun_in = diffr)。
三、实验步骤
(1) 建立工作库文件夹和编辑设计文件
File->New Project Wizard
(2) 创建工程
File->New->Verilog HDL File
(3) 全程编译
(4) 时序仿真
输入有1,输出就是1;只有当输出全为0时,输出才为零。证明是2输入或门。
b是减数,a是被减数,d、s分别是本位输出和借位输出。
只有当a和b相同时,d才是低电平;即是 被减数 和减数 相同时 差是0。
只有当b比a大的时候,s才是高电平;即是 减数比被减数大的时候,本位向高位借1。
从上至下依次是减数(x)、低位借位(sub_in)、被减数(y)、高位借位(sub_out)、差(differ).
以下假设均建立在被减数≥减数情况,小于情况分析类似亦成立。
当x和 y 相同 ① sub_in 是0时,differ是低电平0;②sub_in 不是0时,differ是高电平1;
当x和 y 不同 ① sub_in 是0时,differ是高电平1;② sub_in 不是0时,differ是低电平0;
当x和 y 相同
1.sub_in是0时① sub_out 是0时,differ是低电平0;② sub_out 不是0时,differ是高电平1;
2.sub_in是1时 ,sub_out 不是0时(是0不存在),differ是高电平1;
当x和 y 不同
1.sub_in是0时① sub_out 是0时,differ是高电平1;② sub_out 不是0时,differ是低电平0;
2.sub_in是1时, sub_out 是0(1情况不考虑)时,differ是低电平0;
符合全减器规律
下面给出方便理解的图示和真值表
四、VHDL程序文本
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY H_SUBER IS --定义实体半减器
PORT(A,B:IN STD_LOGIC; --减数与被减数
D,S:OUT STD_LOGIC --分别为本位输出和错位输出
);
END;
ARCHITECTURE HALF_SUBER OF H_SUBER IS
BEGIN
D<=A XOR B;
S<=(NOT A)AND B;
END ARCHITECTURE HALF_SUBER;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY OR2A IS --定义2输入或门
PORT(
A,B:IN STD_LOGIC;
C:OUT STD_LOGIC
);
END ENTITY OR2A;
ARCHITECTURE ONE OF OR2A IS
BEGIN
C<=A OR B;
END ARCHITECTURE ONE;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY F_SUBER IS --定义实体全减器
PORT(X,Y,SUB_IN:IN STD_LOGIC; --X、Y 减数被减数; SUB_IN 借位输入
DIFFR,SUB_OUT:OUT STD_LOGIC --DIFFR 差 SUB_OUT 借位输出
);
END;
ARCHITECTURE FULL_SUBER OF F_SUBER IS
COMPONENT H_SUBER --半减器例化声明
PORT(A,B:IN STD_LOGIC;
D,S:OUT STD_LOGIC
);
END COMPONENT;
COMPONENT OR2A --输入或门例化声明
PORT(A,B:IN STD_LOGIC;
C:OUT STD_LOGIC
);
END COMPONENT;
SIGNAL NET1,NET2,NET3 :STD_LOGIC; --定义敏感信号
BEGIN
U1:H_SUBER PORT MAP(A=>X,B=>Y,D=>NET1,S=>NET2); --引用半减器
U2:H_SUBER PORT MAP(A=>NET1,B=>SUB_IN,D=>DIFFR,S=>NET3); --引用半减器
U3:OR2A PORT MAP(A=>NET3,B=>NET2,C=>SUB_OUT); --引用或门
END ARCHITECTURE FULL_SUBER;
五、遇到的问题及解决办法
- Q10版本之后的Quartus在New中不直接提供软件波形仿真,一般需要调用ModelSim软件进行操作:
解决办法:按照图示依次点击Tools->Options->General->EDA Tool Options->ModelSim 把路径设置为ModelSim软件所在处。
- VHDL文本正确,工程路径都没问题,波形输出失败,提示ModelSIM调用失败:
解决办法:检查问题1是否已经解决,解决后关闭软件,以管理员身份启动软件,再次仿真。