基于VHDL语言的多人表决器的设计

基于VHDL语言的多人表决器设计

实验原理

​ 用七个开关作为表决器的7个输入变量,输入变量为逻辑“1”时表示表决者“赞同”;输入变量为逻辑“0”时,表示表决者“不赞同”。输出逻辑“1”时,表示表决“通过”;输出逻辑“0”时,表示表决“不通过”。当表决器的七个输入变量中有4个以上(含4个)为“1”时,则表决器输出为“1”;否则为“0”。

​ 七人表决器设计方案很多,比如用多个全加器采用组合电路实现。用VHDL语言设计七人表决器时,也有多种选择。我们可以用结构描述的方式用多个全加器来实现电路,也可以用行为描述。采用行为描述时,可用一变量来表示选举通过的总人数。当选举人大于或等于4时为通过,绿灯亮;反之不通过时,黄灯亮。描述时,只须检查每一个输入的状态(通过为“1”,不通过为“0”),并将这些状态值相加,判断状态值和即可选择输出。

设计思路:

本设计采用多个全加器实现组合电路,用七个开关作为表决器的七个输入变量,逻辑“1”时表示“赞同”,逻辑“0”时表示“不赞同”,用发光二极管作为输出指令,输出逻辑“1”表示“通过”;输出逻辑“0”时表示“不通过”。当表决器的七个输入变量中的4个以上(包含4个)为“1”时,则表决器输出为“1” ,绿灯亮;否则为“0”绿灯不亮。

软件说明:ModelSimSetup-13.1.0.162,QuartusSetup-13.1.0.162。

建立工程:

第一步:打开Quartus软件。

第二步:点击New Project Wizard -> next.

第三步:选择工程文件的存放位置,输入工程名 -> next -> next。

第四步:在family栏选择芯片型号-Cyclone IV E,在Name栏选择EP4CE115F29C7,选择完之后点击next。(如果不进行硬件调试时,此处默认即可)

第五步:检查工程有没有建错,点击完成。如下图:

基于VHDL语言的多人表决器的设计_第1张图片

程序设计:

表决器顶层文件设计:

library ieee;
use ieee.std_logic_1164.all;
entity bjq is
port( 
          a:in std_logic_vector(6 downto 0); --7个人
          num:buffer integer range 0 to 7; --表决通过人数
co:out std_logic); --是否通过信号
end bjq;
architecture art of bjq is
    Begin
       process(a)
           variable b:integer range 0 to 7; --定义变量b
begin
    b:=0;
    for n in 0 to 6 loop
         if a(n)='1' then      
               b:=b+1; --统计通过人数
         end if;
    end loop;
     num<=b;
    if(b>=4)then co<='1';
    else co<='0';
    end if;
end process;
end art;

文件仿真(这里采用modelsim仿真波形):

  1. 选择File-> New -> Verification/Debugging Files ->University Program VWF。

基于VHDL语言的多人表决器的设计_第2张图片

2.打开测试文件。(右键点击添加端口,对输入信号初始化,赋值。)

基于VHDL语言的多人表决器的设计_第3张图片

3.仿真结果:

基于VHDL语言的多人表决器的设计_第4张图片

逻辑电路图:

显示编译成功后,选择菜单栏 Tools –>Netlist Viewers –>RTL Viewer 显示逻辑电路图

基于VHDL语言的多人表决器的设计_第5张图片

你可能感兴趣的:(FPGA程序设计,fpga,表决器,vhdl)