七人多路表决器实验总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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