《EDA数码管动态显示.doc》由会员分享,可在线阅读,更多相关《EDA数码管动态显示.doc(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateEDA数码管动态显示EDA数码管动态显示预习报告一、实验目的 1 了解实验箱中8 位七段数码管显示模块的工作原理。2 熟悉VHDL 硬件描述语言及设计专用数字集成电路的自顶向下的设计思想。3 掌握利用CPLD/FPGA 设计8 位七段数码管扫描显示驱动电路的方法。二、实验设备 1 计算机(配置为:P4 CPU 128M 内存); 2 MAX+plus 开发工具软件;3
2、 EL 教学实验箱; 4 万用表; 5 DS 5022M 型双踪数字示波器; 三、扫描原理为了减少8 位显示信号的接口连接线,实验箱中的数码显示采用扫描显示工作模式。即8 位数码管的七段译码输入(a,b,c,d,e,f,g) 是并联在一起的,而每一个数码管是通过一个 位选择sel2.0来选定的。sel 与数码管之间是一3-8 译码的关系,即sel 为“000” 时,选中第一个数码管,sel 为“111” 时,选中第八个数码管。四、设计任务本实验要求在给定子模块程序的基础上,画出设计原理图。自行编写顶层模块程序,完成扫描显示驱动电路的设计,实现在8 个数码管上轮流显示字符0F 的功能。五、设计要
3、求1要求在Max+plus平台上用VHDL语言编写顶层模块程序,调试、仿真成功后,下载至ALTER EPM7128SLC84-15 芯片,再利用外接电路实现以上设计功能。 2扫描驱动显示电路有2 个输入端(clk,reset),14 个输出端(a,b,c,d,e,f,g) 和(y0,y1,y2,y3,y4,y5,y6,y7),全部为TTL 电平,管脚分配任意,如下图所示。 3根据芯片特点,管脚分配时将时钟信号分配给83 脚,复位信号分配给1 脚,使能信号分配给84 脚。六、实验报告要求 1 给出设计源程序、仿真结果、说明设计思路。2 改变输入时钟信号的频率,观察实验结果如何改变。3字符扫描显示
4、亮度与扫描频率的关系,且让人眼感觉不出闪烁现象的最低扫描频率是多少?-library ieee;use ieee.std_logic_1164.all;entity disp is port(clk,reset: in std_logic; a,b,c,d,e,f,g: out std_logic; y: out std_logic_vector(2 downto 0);end disp;architecture beha of disp is component counter16 port(clk,clr: in std_logic; count: out std_logic_vector
5、(3 downto 0); end component; component decdisp port(datain: in std_logic_vector(3 downto 0); a,b,c,d,e,f,g: out std_logic); end component; component yima3 port(x: in std_logic_vector(2 downto 0); y: out std_logic_vector(2 downto 0); end component; signal cont: std_logic_vector(3 downto 0); signal se
6、l3: std_logic_vector(2 downto 0); begin d1:counter16 port map(clk=clk,clr=reset,count=cont); d2:decdisp port map(datain=cont,a=a,b=b,c=c,d=d,e=e,f=f,g=g); d3:yima3 port map(x=cont(2 downto 0),y=y);end beha;library ieee;use ieee.std_logic_1164.all;entity yima3 is port( x: in std_logic_vector(2 downto
7、 0); y: out std_logic_vector(2 downto 0);end yima3 ;architecture beha of yima3 isbegin y=x;end beha;library ieee;use ieee.std_logic_1164.all;entity decdisp is port(datain: in std_logic_vector(3 downto 0); a,b,c,d,e,f,g: out std_logic);end decdisp;architecture beha of decdisp is signal dataout: std_l
8、ogic_vector(6 downto 0);begin a=dataout(6); b=dataout(5); c=dataout(4); d=dataout(3); e=dataout(2); f=dataout(1); g dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout=XXXXXXX; end case; end process;end beha;library
9、ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter16 is port(clk,clr: in std_logic; count: out std_logic_vector(3 downto 0); sel: out std_logic_vector(2 downto 0);end counter16; architecture beha of counter16 issignal cnt: std_logic_vector(3 downto 0);begin process(clk,clr) begin if clr=0then cnt=0000; elsif clk=1 and clkevent then cnt=cnt+1; end if; count=cnt; sel=cnt(2 downto 0); end process;end beha;
限制150内