七人表决器的vhdl程序设计

七人表决器的vhdl程序设计

ID:6739052

大小:1.61 MB

页数:14页

时间:2018-01-24

七人表决器的vhdl程序设计_第1页
七人表决器的vhdl程序设计_第2页
七人表决器的vhdl程序设计_第3页
七人表决器的vhdl程序设计_第4页
七人表决器的vhdl程序设计_第5页
资源描述:

《七人表决器的vhdl程序设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、一、题目用VHDL设计七人表决器二、分析讨论:七人表决器这一功能用C语言、汇编语言或VHDL编程然后下载到单片机上实现,不过用VHDL编程不仅技术含量高而且能让我们更熟练的掌握使用quartus软件的步骤和方法。所以我们使用VHDL完成。七人表决器就是当投票的人中,同意个数过半(即大于等于4)时,认为通过;否则,不通过。在编程中我们使用一个七位二进制输入变量表示投票人;一个七位二进制输出变量表示一个七段数码管显示同意的票数;一个一位的输出变量表示最终的投票结果。此结果能够在quartus软件中通过时序仿真。在硬件上我们用七个拨动开关来表示七个投票人,拨动开关为‘1’时表示同意,

2、为‘0’表示不同意;同意的票数和表决的时间分别通过一个七段数码管显示出来;最终的表决结果用一个LED表示。三、设计方案3.1实现原理首先,编写一个十进制的减法计数器,其输入为clk,clr,en,输出为q[3..0]。外部的时钟信号的频率选择为1KHz,此频率太大无法显示投票的限制时间,所以要用一个分频器来增大计数时间。设计一个分频器的程序,将时钟信号经过分频器输入到计数器中,输入为clk,输出为newclk。当clk有1000个上升沿是newclk产生一个脉冲,也就是计数器计数一次。其次,编辑七人表决器在主程序,其输入为clk,clr,en,input[6..0],14q[3

3、..0],输出为output,led[6..0]。此程序的是时钟脉冲clk也为1KHz;当q从9到4期间投票是有效的,在4到0期间是无效的,此时就显示之前同意的票数。记录的票数通过casa语句转换到8位七段数码管显示出来。投票的时间和记录的票数要通过两个数码管显示,所以要用一个三八译码器来完成。接着编辑一个三八译码器的程序,其输入为clk,led[6..0],q[3..0],输出为choice,data[7..0]。程序中当用一个中间变量来选择数码管,由于clk的扫描的频率很大,所以两个数码管看上去是同时显示。3.2实现条件①在quartus环境下编辑操作;②外部时钟信号;③控

4、制引脚。3.3算法的描述首先,编写十进制的减法计数器,其输入为clk,clr,en,输出为q[3..0],运行之后生成模块器件。这个子程序中主要用到的算法是if语句:if(clr='0')thencount_4<="1001";elsif(clk'eventandclk='1')thenif(en='1')thenif(count_4="0000")thencount_4<="1001";elsecount_4<=count_4-'1';endif;endif;endif;其次,编辑七人表决器在主程序,其输入为cl,clr,en,input[6..0],q[3..0],输出为l

5、ed[6..0];生成模块器件。此程序中主要用到的算法有case语句和loop语句:foriin6downto0loopif(input(i)='1')then14cnt:=cnt+1;elsecnt:=cnt;endif;endloop;casecntiswhen0=>x:="";when1=>x:="";when2=>x:="";when3=>x:="";when4=>x:="";when5=>x:="";when6=>x:="";when7=>x:="";whenothers=>x:="";endcase;接着编辑三八译码器的程序,其输入为clk,led[6..0],q[

6、3..0],输出为choice,data[7..0],生产模块器件。此程序中用到的算法主要有if语句和casa语句。ifclk'eventandclk='1'THENifcount='1'thencount<='0';elsecount<='1';endif;endif;casetemp1iswhen"0000"=>datain<="";when"0001"=>datain<="";when"0010"=>datain<="";when"0011"=>datain<="";when"0100"=>datain<="";when"0101"=>datain<="";when"01

7、10"=>datain<="";when"0111"=>datain<="";when"1000"=>datain<="";when"1001"=>datain<="";whenothers=>datain<="";endcase;最后,设计一个分频器的程序,将时钟信号经过分频器输入到计数器中,输入为clk,输出为newclk。此程序主要用到的算法是if语句。ifclk'eventandclk='1'thenifcnter=999thencnter<=0;elsecnter<=cnter+1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。