EDAVHDL课程设计实验报告.doc
《EDAVHDL课程设计实验报告.doc》由会员分享,可在线阅读,更多相关《EDAVHDL课程设计实验报告.doc(27页珍藏版)》请在三一办公上搜索。
1、南京邮电大学课程设计报告设计类别: EDA-VHDL 专业名称: 班级学号: 学生姓名: 基本题 : 矩阵键盘按键的数码管显示 综合题 : 数码管学号滚动显示 同小组成员: 学号: 姓名: 指导教师: 日 期: 一 矩阵键盘按键的数码管显示1实验目的 (1).使学生全面了解如何应用该硬件描述语言进行高速集成电路设计; (2).通过软件设计环节与仿真环节使学生熟悉Quartus II设计与仿真环境; (3).通过对基本题、综合题的设计实践,使学生掌握硬件系统设计方法(自底向上或自 顶向下),熟悉VHDL语言三种设计风格,熟悉其芯片硬件实现的过程。 2实验所用仪器及元器件(1)PC机(2)ALte
2、ra CPLD硬件实验开发系统 (3)设计软件(Quartus II )3实验任务要求 要求学生设计出4*4矩阵键盘对某一按键按下就在数码管显示一个数字。按键从左上角到右下角依次为1,2,16。4. 设计原理以思路按键模块原理如图所示,该4*4键盘中共有8条数据线与FGPA的管脚相连,其中,row连接FGPA的输出端口,作为键盘的输入扫描信号,4*4键盘根据row以及当前的按键情况将回应通过column传回FGPA。FGPA通过8条数据线,判断4*4键盘当前的按键。由于开发板提供的是上拉电阻经电阻接高电压,即低电平有效,故可得出行列电平值与按键的对应关系如下表所示:row11101110111
3、011101101110111011101column11101101101101111110110110110111键值12345678row10111011101110110111011101110111column11101101101101111110110110110111键值910111213141516余辉效应当电子束停止轰击荧光屏时,光点仍能保持一定的时间, 这种现象称为“余辉效应”。余辉时间有短余辉时(0.010.1s)、中余辉时间(0.1s以 )、长余辉时间(小于10-3s)。动态显示原理本实验只需点亮第5和第6根数码管,通过下降沿,循环点亮这两根数码管。点亮一根数码管的同
4、时,给其赋值。数码管数值确定由于开发板中数码管为共阳极,即低电平有效,故可得出数码管8段显示与其数值的对应关系如下所示:-显示键值-00000011 10011111 00100101 00001101 10011001 01001001 01000001 00011111- 0 1 2 3 4 5 6 7-00000001 00001001 - 8 95.模块分析输入输出:ENTITY jz IS PORT ( clk : in std_logic; row : out std_logic_vector(3 DOWNTO 0);-行线 column : in std_logic_vector
5、(3 DOWNTO 0);-列线 led_out : out std_logic_vector(7 DOWNTO 0); -数码管8段显示led_sel : buffer std_logic_vector(5 DOWNTO 0)-选择6个数码管,1表示点亮对应数码管);END jz;ARCHITECTURE arch OF jz IS signal data : std_logic_vector(3 DOWNTO 0);-数码管要显示的数015表示116 singal key_code : std_logic_vector(3 DOWNTO 0); signal led_sel_count :
6、 std_logic;-用于选择第5个和第6个数码管,分别用1和0代表 signal scan_key : std_logic_vector(3 DOWNTO 0); singal div_cnt : std_logic_vector(1 DOWNTO 0);-行扫描驱动检测矩阵键盘输入(参考按键模块原理):PROCESS(clk)-行扫描驱动,产生行扫描的值 BEGIN IF(clk EVENT AND clk = 0)THEN div_cnt scan_key scan_key scan_key scan_keyNULL; END CASE; END PROCESS;-根据div_cnt的
7、值产生scan_key,即row,其中,div_cnt作00到11的循环变化PROCESS(clk) BEGIN IF(clk EVENT AND clk=1)THEN -上升沿有效 CASE scan_key IS -检测何处有键按下 WHEN 1110 = CASE column IS WHEN 1110 = key_code key_code key_code key_code NULL; END CASE; ( 中间省略相同步骤 ) WHEN OTHERS = key_code = 1111; END CASE; END IF; END PROCESS;-scan_key的值不断产生1
8、110,1101,1011,0111的循环变化,当按键按下时,column得到输出,从而给key_code赋值,得知按键位置点亮数码管并显示数值: process (clk)-显示数据(以16为例) begin if (clk event and clk=0) then-下降沿有效 led_sel_count led_sel led_sel led_sel if (led_sel_count=0) then -15表示要显示16led_out = X82; -数码管6显示6else led_out led_out = Xff; end case; end if; end process; -l
9、ed_sel_count在0,1间循环变化,从而通过led_sel_count的取值分别循环点亮第5根和第6根数码管,同时确定显示的数值 6.仿真波形当row=1110,column=1110时,key_code=0000,键值为1,所以第一个数码管不亮,第二个数码管显示1,如下图:当row=0111,column=0111时,key_code=1111,键值为16,所以第一个数码管显示1,第二个数码管显示6,如下图:其他就不在这赘述。7.实现及硬件演示结果8.调试过程中的问题以及体会起初,根据自己的直觉,简单地认为行(row)与列(column)都应该是输入,直接进行带码的编写跟软件的调试。
10、在调试过程中,虽然并没有碰到出错,同时仿真图形也能够正确的显示出来。但是,当开始软硬件结合时,将程序烧入芯片时,就出现了错误,键盘完全不起作用,数码管只是一直显示同一个数值,没有任何变化。就这个问题,我们请教了指导老师王奇老师,她告诉我们,矩阵键盘需要一个输入和一个输出,而不是两个都是输入,让我们再看看电路图。之后到图书馆查找了相关书籍发现确实如此,循环输出行信号,检测列信号的输入。最终,在王奇老师的指导下,结合书上的实例跟讲解,圆满的解决了矩阵键盘的扫描问题,最终烧入程序后得出了正确的结果。同时,发现VHDL的特点在于它的并行特性,板子上电后,器件内部所有信号将同时并发工作,而不会与软件方式
11、按照程序顺序执行,即使在进程内部也是趋向并行工作。通过这一实验,使我们明白了,做实验时要充分理解相关基础原理,一步一步踏踏实实地做,才能得到满意的结果。通过实验了解了如何应用该硬件描述语言进行高速集成电路设计,熟悉了Quartus II设计与仿真环境,基本掌握硬件系统设计方法。对于VHDL语言三种设计风格也有了一定的了解,同时熟悉了其芯片硬件实现的过程。9.附录(VHDL源程序与管脚配置)源程序 library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.AL
12、L;ENTITY jz IS PORT ( clk : IN std_logic; row : out std_logic_vector(3 DOWNTO 0);-行线 column : in std_logic_vector(3 DOWNTO 0);-列线 led_out : out std_logic_vector(7 DOWNTO 0); -数码管8段显示,可显示09,AF led_sel : buffer std_logic_vector(5 DOWNTO 0)-选择6个数码管,1表示点亮对应数码管);END jz;ARCHITECTURE arch OF jz IS signal d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDAVHDL 课程设计 实验 报告

链接地址:https://www.31ppt.com/p-4192779.html