VHDL设计七人表决器
七人表决器
1.设计任务 2.设计分析 3.系统框图 4.模块说明 5.编程,下载,测试
任务:实用表决系统设计
要求:在实用表决器系统中,每个表决者 都有三种选择:分别是同意、反对和弃权。 将所有表决结果进行累计,得出同意、反 对和弃权票的总数,当同意票数大于反对 票数,表决通过,否则不通过,同时在数 码管上显示同意、反对和弃权票的总数。
开始
按键输入表决器
绿色LED亮 Y 同意数>反对数 N 红色LED亮
LED显示同意 LED显示反
人数
对人数
LED显示弃权 人数
模块说明
• 扫描是将投票结果统计出来,根据结果分别
驱动电路是数码管显示数字
• 判断模块用来比较同意与不同意人数,根据
判断,使相应的LED亮
1.VHDL语言(略)
2.测试:K9~K15为ON时,表 示同意,K17~K23为ON时,表示反对。当同 意票数大于反对票数,表决通过,实验箱输出 指示OUT1亮;当反对票大于同意票数,表决
设计分析
• 实用表决器系统设计,首先要判断表决者是投的
同意票、反对票还是弃权票,然后累计表决结果 (同意、反对和弃权票的总数),接下来比较同 意票数和反对票数的大小,当同意票数大于半数, 表决通过,否则不通过,因此需要一个判断并累 计表决的子系统。又因为任务还要求在数码管上 显示同意、反对和弃权票的总数,因此,需要动 态扫描子系统和7段-BCD译码子系统。最后得出实 用表决系统(7人)的结构框图E END
EDA实验一 七人表决器
河北科技大学实验报告2013级电信专业132 班学号130701213 2016年5月23日姓名田继辉同组人指导教师于国庆实验名称实验一七人表决器成绩实验类型设计型批阅教师一、实验目的(1)掌握MUXPLUS II语言输入的设计过程。
(2)初步了解VHDL语言。
(3)熟悉FPGA项目设计的基本流程。
二、实验原理:用七个开关作为表决器的7个输入变量,输入变量为逻辑“1”时表示表决者“赞同”;输入变量为逻辑“0”时表示表决者“不赞同”;输出逻辑“1”时,表示表决“通过”;输出逻辑“0”时,表示表决“不通过”;当表决器的七个输入变量中有4个及以上为“1”时,则表决器输出为“1”,否则为“0”。
表决器输入采用试验箱K1~K16,输出采用试验箱L15、L16指示;同意红灯亮,否则黄灯亮。
三、实验内容及步骤1.打开MUXPLUS II VHDL编辑器,完成七人表决器的设计。
包括VHDL程序输入、编译、综合。
实验程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY vote7 ISPORT( men : IN std_logic_vector(6 downto 0);pass,stop : buffer std_logic);END vote7;ARCHITECTURE behave OF vote7 ISBEGINstop<=not pass;PROCESS (men)variable temp:std_logic_vector(2 downto 0);BEGINtemp:="000";for i in 0 to 6 loopif(men(i)='1') thentemp:=temp+1;elsetemp:=temp+0;end if;end loop;pass<=temp(2);END PROCESS;END behave;2、建立仿真波形文件,使用MAXPLUS II Simulator功能进行功能仿真。
实验五 七人表决器的设计
实验五七人表决器的设计一、实验目的1、掌握VHDL程序设计。
二、实验内容设计七人表决器,并在数码管上显示赞成票数。
三、实验仪器1、ZY11EDA13BE型实验箱通用编程模块,配置模块,开关按键模块,数码显示模块。
2、并口延长线,JTAG延长线。
3、安装MAX+PLUSII 10.2软件的PC机。
四、实验原理表决器是统计选票结果的工具,投票者通过拨位开关投票,表示赞成或反对,用循环语句完成赞成票计数过程,统计出赞成的票数之后,用CASE控制数码管显示赞成票数。
五、实验步骤:步骤1:输入VHDL程序,编译,仿真,锁定引脚并下载到目标芯片。
步骤2:验证设计结果。
六、实验报告1、列出数码管控制接口表(列出数码管显示数字的每段控制电平)。
七、思考题记录实验数据,列出七人表决器的真值表。
VHDL程序:library ieee;use ieee.std_logic_1164.all;ENTITY eda3 isPORT (men:in std_logic_vector(6 downto 0);a,b,c:out std_logic;output:out std_logic_vector(6 downto 0)); END entity eda3;ARCHITECTURE behave OF eda3 ISBEGINPROCESS(men)variable temp: integer range 0 to 7;BEGINtemp:=0;for i in 0 to 6 loopif(men(i)='1')thentemp:=temp+1;end if;end loop;case temp iswhen 0 => output <="1111110";when 1 => output <="0110000";when 2 => output <="1101101";when 3 => output <="1111001";when 4 => output <="0110011";when 5 => output <="1011011";when 6 => output <="1011111";when 7 => output <="1110000";when others => output <="0000000";end case;a <='1';b <='1';c <='1';END PROCESS;END architecture behave;。
七人表决器设计
EDA 课程设计报告书课题名称 七人表决器设计姓 名 学 号 院、系、部 电气系 专 业 电子信息工程指导教师2013年12月3日※※※※※※※※※ ※※ ※※ ※※ ※※※※※※※※※2011级EDA课程设计七人表决器设计一、设计目的1.熟悉Quartus II软件的使用。
2.熟悉EDA开发的基本流程。
二、设计要求所谓表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认为此行为可行;否则如果否决的票数过半,则认为此行为无效。
七人表决器顾名思义就是由七个人来投票,当同意的票数大于或者等于4人时,则认为同意;反之,当否决的票数大于或者等于4人时,则认为不同意。
实验中用7个拨挡开关来表示七个人,当对应的拨挡开关输入为‘1’时,表示此人同意;否则若拨挡开关输入为‘0’时,则表示此人反对。
表决的结果用一个LED表示,若表决的结果为同意,则LED被点亮;否则,如果表决的结果为反对,则LED不会被点亮。
三、流程图设计四、程序设计(程序代码)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY asdfgh ISPORT(clk:IN STD_LOGIC;am:IN STD_LOGIC_VECTOR(6 DOWNTO 0);y:OUT STD_LOGIC;y1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END ENTITY asdfgh;ARCHITECTURE one OF asdfgh ISSIGNAL q:STD_LOGIC;SIGNAL q1:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGINPROCESS(am)VARIABLE shu:INTEGER;BEGINshu:=0;IF clk'EVENT AND clk='1' THENIF am(0)='1' THEN shu:=shu+1;END IF;IF am(1)='1' THEN shu:=shu+1;END IF;IF am(2)='1' THEN shu:=shu+1;END IF;IF am(3)='1' THEN shu:=shu+1;END IF;IF am(4)='1' THEN shu:=shu+1;END IF;IF am(5)='1' THEN shu:=shu+1;END IF;IF am(6)='1' THEN shu:=shu+1;END IF;CASE shu ISWHEN 0 => q<='0';q1<="0111111";WHEN 1 => q<='0';q1<="0000110";WHEN 2 => q<='0';q1<="1011011";WHEN 3 => q<='0';q1<="1001111";WHEN 4 => q<='1';q1<="1100110";WHEN 5 => q<='1';q1<="1101101";WHEN 6 => q<='1';q1<="1111101";WHEN 7 => q<='1';q1<="0000111";WHEN OTHERS => q<='Z';q1<="ZZZZZZZ";END CASE;y<=q;y1<=q1;END IF;END PROCESS;END ARCHITECTURE one;五、仿真图及结果图(结果说明)当a[6]-a[0]依次输入为1101001时,则数码管y1[6]-y1[0]为1100110,即数码管显示为4,LED灯即为高电平,即为亮。
VHDL-设计七人表决器
《FPGA系统设计与开发》课程设计报告题目:七人表决器专业:电子信息工程专业学号:姓名:指导老师:一、实验目的1、熟悉V HDL 的编程。
2、熟悉七人表决器的工作原理。
3、进一步了解实验系统的硬件结构。
二、实验原理所谓表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认为此行为可行;否则如果否决的票数过半,则认为此行为无效。
七人表决器顾名思义就是由七个人来投票,当同意的票数大于或者等于4时,则认为同意;反之,当否决的票数大于或者等于4时,则认为不同意。
实验中用7个拨动开关来表示七个人,分别用7个LED等来反应每个人的决定,当对应的拨动开关输入为‘1’时,表示此人同意,LED灯点亮;否则若拨动开关输入为‘0’,则表示此人反对,LED灯不亮。
表决的结果也用一个LED表示,若表决的结果为同意,则L ED 被点亮;否则,如果表决的结果为反对,则L ED 不会被点亮。
同时,数码管上显示通过的票数。
三、实验内容本实验就是利用实验系统中的拨动开关模块和LED模块以及数码管模块来实现一个简单的七人表决器的功能。
拨动开关模块中的K1~K7表示七个人,当拨动开关输入为‘1’时,表示对应的人投同意票,对应的LED灯亮;否则当拨动开关输入为‘0’时,表示对应的人投反对票,对应的LED灯不亮;LED 模块中 LED1 表示七人表决的结果,当 LED1 点亮时,表示此行为通过表决;否则当 LED1 熄灭时,表示此行为未通过表决。
同时通过的票数在数码管上显示出来。
四、实验步骤1、打开Q UARTUSII 软件,新建一个工程。
2、建完工程之后,再新建一个V HDL File,打开V HDL 编辑器对话框。
3、按照实验原理和自己的想法,在V HDL 编辑窗口编写V HDL 程序。
4、编写完V HDL 程序后,保存起来,并建立工程。
5、 对自己编写的 V HDL 程序进行编译并仿真,对程序的错误进行修改。
6、 编译仿真无误后,依照拨动开关、LED 、数码管与 FPGA 的管脚连接表或参照附录进行管脚分配。
七人表决器课程设计报告
课程设计课程名称硬件描述语言与EDA技术题目名称硬件描述语言与EDA技术实践学生学院材料与能源专业班级 11微电子学(1)班学号学生XX指导教师2021年 6月 27日XX工业大学课程设计任务书题目名称硬件描述语言与EDA技术实践学生学院材料与能源学院专业班级11微电子学(1)班姓名学号一、课程设计的内容与要求1.系统功能分析,分模块层次化设计;2.实现系统功能的方案设计;3.编写各功能模块VHDL语言程序;4.对各功能模块进展编译、综合、仿真和验证;5.顶层文件设计,可用VHDL语言设计,也可以用原理图设计;6.整个系统进展编译、综合、仿真和验证;7.在CPLD/FPGA实验开发系统试验箱上进展硬件验证;8.按所布置的题目要求,每一位学生独立完成全过程。
二、课程设计应完成的工作1.所要求设计内容的全部工作;2.按设计指导书要求提交一份报告书;3.提交电子版的设计全部内容:工程目录文件夹中的全部内容,报告书三、课程设计进程安排四、应收集的资料及主要参考文献1.陈先朝,硬件描述语言与EDA技术实践指导书,2021年3月2.曹昕燕等编著,EDA技术实验与课程设计,清华大学,2006年5月3.X欲晓等编著,EDA技术与VHDL电路开发应用实践,电子工业,2021年4月4.X昌华等编著,数字逻辑EDA设计与实践:MAX+plusⅡ与QuartusⅡ双剑合璧,国防工业,2021年5.X江海主编,EDA技术课程设计,华中科技大学,2021年1月发出任务书日期: 2021年6月 23日指导教师签名:方案完成日期: 2021年6月 27日基层教学单位责任人签章:主管院长签章:七人表决器1.设计目的(1)学习和掌握Quartus II软件的根本操作;(2)通过设计七人表决器,掌握基于可编程器件的VHDL硬件描述语言的设计方法;(3)学习用CPLD/FPGA 实践系统硬件验证电路设计的正确性2.设计题目及要求(1)题目:表决器(2)要求:设计一个七人表决器,当赞成人数大于等于四时显示表决通过,同时分别将投票中赞成的人数和反对的人数在数码管上显示出来。
数字集成电路综合设计7人表决器电路前端设计--大学毕业设计论文
摘要7人表决器电路是一简单的输入信号检测与处理、产生运算控制信号的逻辑电路。
本文详细介绍了依据功能要求进行运算控制电路方案设计的过程,并在此基础上将整体电路分为数据接收模块、数据处理模块、结果显示模块等主要功能模块。
电路设计完成后通过Design Compiler对电路进行逻辑综合。
使用Tcl命令编写电路的约束文件,设定约束条件,对电路进行优化以保证设计的功能性,同时生成网表文件、时序报告、面积报告,并进行结果分析。
再通过延时文件与顶层文件的激励进行电路功能的时序仿真,分析设计的可行性。
再通过Primetime对电路进行静态时序分析,得到静态时序报告。
最后通过IC_Compler对生成的网表进行物理实现,生成GDS II版图信息。
关键词Design Compiler;Primetime;逻辑综合;静态时序分析;物理实现;目录摘要 (1)目录 (2)引言 (4)1 总体电路结构设计 (5)1.1电路功能 (5)1.2 关键功能电路设计 (5)1.3 电路接口 (6)1.4 顶层TOP的设计 (6)2 设计约束及脚本 (8)2.1 约束设计 (8)2.2 脚本设计 (8)3 逻辑综合过程 (11)3.1 综合文件 (11)3.2 综合环境 (11)3.3综合过程 (12)4 结果分析及时序仿真 (16)4.1 时序报告分析 (16)4.2 面积报告分析 (19)4.3时序仿真 (20)5 静态时序分析及脚本 (21)5.1 静态时序分析 (21)5.2 PrimeTime 进行时序分析的流程 (21)5.3 脚本 (22)5.4 静态时序报告分析 (24)6 物理实现 (28)6.1 物理实现文件 (28)6.2物理实现环境 (28)6.3物理实现过程 (29)6.3.1 Floorplan (29)6.3.2 placemant (30)6.3.3 Clock Tree synthesis (30)6.3.4 Routing (31)6.3.5 Write Design Out (32)6.4 报告输出 (32)6.5 LVS和DRC (34)结论 (35)参考文献 (36)附录A:顶层设计源代码 (37)附录B:设计约束代码 (38)附录C:静态时序分析脚本代码 (40)引言现代集成电路技术急剧发展,输百万级晶体管电路使设计面临着巨大的挑战。
七人表决器VHDL语言代码(EDA设计实验)
七人表决器VHDL语言代码大连海事大学信息工程学院EDA课程设计实验模块一【BCD译码器】:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY BCDDECODER ISPORT(BCD :IN STD_LOGIC_VECTOR(3 DOWNTO 0);SEGOUT :OUT STD_LOGIC_VECTOR(0 TO 6));END BCDDECODER;ARCHITECTURE a OF BCDDECODER ISBEGINPROCESS(BCD)BEGINCASE BCD ISWHEN"0000"=>SEGOUT<="1111110";WHEN"0001"=>SEGOUT<="0110000";WHEN"0010"=>SEGOUT<="1101101";WHEN"0011"=>SEGOUT<="1111001";WHEN"0100"=>SEGOUT<="0110011";WHEN"0101"=>SEGOUT<="1011011";WHEN"0110"=>SEGOUT<="1011111";WHEN"0111"=>SEGOUT<="1110000";WHEN"1000"=>SEGOUT<="1111111";WHEN"1001"=>SEGOUT<="1111011";WHEN OTHERS=>SEGOUT<="0000000";END CASE;END PROCESS;END a;模块二【7人表决器】:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity biaojue isport(a:in std_logic_vector(6 downto 0);b:out std_logic;p1:out std_logic_vector(3 downto 0));end biaojue;architecture one of biaojue isbeginprocess(a)variable i: std_logic_vector(2 downto 0); begini:="000";for j in 0 to 6 loopif(a(j)='1') then i:=i+1;else i:=i+0;end if;end loop;if i>3 then b<='1';else b<='0';end if;case i iswhen "000"=>p1<="0000";when "001"=>p1<="0001";when "010"=>p1<="0010";when "011"=>p1<="0011";when "100"=>p1<="0100";when "101"=>p1<="0101";when "110"=>p1<="0110";when "111"=>p1<="0111";when others=>null;end case;end process;end one;注:水平有限,有错难免,多包涵。
实验三+七人表决器设计
3.3实验三七人表决器设计3.3.1实验目的1、掌握用QuartusII软件设计基本数字系统流程及注意事项。
2、进一步熟练掌握程序的编译、仿真、生成模块及芯片引脚号码锁定方法。
3、掌握分层设计的方法和注意事项3.3.2实验内容基于QuartusII软件及VHDL语言实现七人表决器。
当参与表决的7人中有4个或4个以上赞同时,表决器输出“1”表示通过,否则输出“0”表示不通过,并显示赞成和反对的人数。
用7个开关作为表决器的7个输入变量,数码管显示人数,LED灯显示是否通过。
本实验4学时。
3.3.3实验仪器ZY11EDA13BE型实验箱。
3.3.4实验原理分析实验要求,七人表决器系统主要由两个模块构成:投票计数模块和数码管显示模块。
一、建立项目(1)新建文件夹。
路径及文件名中不可出现汉字。
(2)新建项目。
一个数字系统可以由多个模块构成,使所有模块连接在一起的总文件叫做顶层文件,只有顶层文件名可以且必须与项目名相同。
项目取名为bjq7。
(3)选择芯片二、建立文件首先,建立各个VHDL功能模块。
1.投票计数模块。
(1)新建VHDL文件编辑VHDL程序。
投票计数模块输入为七个电平开关input,输出为同意的人数agree,反对的人数disagree,是否通过指示灯y,程序清单如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity BJQ isport(input:in std_logic_vector(6downto0);七个输入开关agree:out std_logic_vector(3downto0);同意的人数disagree:out std_logic_vector(3downto0);不同意的人数y:out std_logic);是否通过标志end;architecture one of BJQ isbeginprocess(input)variable cnt:integer range0to7;variable cnt0:integer range0to7;begincnt:=0;for i in6downto0loopif input(i)='1'thencnt:=cnt+1;end if;end loop;cnt0:=7-cnt;if cnt>3then y<='1';else y<='0';end if;case cnt iswhen0=>agree<="0000";when1=>agree<="0001";when2=>agree<="0010";when3=>agree<="0011";when4=>agree<="0100";when5=>agree<="0101";when6=>agree<="0110";when7=>agree<="0111";when others=>agree<="0000";end case;case cnt0iswhen0=>disagree<="0000";when1=>disagree<="0001";when2=>disagree<="0010";when3=>disagree<="0011";when4=>disagree<="0100";when5=>disagree<="0101";when6=>disagree<="0110";when7=>disagree<="0111";when others=>disagree<="0000";end case;end process;end;程序输入完成后进行保存,名字与实体名一致BJQ。
七人表决器
七人表决器徐浩杰通信09-1 2220091708一、实验目的:1.掌握用VHDL硬件描述语言做电路综合设计方法。
2.熟悉掌握程序的编译、仿真、生成模块及芯片引脚号码锁定方法并下载到目标芯片。
二、实验仪器:ZY11EDA13BE型实验箱三、实验内容及要求:1.设计一个数字时钟,要求能为24h制,要求能显示时、分、秒,并可手动调整时和分。
四:实验程序:七人表决器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity svm isport (input:in std_logic_vector(6 downto 0);ledz :out std_logic_vector(3 downto 0);ledf :out std_logic_vector(3 downto 0);co :out std_logic);end svm;architecture a of svm isbeginprocess(input)variable cont:integer range 0 to 7;begin cont:=0;for i in 6 downto 0 loopif input(i)='1'thencont:=cont+1;end if;end loop;if cont>3 thenco<='1';elseco<='0';end if;case cont iswhen 0=>ledz<="0000";when 1=>ledz<="0001";when 2=>ledz<="0010";when 3=>ledz<="0011";when 4=>ledz<="0100";when 5=>ledz<="0101";when 6=>ledz<="0110";when 7=>ledz<="0111";when others=>ledz<="1111";end case;end process;end a;显示管译码器==================================================== library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity bcdcoder isport (bcd :in std_logic_vector(3 downto 0);segout :out std_logic_vector(0 to 6));end bcdcoder;architecture a of bcdcoder isbeginprocess (bcd)begincase bcd iswhen"0000"=>segout<="1111110";when"0001"=>segout<="0110000";when"0010"=>segout<="1101101";when"0011"=>segout<="1111001";when"0100"=>segout<="0110011";when"0101"=>segout<="1011011";when"0110"=>segout<="1011111";when"0111"=>segout<="1110000";when"1000"=>segout<="1111111";when"1001"=>segout<="1111011";when others=>segout<="0000000";end case;end process;end a;五、实验总结通过本次实验,我们更加了解了VHDL语言,掌握了VHDL硬件描述语言做电路综合设计方法。
七人表决器的VHDL程序设计
一、题目用VHDL设计七人表决器二、分析讨论:七人表决器这一功能用C语言、汇编语言或VHDL编程然后下载到单片机上实现,不过用VHDL编程不仅技术含量高而且能让我们更熟练的掌握使用quartus软件的步骤和方法。
所以我们使用VHDL完成。
七人表决器就是当投票的人中,同意个数过半(即大于等于4)时,认为通过;否则,不通过。
在编程中我们使用一个七位二进制输入变量表示投票人;一个七位二进制输出变量表示一个七段数码管显示同意的票数;一个一位的输出变量表示最终的投票结果。
此结果能够在quartus软件中通过时序仿真。
在硬件上我们用七个拨动开关来表示七个投票人,拨动开关为‘1’时表示同意,为‘0’表示不同意;同意的票数和表决的时间分别通过一个七段数码管显示出来;最终的表决结果用一个LED表示。
三、设计方案3.1实现原理首先,编写一个十进制的减法计数器,其输入为clk, clr, en,输出为q[3..0]。
外部的时钟信号的频率选择为1KHz,此频率太大无法显示投票的限制时间,所以要用一个分频器来增大计数时间。
设计一个分频器的程序,将时钟信号经过分频器输入到计数器中,输入为clk, 输出为new clk。
当clk 有1000个上升沿是newclk产生一个脉冲,也就是计数器计数一次。
其次,编辑七人表决器在主程序,其输入为clk, clr, en, input[6..0],q[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的扫描的频率很大,所以两个数码管看上去是同时显示。
FPGA课程设计报告-七人多路表决器
实验报告七人表决器摘要所谓表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认为此行为可行;否则如果否决的票数过半,则认为此行为无效。
七人表决器顾名思义就是由七个人来投票,当同意的票数大于或者等于4人时,则认为同意;反之,当否决的票数大于或者等于4人时,则认为不同意。
实验中用7个拨挡开关来表示七个人,当对应的拨挡开关输入为‘1’时,表示此人同意;否则若拨挡开关输入为‘0’时,则表示此人反对。
表决的结果用一个LED 表示,若表决的结果为同意,则LED被点亮;否则,如果表决的结果为反对,则LED不会被点亮。
流程图:根据电路状态转换表→设计数值输出→运用门电路设计电路图→仿真运行→实现七人多数表决器的设计一、实验目的1.熟悉VHDL编程2.熟悉七人表决器工作原理3.进一步了解实验系统的硬件结构二、实验设备1.PC机2.THGSC-3型实验箱3.Altera Blaster 下载器三、设计要求用七个开关作为表决器的七个输入变量,逻辑“1”时表示“赞同”,逻辑“0”时表示“不赞同”,用发光二极管作为输出指令,输出逻辑“1”表示“通过”;输出逻辑“0”时表示“不通过”。
当表决器的七个输入变量中的4个以上(包含4个)为“1”时,则表决器输出为“1”;否则为“0”。
四、实验内容1.电路状态转换图:2.编写实验代码及注释如下图4.管脚分配说明:(1)清零端设置为按键S1(2)置数端设置为拨动开关SW8 (3)七个输入SW1~SW7(4)七个led输出D1~D7(5)数码管显示a~g5.分配图。
七人表决器—VHDL
北方民族大学课设报告院系电气信息工程学院姓名张海强学号 2017xxxx专业电子信息工程班级 2017级(1)班同组人员课程名称 EDA技术基础题目名称七人表决器起止时间成绩指导教师教师评语:北方民族大学教务处制1.设计任务要求:七人表决器的设计内容主要是,用七个开关作为表决器的7个输入变量,输入变量为逻辑“1”时表示表决者“赞同”;输入变量为“0”时,表示表决者“不赞同”。
输出逻辑“1”时,表示表决“通过”;输出逻辑“0”时,表示表决“不通过”。
当表决器的七个输入变量中有4个以上(含4个)为“1”时,则表决器输出为“1”;否则为“0”。
实验要求:1)用VHDL语言进行上述电路设计。
2)仿真验证设计结果。
2.设计原理说明:七人表决器的设计方法很多,比如用多个全加器采用组合电路实现。
用VHDL语言设计七人表决器时,也有多种选择。
常见的VHDL语言描述方式有行为描述,寄存器传输(RTL)描述、结构描述以及这几种描述在一起的混合描述。
我们可以用结构描述的方式用多个全加器来实现电路,也可以进行行为描述。
采用行为描述时,可用一变量来表示选举通过的总人数。
当选举人大于或等于4时为通过,绿灯亮;反之不通过时,黄灯亮。
描述时,只须检查每一个输入的状态(通过为“1”不通过为“0”)并将这些状态值相加,判断状态值和即可选择输出。
这里我们采用的是VHDL行为描述,行为描述简单明了,思路清晰。
3.设计方法阐述:1)实验题目分析:通过分析题目可以发现,不论用何种方法进行设计,最终的结果是有七个输入端用来表示个人的投票观点,加上七个直接的输出端接到LED灯上,显示个人的投票观点。
开始时灯为全灭,如果个人表示同意,那么与个人相对应的LED灯亮,还有两个输出端接到绿色和黄色的LED灯上,若最终表决器的输出结果是通过,那么绿色的LED灯亮,否则在黄色LED灯亮。
上述为实验的基本功能,为了更加容易分析,可以在增加投票计数等程序,同时为了计数器功能上的实用性可以加入数码管显示电路,显示票数等信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《FPGA系统设计与开发》
课
程
设
计
报
告
题目:七人表决器
专业:电子信息工程专业
学号:
姓名:杨彪
指导老师:聂小燕
一、实验目的
1、熟悉VHDL的编程。
2、熟悉七人表决器的工作原理。
3、进一步了解实验系统的硬件结构。
二、实验原理
所谓表决器就是对于一个行为,由多个人投票,如果同意的票数过半,就认为此行为可行;否则如果否决的票数过半,则认为此行为无效。
七人表决器顾名思义就是由七个人来投票,当同意的票数大于或者等于4时,则认为同意;反之,当否决的票数大于或者等于4时,则认为不同意。
实验中用7个拨动开关来表示七个人,分别用7个LED 等来反应每个人的决定,当对应的拨动开关输入为‘1’时,表示此人同意,LED 灯点亮;否则若拨动开关输入为‘0’,则表示此人反对,LED 灯不亮。
表决的结果也用一个LED 表示,若表决的结果为同意,则LED 被点亮;否则,如果表决的结果为反对,则LED 不会被点亮。
同时,数码管上显示通过的票数。
三、实验内容
本实验就是利用实验系统中的拨动开关模块和LED 模块以及数码管模块来实现一个简单的七人表决器的功能。
拨动开关模块中的K1~K7表示七个人,当拨动开关输入为‘1’时,表示对应的人投同意票,对应的LED 灯亮;否则当拨动开关输入为‘0’时,表示对应的人投反对票,对应的LED 灯不亮;LED 模块中LED1表示七人表决的结果,当LED1点亮时,表示此行为通过表决;否则当LED1熄灭时,表示此行为未通过表决。
同时通过的票数在数码管上显示出来。
四、实验步骤
1、打开QUARTUSII 软件,新建一个工程。
2、建完工程之后,再新建一个VHDLFile ,打开VHDL 编辑器对话框。
3、按照实验原理和自己的想法,在VHDL 编辑窗口编写VHDL 程序。
4、编写完VHDL 程序后,保存起来,并建立工程。
5、对自己编写的VHDL 程序进行编译并仿真,对程序的错误进行修改。
6、编译仿真无误后,依照拨动开关、LED 、数码管与FPGA 的管脚连接表或参照附录进行管脚分配。
表1是示例程序的管脚分配表。
分配完成后,再进行全编译一次,以使管脚分配生效。
7、下载程序到试验箱验证实验的正确性,观察现象,对错误的地方进行改正。
表错误!未指定顺序。
程序的管脚分配表
端口名 使用模块信号
对应FPGA 管脚
说 明
CLK 时钟 C13
CLR 复位 P25 低电平有效 K1 拨动开关K1 H8 七位投票人的表决器 K2 拨动开关K2 J8 K3 拨动开关K3 J9 K4
拨动开关K4
A4
K5 拨动开关K5 B4 K6 拨动开关K6 A5 K7 拨动开关K7 B5
Result LED 模块LED1 G13 表决结果亮为通过
LED0 LED 模块LED2 G15 每个人投票的结果
LED1 LED 模块LED3 G14 LED2 LED 模块LED4 H12 LED3 LED 模块LED5 H11 LED4 LED 模块LED6 J10 LED5 LED 模块LED7 L9 LED6 LED 模块LED8 H10 LEDAG0 数码管模块A 段 F13 表决通过的票数
LEDAG1 数码管模块B 段 F14 LEDAG2 数码管模块C 段 F15 LEDAG3 数码管模块D 段 E15 LEDAG4 数码管模块E 段 F16 LEDAG5 数码管模块F 段 F17 LEDAG6
数码管模块G 段
E18
五、七人表决器VHDL 程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYBJQIS
PORT(CLK,CLR:INSTD_LOGIC;----CLK 为系统时钟,CLR 为复位按 K:INSTD_LOGIC_VECTOR(6DOWNTO0);----拨动开关输入表决 Result:OUTSTD_LOGIC;----显示表决是否通过
LEDAG,LED:OUTSTD_LOGIC_VECTOR(6DOWNTO0));----LEDAG 为七段数码管,用来显示同意的人数;LED 为七个指示灯,用来指示投票人的个人投票结果。
ENDENTITYBJQ;
ARCHITECTUREoneOFBJQIS BEGIN
PROCESS(K)
VARIABLEshu:INTEGER;----定义变量shu 来统计同意的个数 BEGIN
IF(CLR='1')THEN----不复位,即正常工作
LED<=K;----将指示灯和投票人对应,即记名投票 shu:=0;
IFCLK'EVENTANDCLK='1'THEN IFK(0)='1'THEN shu:=shu+1;
ENDIF;
IFK(1)='1'THEN
shu:=shu+1;
ENDIF;
IFK(2)='1'THEN
shu:=shu+1;
ENDIF;
IFK(3)='1'THEN
shu:=shu+1;
ENDIF;
IFK(4)='1'THEN
shu:=shu+1;
ENDIF;
IFK(5)='1'THEN
shu:=shu+1;
ENDIF;
IFK(6)='1'THEN
shu:=shu+1;
ENDIF;
CASEshuiS----指示灯显示投票结果,数码管显示同意人数WHEN0=>Result<='0';
LEDAG<="0111111";
LED<=K;
WHEN1=>Result<='0';
LEDAG<="0000110";
LED<=K;
WHEN2=>Result<='0';
LEDAG<="1011011";
LED<=K;
WHEN3=>Result<='0';
LEDAG<="1001111";
LED<=K;
WHEN4=>Result<='1';
LEDAG<="1100110";
LED<=K;
WHEN5=>Result<='1';
LEDAG<="1101101";
LED<=K;
WHEN6=>Result<='1';
LEDAG<="1111101";
LED<=K;
WHEN7=>Result<='1';
LEDAG<="0100111";
LED<=K;
WHENothers=>Result<='0';
LEDAG<="0000000";
LED<=K;
ENDCASE;
ENDIF;
ELSE-----启动复位功能,同时复位指示灯和数码管
Result<='0';
LEDAG<="0111111";
LED<="0000000";
ENDIF;
ENDPROCESS;
ENDARCHITECTUREone;
六、对VHDL程序进行编译仿真的图形
七、管脚分配表
八、实验结果与现象
当设计文件加载到试验箱后,拨动实验系统中的拨动开关模块的K0-K7七位拨动开关,如果拨动开关的值为“1”即拨动开关的开关置于上端,表示此人通过表决,对应的LED(LED2到LED8显示每个人投票的结果)等被点亮,反之不然。
当LED被点亮的个数大于或等于四时LED模块的LED1被点亮,否则LED1不被点亮。
同时数码管上显示通过表决的人数。