万人表决器.docVIP

  • 3
  • 0
  • 约1.3万字
  • 约 15页
  • 2016-11-05 发布于重庆
  • 举报
万人表决器

EDA电路设计结课论文 (2014-2015学年第一学期) 论文题目:万人计数表决显示器 机 械 与 车 辆 学 院 二 O 一 四 年 十 二 月 第一部分 前言 内容提要 电子科学的应用已经渗透入我们的日常生活之中,计数器、数码管显示器、分频器、比较器在我们的生活之中随处可见。本次课程设计是EDA电路设计,通过将多种基本功能元器件组合在一起,实现计数、表决的功能。应用Quartus II 9.1软件 ,用VHDL语言编译完成课程设计,并通过时序仿真波形图验证其正确性。 现实生活中参加表决的人数往往都是上百上千人,甚至上万人。万人表决计数器就是模拟现实中这种人数较多的情况下对表决的人数进行统计、比较和显示的一种运算器。 关键词:表决计数显示器 时序仿真波形图 Quartus II 9.1 一、设计思路 万人表决计数器还具备了异步复位,使能端功能。在规定的时间能进行投票表决,到达规定时间按下使能端,不能再进行投票。若要重新投票或者对另一项决策进行投票则按下复位键,对统计结果进行清零。 第二部分 正文 二、设计原理和内容 万人表决器,用时钟时钟信号中“1”代表投赞成票的人数,以时钟信号中“0”代表投反对票的人数。先通过分频器对时钟信号进行调整,通过十进制的万位计数器,计算投赞成票的人数,然后,将计算的人数通过译码管显示出来,最后,将计数得到的人数通过比较器,比较是否超过半数,如果超过半数则显示通过“1”,如果没有超过半数就显示不通过“0”。 原理框架图 三、实验程序分析 1、10进制计数器 (LIBRARY IEEE; --打开ieee库 USE IEEE.STD_LOGIC_1164.ALL; --使用库中std_logic_1164所有内容 USE IEEE.STD_LOGIC_UNSIGNED.ALL; --使用库中STD_LOGIC_UNSIGNED所有内容 ENTITY counter IS --定义实体counter,进行信号端口定义 PORT( RST,EN,CLK:IN STD_LOGIC; --输入信号引脚端 OC:OUT STD_LOGIC; --OC进位输出信号引脚端 Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));--输出信号引脚端 END counter; --结束实体counter ARCHITECTURE bhv OF counter IS --定义结构体bhv,描述逻辑功能和电路结构 BEGIN PROCESS(RST,EN,CLK) --敏感信号 VARIABLE TMP: STD_LOGIC_VECTOR(3 DOWNTO 0); --设置6位移位数据输出信号STD BEGIN IF RST=1 THEN TMP:=0000;OC=0; --RST=‘1’时,数据清零 ELSIF EN=0 THEN NULL; --EN=‘0’时,不进行任何操作 ELSIF CLKEVENT AND CLK=1 --时钟信号上升沿触发 THEN IF TMP=9 THEN OC=1; --如果TMP=‘9’时,进位OC赋值“1” TMP:=0000; --同时TMP 赋值为“0000” ELSE TMP:=TMP+1; --如果TMP不等于“9”时,TMP加1, OC=0; --同时进位OC赋值“0” END IF; --结束IF语句 END IF; --结束IF语句 Q=TMP; --将TMP计算结果赋值给Q END PROCESS; --结束进程 END bhv; --结束结构体bhv ------------------引用程序(,程序(

文档评论(0)

1亿VIP精品文档

相关文档