- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
基于VHDL的表决器的设计
实验目的
熟悉VHDL的编程。
熟悉七人表决器的工作原理。
进一步了解实验系统的硬件结构。
实验原理
所谓表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认为此行为可行;否那么如果否决的票数过半,那么认为此行为无效。
七人表决器顾名思义就是由七个人来投票,当同意的票数大于或者等于4时,那么认为同意;反之,当否决的票数大于或者等于4时,那么认为不同意。实验中用7个拨动开关来表示七个人,当对应的拨动开关输入为‘1’时,表示此人同意;否那么假设拨动开关输入为‘0’,那么表示此人反对。表决的结果用一个LED表示,假设表决的结果为同意,那么LED被点亮;否那么,如果表决的结果为反对,那么LED不会被点亮。同时,数码管上显示通过的票数。
实验内容
本实验就是利用实验系统中的拨动开关模块和LED模块以及数码管模块来实现一个简单的七人表决器的功能。拨动开关模块中的S1~S7表示七个人,当拨动开关输入为‘1’时,表示对应的人投同意票,否那么当拨动开关输入为‘0’时,表示对应的人投反对票;LED模块中D1表示七人表决的结果,当D1点亮时,表示此行为通过表决;否那么当D1熄灭时,表示此行为未通过表决。数码管显示通过的票数。
实验步骤
翻开QUARTUSII软件,新建一个工程。
建完工程之后,再新建一个VHDLFile,翻开VHDL编辑器对话框。
按照实验原理和自己的想法,在VHDL编辑窗口编写VHDL程序,用户可参照光盘中提供的例如程序。
编写完VHDL程序后,保存起来。方法同实验一。
对自己编写的VHDL程序进行编译并仿真,对程序的错误进行修改。
编译仿真无误后,根据用户自己的要求进行管脚分配。分配完成后,再进行全编译一次,以使管脚分配生效。
根据实验内容用实验导线将上面管脚分配的FPGA管脚与对应的模块连接起来。
如果是调用的本书提供的VHDL代码,那么实验连线如下:
K1-K7:投票者的投票信号,接一个拨动开关S1-S7。
LEDAG[6..0]:数码管显示信号,接数码管的G、F、E、D、C、B、A。
m_Result:抢答成功者显示信号,接一个LED灯D1。
用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。观察实验结果是否与自己的编程思想一致
实验结果与现象
以设计的参考例如为例,当设计文件加载到目标器件后,拨动实验系统中拨动开关模块的S1-S7七位拨动开关,如果拨动开关的值为“1〞〔即拨动开关的开关置于上端,表示此人通过表决〕的个数大于或等于四时LED模块的D1被点亮,否那么LED1不被点亮。数码管显示通过的票数。
源代码
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitybjqis
port(
clk:instd_logic;
input:instd_logic_vector(6downto0);
led:outbit;
ledag:outstd_logic_vector(6downto0);
del:bufferstd_logic_vector(2downto0)
);
end;
architectureoneofbjqis
Signalkey:std_logic_vector(6downto0);
begin
process(clk)
variabledount:std_logic_vector(2downto0);
begin
ifclkeventandclk=1then
dount:=dount+1;
endif;
del=dount;
endprocess;
process(del,input)
begin
case(del)is
when000=key=input;
whenothers=null;
endcase;
endprocess;
process(input)
variablecnt:integerrange0to7;
begin
cnt:=0;
foriin6downto0loop
ifinput(i)=1then
您可能关注的文档
最近下载
- 行进间低手投篮教案.doc VIP
- (正式版)H-Y-T 250-2018 无居民海岛开发利用测量规范(正式版).docx VIP
- “增材制造项目”—第二届职业技能大赛甘肃省选拔赛—技能试卷(样题).pdf VIP
- 日照城市介绍PPT模板.pptx VIP
- DLT 5219-2023 架空输电线路基础设计规程.pdf VIP
- 附睾炎护理查房.pptx VIP
- 跨学科实践“用'水透镜'探究近视眼的形成原因”(教学课件)物理沪粤版2024八年级上册.pptx VIP
- 2025年新人教版语文八年级上册全册教学设计.docx
- 华为认证ICT工程师HCIA考试(习题卷5).pdf VIP
- 招商运营专员岗位面试题及答案.docx VIP
原创力文档


文档评论(0)