七人表决器设计设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
七人表决器设计
一.设计要求
1. 能够完成七人表决的功能,并且直观的显示结果:决议通过显示字母P,否则显示
字母E;
2.能够选择显示表决双方的人数,有控制开关与显示指示灯,并且能够实时的显示反对
与赞成的人数;
3.能够选择是否记名,并有指示灯显示。当选择记名时,与表决参与者相对应的指示灯
亮起;
4.不设置弃权的状况,超过三人同意则表示决议通过。
二.设计思路
1.使用Altera的Cyclone II器件,FPGA型号为EP2C35F672C6N;开发平台为Quartus II 8.0
2.使用6个拨动开关用以进行表决,开关闭合时表示同意,断开时表示不同意;
3.使用6个LED用以显示表决的个人结果,用以显示记名时的情况。LED亮起表示表决人
同意,否则表示不同意;
4.使用一个七段数码管用以显示表决结果,通过显示P,否则显示E;另外使用两个数码
管用以分别显示同意与不同意的人数;
5.使用两个拨动开关控制是否记名,是否显示表决的人数结果;
6.其他电路按需要搭建。
三.硬件系统组成框图
注释:set:选择是否记名
set1:选择是否显示投票人数及比例
xin[0:6]:表决输入,分别是七个拨动开关
sel:输出指示是否记名投票
sel1:输出指示是否显示投票人数及比例
xout[0:6]:译码用数码管输出表决是否通过
xout0[0:6]:译码用数码管输出同意的人数(set1=1)
xout1[0:6]:译码用数码管输出不同意同意的人数(set1=1)
xout2[0:6]:译码用七个LED输出记名结果
设计HDL源程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity biao is
port (
set, set1: in std_logic ; ----控制按键
xin: in std_logic_vector ( 6 downto 0 ); ----按键输入表决
sel,sel2: out std_logic; -------控制指示灯
xout,xout0,xout1,xout2 : out std_logic_vector ( 6 downto 0 )
); ----xout显示结果,xout0显示否决的人数,xout1赞成的人数,xout2 LED输出end entity ;
architecture bev of biao is
begin
process ( xin ,set,set1)
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 (set='1') then -------是否记名投票
sel<='1';
xout2<=xin; -------记名投票
else
sel<='0';
xout2<="0000000";
end if;
if j>3 then ------判决是否表决通过并输出结果
xout<="0001100"; ----数码管显示P
else xout<="0000110"; -----数码管显示E
end if;
if set1='1' then ------是否显示表决比例
sel2<='1'; ------显示指示灯亮并且译码输出同意与不同意的数目
case j is ------显示赞成的人数
when 0 =>xout1<="1000000";
when 1 =>xout1<="1111001";
when 2 =>xout1<="0100100";
when 3 =>xout1<="0110000";
when 4 =>xout1<="0011001";
when 5 =>xout1<="0010010";
when 6 =>xout1<="0000010";
when 7 =>xout1<="1111000";
when others =>xout1<="XXXXXXX";
end case;
case j is ------显示不赞成的人数
when 7 =>xout0<="1000000";
when 6 =>xout0<="1111001";
when 5 =>xout0<="0100100";
when 4 =>xout0<="0110000";
when 3 =>xout0<="0011001";
when 2 =>xout0<="0010010";
when 1 =>xout0<="0000010";
when 0 =>xout0<="1111000";
when others =>xout0<="XXXXXXX";
end case;
else ------不显示表决比例
sel2<='0';
xout0<="1111111"; ----不显示数字
xout1<="1111111";
end if;
end process;
end architecture bev;
四.DE2平台仿真
1.在Quartus中打开已经建好的工程文件;
2.按要求选择设备并且分配管脚,重新编译,连接实验板的电源线与下载线,下载程序
文件
3.分别拨动开关sw0到sw6,看是否能够满足基本要求;在分别拨动sw16,sw17,看是
否能够按要求显示表决人数结果与对应的LED灯是否正常亮与灭。
4.调试程序直到能够完成设计的要求。