七人表决器hdl.docx
《七人表决器hdl.docx》由会员分享,可在线阅读,更多相关《七人表决器hdl.docx(28页珍藏版)》请在冰豆网上搜索。
七人表决器hdl
**
※※※※※※※※※
※
※
※
2010级EDA
课程设计
※
※
※
※※※※※※※※※
EDA课程设计报告书
课题名称
七人表决器设计
姓
名
韩正风
学
号
201009110113
学
院
信息学院
专
业
通信工程一班
指导教师
李岩
**
2012年12月
目录--------------------------------------------
报告内容----------------------------------------
一、设计目的---------------------------------
二、设计要求---------------------------------
三、使用说明---------------------------------
四、流程图设计-------------------------------
五、程序设计---------------------------------
六、实验过程及截图---------------------------
七、设计总结---------------------------------
八、实验心得---------------------------------
九、参考文献---------------------------------
**
七人表决器设计
一、设计目的
1.熟悉QuartusII软件的使用。
2.熟悉七人表决器的工作原理
3.熟悉EDA开发的基本流程。
**
二、设计要求
表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认为此
行为可行;否则如果否决的票数过半,则认为此行为无效。
七人表决器由七个人来投票,当同意的票数大于或者等于4人时,则认为同
意;反之,当否决的票数大于或者等于4人时,则认为不同意。
实验中用7个
拨挡开关来表示七个人,当对应的拨挡开关输入为‘1’时,表示此人同意;否
则若拨挡开关输入为‘0’时,则表示此人反对。
表决的结果用一个LED表示,
若表决的结果为同意,则LED被点亮;否则,如果表决的结果为反对,则LED
不会被点亮。
同时用七段显示数码管来显示同意的人数。
完成7人表决电路设计,LED灯表示通过、否决。
(1)开关表示赞成与否,1~8编号(1赞成);
(2)LED显示表决的结果;
(3)数码管分别显示赞成、否决的人数;
(4)工作时钟100Hz即可;
(5)完成全部流程:
设计规范文档、模块设计、代码输入、功能仿真、约束与
综合、布局布线、时序仿真、下载验证等。
三、使用说明
**
本设计就是利用CPLD/FPGA+实验箱中的按钮开关模块和LED模块来实现一个简单的
七人表决器的功能。
按钮开关模块中的K1~K7表示七个人,当按钮开关按下表示输入为‘1’
时,表示对应的人投同意票,否则当按钮开关输入为‘0’时,表示对应的人投反对票;LED
模块中D8表示七人表决的结果,当同意数大于3人的时候,D8点亮表示一致同意,否则
D8熄灭表示一致反对,同时使用试验台的数码管分别显示同意的人数及不同意的人数。
四、流程图设计
七个人开始投票表决
统计同意的人数j
N
判断j是否大于3
Y
D8点亮D8熄灭
大板显示统计结果中同意的人数
五、程序设计:
该程序设计使用VHDL语言编写来实现工程的仿真运行:
libraryieee;
**
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityfengis
port(reset:
instd_logic;
xin:
instd_logic_vector(6downto0);
sel:
outstd_logic;
xout:
outstd_logic_vector(3downto0)
;
xout0
:
outstdlogicvector
(3downto0
)
);
endentity;
architecturebevoffengis
begin
process(xin)
variablej:
integer:
=0;
begin
j:
=0;
foriin0to6loop
ifxin(i)='1'then
j:
=j+1;
endif;
endloop;
casejis
**
when0=>
xout<="0000";
when1=>
xout<="0001";
when2=>
xout<="0010";
when3=>
xout<="0011";
when4=>
xout<="0100";
when5=>
xout<="0101";
when6=>
xout<="0110";
when7=>
xout<="0111";
whenothers=>
null;
endcase;
casejis
when7=>
xout<="0000";
when6=>
xout<="0001";
when5=>
xout<="0010";
when4=>
xout<="0011";
when3=>
xout<="0100";
when2=>
xout<="0101";
when1
=>
xout<="0110";
when0
=>
xout<="0111";
whenothers=>
null;
endcase;
**
ifj>3then
sel<='1';
elsesel<='0';
endif;
endprocess;
endarchitecturebev;
六、实验过程及截图
1、打开QuartusII软件
2、创建工程
**
3、运行程序
4、选择器原理图
**
5、仿真调试
6、引脚绑定
**
七、设计总结:
在设计的过程中,我熟悉了QuartusII的基本使用方法,熟悉了
EDA程序
的运行环境,对各个运行器件及操作按钮有了新的认识和了解,熟悉了
VHDL
语言,能够利用VHDL语言实现简单基本的程序,同时也了解了试验台上大板
和小板的数码管的极性。
在对按键K1-K7进行统计时,采用了按位统计的方法,
利用简单的FOR循环。
通过这次EDA的课程设计,我进一步的了解了
EDA的
编程技术及其应用。
EDA作为现在电子行业的热门技术之一,有着较强的专业
性和实用性,而此次的EDA小学期给我们接触EDA技术的机会,同时为以后
的就业提供了很好的演练平台。
八、实验心得
通过这段时间的EDA课程设计,我更加熟练的掌握了EDA开发的基本流程,
熟练地使用QuartusII软件进行编程,在老师和同学的帮助下,顺利完成了七
**
人表决器的相关设计,在此表示感谢。
此外,我还在课程设计的过程中,发现自
身的许多不足之处,在今后的学习中还需要更加的努力,加强这些方面的学习和
锻炼。
九、参考文献:
[1]延明,张亦化.《数字电路EDA技术入门》.北京:
邮电大学出版社,2006
[2]徐惠民,安德宁《.数字逻辑设计与VHDL描述》.北京:
机械工程出版社,2002
[3]潘松,王国栋.《VHDL实用教程》.成都:
电子科技大学出版社,2001