实验二 简易计数器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二简易计数器设计
实验目的:掌握基本的VHDL语法,能够使用VHDL输入方式,设计实现简单的组合逻辑电路。
实验内容:设计实现个位数的加减乘除计算模块,实现4-8段数码管编码模块,利用两个模块实现计算器。
原理图:如下图所示
仿真结果及结果分析:
如下两张仿真结果图所示,A、B为两个个位的数,表示的范围都是0—7;S 表示A和B两个数进行运算时中间的运算符,即当S为0表示做加法运算、当S 为1表示做减法运算、当S为2表示做乘法运算、当S为3表示做除法运算;Y1和Y0表示A与B运算所得的结果用16进表示,做完后的仿真结果即为对应的七段显示译码器上显示的值,Y1是高位,Y0是低位和除法中的余数,当Y的数值为10则表示负号。
管脚锁定说明:
硬件测试情况说明及结果分析:
根据原理图上的芯片引脚功能按照设好的引脚用线连接好电路,A、B、S应该接到八个开关上控制A、B两个数的运算。开关L3、L2、L1分别对应引脚58、59、60,表示的为数A所表示的二进制数;开关L6、L5、L4分别对应引脚53、54、65,表示的为数B所表示的二进制数;S1、S0对应引脚为51、52,表示的为A 与B之间的运算符,00则为加法、01则为减法、10为乘法、11为除法;而Y0[0]—Y0[6]即输出低位对应七段显示译码器A—G,对应引脚分别为142、141、138、137、136、135、133,而Y1[0]—Y1[6]即输出的高位对应七段显示译码器A—G,
对应引脚分别为10、7、4、3、2、1、144,然后通过八个开关键来操作A、B两数的加减乘除情况,观察七段显示译码器上的结果是否正确,实验完成后可知所做实验符合预期结果的要求,实验成功。
cal代码:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY cal IS
PORT(
a,b:in integer range 7 downto 0;
s :in STD_LOGIC_VECTOR (1 downto 0);
y1,y0:out integer range 10 downto 0);
END cal;
ARCHITECTURE archcal OF cal IS
BEGIN
ca14_1:process(a,b)
variable t:integer;
begin
if s="00" then t:=(a+b);
elsif s="01" then t:=(a-b);
elsif s="10" then t:=(a*b);
else t:=(a/b);
end if;
if (t>=0) then y1<=(t/10);y0<=(t mod 10);
else y1<=10;y0<=(-t);
end if;
end process ca14_1;
END ARCHITECTURE archcal;
seg7代码:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY seg7 IS
PORT(
a:in STD_LOGIC_VECTOR (3 downto 0);
y:out STD_LOGIC_VECTOR (6 downto 0)
);
END seg7;
ARCHITECTURE archseg7 OF seg7 IS
BEGIN
proseg7:process(a)
begin
case a is
when "0000"=>y<="1111110";
when "0001"=>y<="0110000";
when "0010"=>y<="1101101";
when "0011"=>y<="1111001";
when "0100"=>y<="0110011";
when "0101"=>y<="1011011";
when "0110"=>y<="0011111";
when "0111"=>y<="1110000";
when "1000"=>y<="1111111";
when "1001"=>y<="1111011";
when "1010"=>y<="0000001";
when others=>null;
end case;
end process proseg7;
END ARCHITECTURE archseg7;
实验总结:
通过此次实验我们掌握了基本的VHDL语法,学会了使用VHDL输入方式,设计实现简单的组合逻辑电路。学会了实现个位数的加减乘除计算的模块,以及实现4-8段数码管编码模块,并利用两个模块实现计算器,同时也对仿真的步骤加深了印象,能更好的运用。