七人多路表决器实验总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Eda与数字系统课程设计

课题名称:用VHDL文本输入法设计一个7人多数表决电路

班级:09电科四班

学号:2220091497

姓名:楚惠

一.课题

题目:多数表决电路的设计之二

要求:用VHDL文本输入法设计一个7人多数表决电路

二.实验内容

所谓表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认为此行为可行;否则如果否决的票数过半,则认为此行为无效。

七人表决器顾名思义就是由七个人来投票,当同意的票数大于或者等于4人时,则认为同意;反之,当否决的票数大于或者等于4人时,则认为不同意。实验中用7个拨挡开关来表示七个人,当对应的拨挡开关输入为‘1’时,表示此人同意;否则若拨挡开关输入为‘0’时,则表示此人反对。表决的结果用一个LED表示,若表决的结果为同意,则LED被点亮;否则,如果表决的结果为反对,则LED不会被点亮。

三.设计步骤

1、表决器主控电路

代码如下:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity biao is

port (

xin: in std_logic_vector ( 6 downto 0 );

xout,xout0,xout1,xout2 : out std_logic_vector ( 6 downto 0 )

);

end entity ;

architecture bev of biao is

begin

process ( xin )

variable j: integer :=0;

begin

j:=0;

for i in 0 to 6 loop

if xin(i)='1' then

j:=j+1;

end if;

end loop;

if j>3 then

xout<="0110000";

else xout<="1111110";

end if;

case j is

when 0 =>xout1<="1111110";

when 1 =>xout1<="0110000";

when 2 =>xout1<="1101101";

when 3 =>xout1<="1111001";

when 4 =>xout1<="0110011";

when 5 =>xout1<="1011011";

when 6 =>xout1<="1011111";

when 7 =>xout1<="1110000";

when others =>xout1<="XXXXXXX";

end case;

case j is

when 7 =>xout0<="1111110";

when 6 =>xout0<="0110000";

when 5 =>xout0<="1101101";

when 4 =>xout0<="1111001";

when 3 =>xout0<="1011011";

when 2 =>xout0<="0010010";

when 1 =>xout0<="1011111";

when 0 =>xout0<="1110000";

when others =>xout0<="XXXXXXX";

end case;

end process;

end architecture bev;

2、输出显示部分

数码管扫描用到的六进制计数器

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity cnt6a is

port(

cp,reset : in std_logic;

sel :out std_logic_vector(2 downto 0)

);

end cnt6a;

architecture behave of cnt6a is

signal sec :std_logic_vector (2 downto 0);

begin

process(reset,cp)

begin

if (reset='0')then

sec<="000";

elsif (cp'event and cp='1')then

if(sec="101") then

sec<="000";

else

sec<=sec+1;

end if;

end if;

end process;

sel<=sec;

end behave;

数码管的七段输出

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity mux6 is

port (cnthh,cnthl,cntmh,cntml,cntsh,cntsl :in std_logic_vector(6 downto 0);

sel :in std_logic_vector(2 downto 0);

cntout :out std_logic_vector(6 downto 0)

);

end mux6;

architecture behav of mux6 is

相关文档
最新文档