【VHDL】【作业】2八选一、半减器、全减器

【VHDL】【作业】2 基于CASE语句的4选1多路选择器表述



前言

记录学习的过程,顺便期末复习一下。


1、八选一多路选择器

LIBRARY IEEE; --引用库
USE IEEE.STD_LOGIC_1164.ALL; --调用库中的程序包
ENTITY MUX81A IS  --实例化一个 名为 MUX81A 的实体
	PORT ( a, b, c, d, e, f, g, h, s0, s1, s2 : IN STD_LOGIC; y : OUT STD_LOGIC);--定义其各端口
END ENTITY MUX81A;

ARCHITECTURE BHV OF MUX81A IS
	SIGNAL S : STD_LOGIC_VECTOR (2 DOWNTO 0);
	BEGIN
		S <= s2 & s1 & s0 ; -- 并置s2、s1与s0 
		PROCESS(s2,s1,s0) BEGIN --敏感信号表中可以方s1 s0,也可以直接放s
			CASE (S) IS
			 WHEN "000" => y<=a; -- "=>"是格式符号 "<="是赋值符号
			 WHEN "001" => y<=b;
			 WHEN "010" => y<=c;
			 WHEN "011" => y<=d;
			 WHEN "100" => y<=e;
			 WHEN "101" => y<=f;
			 WHEN "110" => y<=g;
			 WHEN "111" => y<=h;
			 WHEN OTHERS => NULL;
			END CASE;
	END PROCESS;
END BHV;

仿真波形

S对应的是 001 对应选择输出B的波形。

在这里插入图片描述


2、半减器

a.什么是半减器?

半减器用于计算 2Bit 的 Xi(被减数)Yi(减数)的减法,
输出结果Di(半减差)Bo(Borrow output 高位的借位输出信号)

b.真值表

在这里插入图片描述

c.仿真时序图

在这里插入图片描述

d.逻辑表达式

xor表示异或

在这里插入图片描述

e.门电路图

在这里插入图片描述

f.VHDL代码

LIBRARY IEEE;--引用库
USE IEEE.STD_LOGIC_1164.ALL;--调用库中的函数

ENTITY h_subter IS--实例化一个半减器
	PORT(
		A : IN STD_LOGIC;
		B : IN STD_LOGIC;
		DI : OUT STD_LOGIC;--结果位
		BO : OUT STD_LOGIC --借位端
		  );
END ENTITY h_subter ;--结束实例化

ARCHITECTURE fh1 of h_subter IS --声明一个半减器结构体
	BEGIN 
	
		DI	<= A XOR B ; --A 异或 B
		BO <= NOT A AND B;-- 非A 与 B
		
END ARCHITECTURE fh1;--结束结构体的声明    

3、全减器

a.什么是全减器?

全减器不同于半减器在于,全减器输入来自低位的借位Bi(Borrow input),另外两个输入Xi,Yi,输出为Di和向高位的借位Bo

b.真值表

在这里插入图片描述

Xi = ainYi = binBi = cinDi = diffBo = sub_out
这样还看不懂的话,可以用纸笔演算一下。

c.仿真时序图

在这里插入图片描述

d.逻辑表达式

在这里插入图片描述

e.门电路图

在这里插入图片描述

f.VHDL代码

LIBRARY IEEE; --全减器顶层设计描述
USE IEEE.STD_LOGIC_1164.ALL; --调用库函数中的程序包

ENTITY a_subter IS
 PORT ( ain, bin, cin : IN STD_LOGIC;
				diff, sub_out : OUT STD_LOGIC );
END ENTITY a_subter;

ARCHITECTURE fd1 OF a_subter IS
	 COMPONENT h_subter   --调用半减器声明语句
		PORT ( A, B : IN STD_LOGIC; 
		   DI, BO : 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; --定义3个信号作为内部的连接线(看电路图会更加清晰)
BEGIN 
	u1 : h_subter PORT MAP(A=>ain, B=>bin, DI=>net1, BO=>net2 );--例化语句
	u2 : h_subter PORT MAP(A=>net1, B=>cin, DI=>diff, BO=>net3); --简写的语句
	sub_out <= net2 or net3;
	--u3 : or2a    PORT MAP(a=>net2, b=>net3, c=>sub_out);
END ARCHITECTURE;

总结

1、全减器是包含低位借位的三个输入变量、两个输出变量的一位减法器,在半减器的基础上再加一个低位借位输入位。
2、半减器是只有两个输入变量、两个输出变量,无借位输入的一位减法器。


每天进步一点点 笔记仅供自学,用来回看复习,不一定适合你,如有错误请指出。

  • 4
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KevinGuo457

哈哈哈资助我买两包辣条叭

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值