VHDL 7人表决器
一、 实验目的
1、 掌握VHDL 设计流程
2、 熟悉应用型电路设计方法
二、 实验内容
设计七人表决器电路,系统有七个输入,每个输入端输入‘1’为通过,‘0’为不通过,七个输入中通过者超过半数输出为‘1’。
三、 实验设备
1、 硬件:PC 机一台
2、 软件:Maxplus2环境
四、 实验设计
程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY DFF1 IS
PORT (A1,A2,A3,A4,A5,A6,A7:IN STD_LOGIC;
Y:OUT STD_LOGIC);
END;
ARCHITECTURE bhv OF DFF1 IS
BEGIN
PROCESS(A1,A2,A3,A4,A5,A6,A7)
VARIABLE SUM:INTEGER RANGE 0 TO 7;
BEGIN
SUM:=0;
IF A1='1'THEN SUM:=SUM+1;END IF;
IF A2='1'THEN SUM:=SUM+1;END IF;
IF A3='1'THEN SUM:=SUM+1;END IF;
IF A4='1'THEN SUM:=SUM+1;END IF;
IF A5='1'THEN SUM:=SUM+1;END IF;
IF A6='1'THEN SUM:=SUM+1;END IF;
IF A7='1'THEN SUM:=SUM+1;END IF;
IF SUM>3 THEN Y
ELSE Y
END IF;
END PROCESS;
END;
实验思路分析:
在实体H_7中定义端口A1,A2,A3,A4,A5,A6,A7 和GAIN ,其中A1,A2,A3,A4,A5,A6,A7为七位标准逻辑向量,用于表示七个人,GAIN 为标准逻辑输出。
在结构体BEHAV 中,用A1,A2,A3,A4,A5,A6,A7作为进程的敏感信号,在进程里定义一个整型变量ABC ,累计1的个数,利用IF 条件语句统计1的个数放在ABC 中,用if 判断ABC 的大小,若满足条件即超过半数则把1赋给GAIN 输出,否则输出0。
实验结果图:如下图所示
五、 结果分析
通过波形仿真了两种情况,当低于四个人输入1时,输出端输出为0;当大于等于四个人输入1时,输出端输出为1,仿真结果与实验要求一致,达到预期结果。
六、 实验体会
通过本次实验,我基本掌握了VHDL 设计流程,进一步熟悉了应用型电路设计方法,对信号赋值、变量赋值以及端口定义、变量定义等有了进一步的加深理解。