1、FPGA 系统设计与开发课程设计报告题 目: 七人表决器 专 业: 电子信息工程专业 学 号: 1340820410 姓 名: 杨彪 指导老师: 聂小燕 一、实验目的1、熟悉 VHDL 的编程。2、熟悉七人表决器的工作原理。3、 进一步了解实验系统的硬件结构。二、实验原理所谓表决器就是对于一个行为, 由多个人投票, 如果同意的票数过半, 就认为此行为可行;否则如果否决的票数过半,则认为此行为无效。七人表决器顾名思义就是由七个人来投票,当同意的票数大于或者等于4时,则认为同意;反之,当否决的票数大于或者等于4时,则 认为不同意。实验中用7个 拨 动 开 关 来 表 示 七 个 人 , 分 别 用
2、 7个 LED等 来 反 应 每 个 人 的 决 定 , 当 对 应 的 拨动 开 关 输 入 为 1时 , 表 示 此 人 同 意 , LED灯 点 亮 ; 否 则若拨动开关输入为0,则表示此 人反对, LED灯 不 亮 。表决的结果也用一个LED表示,若表决的结果为同意, 则 LED 被点亮; 否则, 如果表决的结果为反对, 则 LED 不会被点亮。同时,数码管上显示通过的票数。三、实验内容本实验就是利用实验系统中的拨动开关模块和LED模块以及数码管模块来 实现一个简单的七人表决器的功能。拨动开关模块中的K 1K7 表示七个人,当拨动开关输入为1 时,表示对应的人投同意票,对应的LED 灯
3、亮;否则当拨动开关输入为0 时,表示对应的人投反对票,对应的LED 灯不亮;LED 模块中 LED1 表示七人表决的结果,当 LED1 点亮时,表示此行为通过表决;否则当 LED1 熄灭时,表示此行为未通过表决。同时通过的票数在数码管上显示出来。四、实验步骤1、打开 QUARTUSII 软件,新 建一个工程。2、建完工程之后,再新建一个 VHDL File,打开 VHDL 编辑器对话框。3、按照实验原理和自己的想法, 在 VHDL 编辑窗口编写 VHDL 程序。 4、编写完 VHDL 程序后,保存起来,并建立工程。5、对自己编写的 VHDL 程序进行编译并仿真,对程序的错误进行修改。6、编译仿
4、真无误后,依照拨动开关、LED、数码管与 FPGA的 管脚连接表或参照附录进行管脚分配。表 1是示 例程序的管脚分配表。分配完成后,再进行全编译一次,以使管脚分配生效。7、下载程序到试验箱验证实验的正确性,观察现象,对错误的地方进行改正。表 1 程序的管脚分配表端口名 使用模块信号 对应 FPGA 管脚 说 明CLK 时钟 C13CLR 复位 P25 低电平有效K1 拨动开关 K1 H8K2 拨动开关 K2 J8K3 拨动开关 K3 J9K4 拨动开关 K4 A4K5 拨动开关 K5 B4K6 拨动开关 K6 A5K7 拨动开关 K7 B5七位投票人的表决器Result LED 模块 LED1
5、 G13 表决结果亮为通过LED0 LED 模块 LED2 G15LED1 LED 模块 LED3 G14LED2 LED 模块 LED4 H12LED3 LED 模块 LED5 H11LED4 LED 模块 LED6 J10LED5 LED 模块 LED7 L9LED6 LED 模块 LED8 H10每个人投票的结果LEDAG0 数码管模块 A 段 F13LEDAG1 数码管模块 B 段 F14LEDAG2 数码管模块 C 段 F15LEDAG3 数码管模块 D 段 E15LEDAG4 数码管模块 E 段 F16表决通过的票数LEDAG5 数码管模块 F 段 F17LEDAG6 数码管模块
6、G 段 E18五、七人表决器 VHDL 程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY BJQ IS PORT(CLK,CLR:IN STD_LOGIC; -CLK 为系统时钟,CLR 为复位按 K:IN STD_LOGIC_VECTOR(6 DOWNTO 0); -拨动开关输入表决 Result:OUT STD_LOGIC; -显示表决是否通过 LEDAG,LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -LEDAG 为七段数码管, 用来显示同意
7、的人数;LED 为七个指示灯,用来指示投票人的个人投票结果。END ENTITY BJQ;ARCHITECTURE one OF BJQ IS BEGIN PROCESS(K) VARIABLE shu:INTEGER; -定义变量 shu 来统计同意的个数 BEGIN IF (CLR=1) THEN -不复位,即正常工作 LEDResultResultResultResultResultResultResultResultResult=0;LEDAG=“0000000“;LED=K; END CASE;END IF; ELSE -启动复位功能,同时复位指示灯和数码管Result=0;LEDAG=“0111111“;LED=“0000000“;END IF; END PROCESS; END ARCHITECTURE one;六、对 VHDL 程序进行编译仿真的图形七、管脚分配表八、实验结果与现象当设计文 件加载到试验箱后, 拨动实验系统中的拨动开关模块的 K0-K7 七位拨 动开关 , 如果拨动开关的值为 “1”即拨动开关的开关置于上端,表示此人通过表决,对应的LED (LED2到LED8显示每个人投票的结果)等被点亮,反之不然。当LED被点亮的个数大于或等于四时 LED 模块的 LED1 被点亮,否则 LED1不被点亮。同时数码管上显示通过表决的人数。