文档介绍:实验二
运算器的设计
一、实验目的
1、掌握运算器的组成与实现
2、掌握简单运算器的数据传输通路
3、验证运算器的各种组合功能
二、实验内容及原理
根据算术与逻辑运算单元功能表,用VHDL语言设计具有不同算术与逻辑运算功能的ALU
三、实验步骤
四、实验现象
五、实验体会与收获(发现问题以及解决的方法)
运算器ALU逻辑图
运算器的功能
运算器ALU的仿真波形
简单ALU设计
LIBRARY IEEE;
use ;
use ;
use ;
ENTITY alu is
port (a,b:in std_logic_vector(3 downto 0);
s:in std_logic_vector(2 downto 0);
y:out std_logic_vector(3 downto 0));
end alu;
ARCHITECTURE a of alu IS
BEGIN
With s Select
y<= (a+b) when "000",
(a-b) when "001",
(a and b) when "010",
(a or b) when "011",
not (a) when "100",
(a xor b) when "101",
a When Others;
END a;
选择信号语句
选择信号赋值语句的格式为:
WITH 条件表达式 SELECT
目标信号 <= 表达式1 WHEN 条件1,
表达式2 WHEN 条件2,
……
表达式n WHEN 条件n;
1. 选择信号语句与进程中的CASE语句相似,但不能在进程中应用。
2. 选择信号语句具有敏感量,即WITH后面的选择条件表达式。每当选择表达式的值发生变化,便启动该语句对各子句的选择值(条件)进行测试对比,当发现有满足条件的子句时,就将此子句表达式的值赋予目标信号。
,该语句对子句条件选择值具有同期性(非顺序性)。
4. 不允许有条件重叠现象,也不允许存在条件涵盖不全的情况。
并发描述语句
CASE语句
CASE语句的一般格式为:
CASE 条件表达式 IS
WHEN 条件表达式的值=>顺序处理语句;
WHEN 条件表达式的值=>顺序处理语句;
…
END CASE;
CASE语句可以用来描述总线或编码、译码的行为,其功能是从众多不同语句的序列中选择其中之一执行之。
IF语句也具有类似的功能,但CASE语句具有比IF语句更强的可读性。
顺序描述语句
CASE语句中条件表达式的值可以有以下4种不同的表示形式:
WHEN 条件表达式的值=>顺序处理语句;
WHEN 条件表达式的值 | 值 … | 值=>顺序处理语句;
WHEN 条件表达式的值 to 值=>顺序处理语句;
WHEN OTHERS=>顺序处理语句;
CASE语句是无序的,所有表达式的值都是并行处理的;
CASE语句所有表达式的值都必须穷举 ,且不能重复 ,
不能穷尽的值用 OTHERS 表示 ;
CASE语句中至少要包含一个条件语句。
对任意项 输入的条件表达式, VHDL不支持。
(即条件表达式的值不能含有‘X’)
顺序描述语句
例6: 4选1多路选择器
ENTITY mux4_1 IS
PORT(d : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
sel : IN STD_LOGIC_VECTOR(1 DOWNTO 0);
y : OUT STD_LOGIC);
END mux4_1;
ARCHITECTURE ar