实验三、七段译码显示
- 格式:doc
- 大小:148.00 KB
- 文档页数:5
河北科技大学
实验报告
12级电信专业123班学号Z12070130615年6月3日
姓名张娟同组人指导教师于国庆
实验名称实验三七段译码显示成绩
实验类型设计型批阅教师
一、实验目的
(1)掌握VHDL语言的行为描述设计时序电路。
(2)掌握FPGA动态扫描显示电路设计方法。
(3)熟悉进程(process)和顺序语句的应用。
二、实验原理:
用4个开关作为加法器的一组输入变量,共4组输入变量;对每组变量进行译码,变换成0~F标准段码,段码中“1”表示段亮,“0”表示段灭。
一位时钟输入作为扫描显示位扫时钟,四位位扫输出,依次输出高电平。
8位段码输出,根据位选状态选择输出四组输入变量的相应译码结果。
四组输入采用试验箱K1~K16,时钟输入选择试验箱CP1或CP2;试验箱LED显示选择动态显示方式(CZ1开关ST选择OFF),段码、位码分别扫描输出,某个管的位码有效期间,将其对应的段码输出,各位码依次有效,实现循环扫描显示,将输入的16位二进制数,每4位一组,分别显示到4个数码管上(0~F)。
三、实验内容及步骤
1.打开MUXPLUS II VHDL编辑器,完成七段译码显示的设计。
包括VHDL程序输入、编译、综合。
实验程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.All;
ENTITY qiduanyima IS
PORT ( CLK: IN STD_LOGIC;
A: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ;
B: IN STD_LOGIC_VECTOR(15 DOWNTO 0) ;
C: OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ; END qiduanyima;
ARCHITECTURE simple OF qiduanyima IS
BEGIN
PROCESS (CLK)
VARIABLE Q : INTEGER RANGE 0 TO 5;
VARIABLE COUNT : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN
IF CLK'EVENT AND CLK='1' THEN
Q:=Q+1;
CASE Q IS
WHEN 1 => A(3 DOWNTO 0)<= "1000";
WHEN 2 => A(3 DOWNTO 0)<= "0100";
WHEN 3 => A(3 DOWNTO 0)<= "0010";
WHEN 4 => A(3 DOWNTO 0)<= "0001";
WHEN OTHERS => NULL;
END CASE;
CASE Q IS
WHEN 1 =>COUNT(3 DOWNTO 0):=B(3 DOWNTO 0);
WHEN 2 =>COUNT(3 DOWNTO 0):=B(7 DOWNTO 4);
WHEN 3 =>COUNT(3 DOWNTO 0):=B(11 DOWNTO 8);
WHEN 4 =>COUNT(3 DOWNTO 0):=B(15 DOWNTO 12); WHEN OTHERS => NULL;
END CASE;
IF Q = 5 THEN
Q := 0;
END IF;
END IF;
CASE COUNT IS
WHEN "0000" => C(6 DOWNTO 0) <= "0111111" ;
WHEN "0001" => C(6 DOWNTO 0) <= "0000110" ;
WHEN "0010" => C(6 DOWNTO 0) <= "1011011" ;
WHEN "0011" => C(6 DOWNTO 0) <= "1001111" ;
WHEN "0100" => C(6 DOWNTO 0) <= "1100110" ;
WHEN "0101" => C(6 DOWNTO 0) <= "1101101" ;
WHEN "0110" => C(6 DOWNTO 0) <= "1111101" ;
WHEN "0111" => C(6 DOWNTO 0) <= "0000111" ;
WHEN "1000" => C(6 DOWNTO 0) <= "1111111" ;
WHEN "1001" => C(6 DOWNTO 0) <= "1101111" ;
WHEN "1010" => C(6 DOWNTO 0) <= "1110111" ;
WHEN "1011" => C(6 DOWNTO 0) <= "1111100" ;
WHEN "1100" => C(6 DOWNTO 0) <= "0111001" ;
WHEN "1101" => C(6 DOWNTO 0) <= "1011110" ;
WHEN "1110" => C(6 DOWNTO 0) <= "1111001" ;
WHEN "1111" => C(6 DOWNTO 0) <= "1110001" ;
WHEN OTHERS => NULL ;
END CASE;
END PROCESS;
END ARCHITECTURE simple;
2、建立仿真波形文件,使用MAXPLUS II Simulator功能进行功能仿真。
仿真结果如下:
3、目标器件选择与管脚锁定并重新编译、综合、适配。
FPGA型号:EP1K100QC208-3
引脚绑定:
4、下载并验证结果
我们编写的程序是将16位BCD码4个一组分为四组分别进行译码,由于四个数码管要用同一组段选信号,所以我们采用动态扫描的方式进行输出译码结果。
将引脚进行绑定与硬件配置后便可将程序下载到芯片中。
程序下载完毕后我们按下K3、K4、K5、K9、K13几个按键,数码管显示4、3、2、1,验证结果正确。
四、实验结果与总结
我们这次EDA实验课设计了一个16位4组七段译码显示电路,实验结果符合预期效果即任意输入4组4位BCD码,经过编译生成16进制数通过七段数码管输出。
通过这次实验我们加深了对EDA这门课程的理解,学会了如何使用MAX PLUSⅡ进行VHDL语言编程以及将程序下载到芯片上,增加了对学习VHDL语言的兴趣,增强了实践动手能力,学到了许多课本上没有的知识。