基于FPGA的键盘扫描程序的设计毕业设计


    X X 学 院

    CHANGSHA UNIVERSITY

    科生毕业设计


    设计(文)题目:

    基FPGA键盘扫描程序设计
    系    部:

    专 业:

    学 生 姓 名:

    班 级:

    学号
    指导教师姓名:

    职称 讲师


    XX学院教务处
    二○年二月制





      (20 13 届)
      科生毕业设计说明书
    基FPGA键盘扫描程序设计
    系    部:
    电子通信工程系
    专 业:

    学 生 姓 名:

    班 级:

    学号
    指导教师姓名:

    职称
    终评定成绩




    2013 年 6 月





    现代电子工业控制电路中键盘扫描显示电路系统调试设置着重作着EDA技术发展基FPGA扫描键盘结构简单效防止机械键盘键抖动带数错误等优点许电子设备中广泛应
    文设计基FPGA键盘扫描程序该设计EDA工具Quarutus II90开发完成CreatSOPC2000实验箱4*4矩阵键盘硬件实体设计键盘扫描程序程序划分时序产生模块键盘扫描模块弹跳消模块键值译码模块四模块时序产生模块键盘扫描弹跳消模块产生时钟信号键盘扫描模块采行扫描法4*4矩阵键盘进行扫描键值译码模块键值译码阳极8位7段数码显示码模块组合起实现键盘扫描设计求程序进行仿真分析硬件验证仿真结果表明该系统具集成度高稳定性设计灵活设计效率高等优点

    关键词: FPGAQuartus IIVHDL键盘扫描














    ABSTRACT

    In the modern electronics industry controllingcircuit the keyboard scanning and display circuit plays an important role in debugging and setting the system With the development of EDA technology FPGAbased scanning keyboard have been widely used in many electronic devices because of its simple structure and it also can effectively prevent mechanical keyboard jitter caused by data errors
    This article primarily designed an FPGAbased keyboard scan procedures this design is developed on the EDA tools—— Quarutus II90 and designed the keyboard scan program using the CreatSOPC2000 experimental box 4 * 4 matrix keyboard as the hardware entity the program is divided into four modules as the timing generation module a keyboard scanning module bounce cancellation module and the decoding module The timing generation module generates the clock signal for the keyboard scanning and bounce elimination module the keyboard scanning module using the line scanning method to sweep the 4* 4 matrix keyboard key decoder module decodes the key value for the common anode eight 7segment display code Several modules assembles together to meet the keyboard scanning design requirements Finally conducting simulation analysis by the program and verifying the hardwareSimulation results show that the system has many advantages such as high integration good stability high efficiency flexible design and high design efficiency

    Keywords FPGAQuartus IIVHDLkeyboard scanning

    目 录

    摘 I
    ABSTRACT II
    第1章 绪  1
    11 课题研究背景 1
    12 课题研究意义 2
    13 文工作 2
    第2章 FPGA开发工具简介 3
    21 FPGA概述 3
    22 VHDL语言Quartus II应 3
    23 章结 4
    第3章 基FPGA键盘扫描程序设计 3
    31 键盘扫描程序总体电路设计 5
    311 矩阵式键盘扫描工作原理 6
    312 数码显示原理 7
    32 键盘扫描电路功模块设计 8
    321 时序产生模块 8
    322 键盘扫描模块 9
    323 弹跳消模块 11
    324 键盘译码电路 13
    325 键盘扫描程序顶层文件设计 15
    33章结 16
    第4章 键盘扫描程序波形仿真硬件验证 17
    41 系统仿真 17
    411 消抖电路仿真 17
    412 键盘时钟信号仿真 18
    413 键盘扫描信号仿真 18
    414 键盘译码电路仿真 19
    415 键盘扫描总体电路仿真 21
    42引脚锁定 22
    43硬件验证 23
    44章结 25
    结   26
    参考文献 27
    附  录 28
    致  谢 32

    第1章 绪 

    11 课题研究背景
    现代计算机电子系统中般采通式标准键盘需数指令等信息通键盘输入计算机电子系统实现机间接口交互种嵌入式系统(微波炉手机电风扇等)中键盘键数限般十左右标准键盘般百左右键功含义针种电子设备键盘进行扫描程序设计时必须结合工程实际情况设备身种资源设计键盘够融合系统中成重组成部分
    数字电路中果键输出信号连接编码器应输入端通编码逻辑编码器输出端键应键值利编码器实现键键值直接编码种键盘早期称编码键盘类键盘许缺点键数量较时编码逻辑成会相变高.直接编码方法具局限性编码逻辑旦固定难改变现代数字电路中般键数量较时采扫描方式产生键值矩阵形式连接键键位行列相交点通输入扫描信号确定键行值列值位置码称扫描码通查表译码方式位置码转换键码值采类方式扫描惯称非编码键盘执行键盘扫描程中数键盘采机械开关键闭合时会出现难避免机械性抖动输出信号发生跳变跳变宽度般10 ms20 ms间进行处理系统会误认次键系统中须设置硬件延时电路键输入定时间延迟方读取键值键盘系统中常出现抖电路种情况前面键键值没输出已新键时键值会覆盖前面键值造成数丢失时系统中设置控制信号确保前键键值输出允许键值产生设置组寄存器保存键键值然系统序进行处理类扫描键盘优点需机担负扫描务软件程序完成次通更改程序改变键功定义
    基FPGA键盘扫描程序芯片中键盘扫描程序键盘进行扫描键时系统通时钟模块启动扫描程序次行键值赋值扫描行通键盘列输出确定键位置种扫描方法称逐行扫描法键时首先获键列值然逐行扫描判断键行值行列值出键键值外需键盘扫描程序中加入延时程序消机械键盘键抖动带影响果键盘扫描频率设置低扫描显示程中会出现键显示迟缓甚乱码等现象实际设计中需根设计求系统硬件规格选择合适扫描率现代数字设备中键盘采样键盘扫描方法

    12 课题研究意义
    计算机时代开始数字系统设计存两分类系统硬件设计系统软件设计早期数字系统设计员分两族群:硬件设计员软件设计员事工作领域少涉足方领域尤软件设计员着数字技术硬件系统发展两领域开始互相合作硬件描述语言HDL(Hardware Description Language)出现数字系统设计已软硬件分设计员HDL语言描述系统硬件构成行通仿真确定运系统硬件时否行设计出符合求硬件系统仅利HDL语言设计系统硬件传统硬件设计方法相具独特优势系统硬件设计带深远影响硬件设计领域次重变革
    传统键盘扫描硬件电路确定键盘变化特定硬件电路应特定键盘存样缺点:根实际应改变变化形式固定文采技术方案克服述讲技术缺点该键盘扫描程序软件控制完成需改变硬件电路适种类型键盘整系统设计动化程减少工作量精力放创造性方案概念构思提高工作效率缩短产品研制周期
    13 文工作
    设计计算机设计台综合运EDA软件工具开发环境硬件描述语言VHDL采顶设计方法系统分成模块设计达系统求然Quartus II90通编程调试编译仿真实现键盘扫描设计第二章介绍键盘扫描基特点工作原理查找关编程逻辑器件VHDL语言相关资料掌握定理知识熟悉Quartus II软件第三章先键盘扫描做出总体设计方案然键盘扫描进行分模块设计模块做出详细分析第四章根第三章做工作程序编译然进行仿真仿真出结果进行详细分析仿真完程序载实验箱进行测试设计做出总结
    第2章 FPGA开发工具简介

    21 FPGA概述
    FPGA现已取代ASIC实现功通常ASIC包含三种:全定制半定制(包括标准单元阵列)编程器件前面两种您需支付费项目重复NRE芯片流片分析工程开销成般10000美元数万计果成功返工甚次返工成成升高成高风险通常需求种ASIC成NRE费分配产品价格太高户通常接受然编程逻辑器件PLD解决述问题编程逻辑器件种新型ASIC着操作灵活易投资风险开发迅速突出优势非常适合产品前期开发研究样开发批量产品FPGA种新型PLD着PLD具优点规模般PLD规模
    FPGA特点:户需投片生产合芯片FPGA做全定制半定制ASIC电路中试样片部丰富触发器IO引脚ASIC电路中设计周期短开发费低风险器件 FPGA采高速CMOS工艺功耗低CMOSTTL电兼容说FPGA芯片批量系统提高系统集成度性佳选择FPGA存放片RAM中程序设置工作状态工作时需片RAM进行编程户根配置模式采编程方式加电时FPGA芯片EPROM中数读入片编程RAM中配置完成FPGA进入工作状态掉电FPGA恢复成白片部逻辑关系消失FPGA够反复FPGA编程须专FPGA编程器须通EPROMPROM编程器需修改FPGA功时需换片EPROM样片FPGA编程数产生电路功FPGA非常灵活

    22 VHDL语言Quartus II应
    VHDL英文全名VeryHighSpeed Integrated Circuit Hardware Description Language诞生1982 年1987年底VHDLIEEE美国国防部确认标准硬件描述语言
    VHDL描述数字系统结构行功接口含许具硬件特征语句外VHDL语言形式描述风格句法十分类似般计算机高级语言VHDL程序结构特点项工程设计称设计实体(元件电路模块系统)分成外部(称视部分端口)部(称视部分)涉实体部功算法完成部分设计实体定义外部界面旦部开发完成设计直接调实体种设计实体分成外部分概念VHDL系统设计基点完整VHDL程序通常包括实体(Entity)结构体(Architecture)配置 (Configuration)程序包集合(Package)库(Library)5部分前4部分分编译源设计单元库存放已编译实体结构体配置程序包集合

    Quartus II支持种设计输入形式:原理图VHDLVerilogHDLAHDL(Altera Hardware Description Language)等种综合性PLD开发软件嵌带仿真器综合器够完成输入设计配置硬件整PLD设计流程支持AlteraIP核编程系统(SOPC)Altera片开发具LPM宏功模块库户成熟功模块FPGA设计工作变更简单时Quartus II支持第三方EDA工具户熟悉第三方EDA工具进行设计工作外Quartus II 集合MatlabSimulinkDSP Builder等优秀EDA工具种DSP应系统台够快实现Quartus II综合性开发台集嵌入式软件开发系统级设计编程逻辑设计体

    23 章结
    章介绍基FPGA键盘扫描程序开发工具简单概述FPGA讲述FPGA原理FPGA设计流程外概述VHDL语言基知识简单介绍Quartus II软件
    第3章 基FPGA键盘扫描程序设计

    次设计根键盘扫描程序设计思路提出系统整体电路框图硬件实体部分设计中4*4矩阵键盘扫描原理8位7段数码显示方式进行简单概述根整体电路构架硬件实现原理编写键盘扫描程序系统进行模块化设计分时序产生模块设计键盘扫描模块设计弹跳消模块设计键盘译码模块设计VHDL硬件描述语言分编写模块程序QuartusII中VHDL语言程序分建立项目编译仿真通证实逻辑功正确File菜单选择CreateUpdate项中Create Symbol Files for Current File实体生成缀bsf组件符号文件图形编辑器中调组件Quartus II图形编辑器模块联系起形成顶层文件次设计体模块化设计方法明确设计思路便调试修改
    31 键盘扫描程序总体电路设计
    根设计思路提出键盘扫描程序总体电路设计图图31示4*4矩阵键盘键盘扫描电路时序产生电路(分频电路)弹跳消电路键盘译码电路8位7段数码显示电路构成整体工作原理通系统时钟提供频率进行分频分键盘扫描电路弹跳消电路提供时钟信号键盘扫描电路通键盘扫描时钟信号控制断产生键盘扫描信号键盘进行行扫描时弹跳消电路实时键盘键列信号进行采集采集键列信号传送键盘译码电路进行译码译出应键码译出键码通数码显示电路相应8段7位数码显示出终键结果完成次设计电路设计部分

    图31 键盘扫描电路框图
    311 矩阵式键盘扫描工作原理

    图32 4*4矩阵式键盘面板配置
    矩阵式键盘种常电子输入装置常生活中矩阵式键盘通信设备手机信息终端计算机家电器油烟机等式电子产品具重作图324*4矩阵式键盘面板配置图
    键盘键机械开关键时该键电路便会输出低电赋值0反果没键输出高电赋值1键盘扫描行信号KY0—KY3控制开始进行行扫描变化序次1110—1101—1011—0111—1110次扫描行次进行循环例现行扫描信号1011表示目前正扫描90AB行键果行中没键话KX3—KX0输出1111反果9键KX3—KX0输出0111
    根面述原理键位置码值关系表3132示

    表31 键位置数码关系
    KY3KY0
    1110
    1110
    1110
    1110
    1101
    1101
    1101
    1101
    KX3KX0
    0111
    1011
    1101
    1110
    0111
    1011
    1101
    1110
    键号
    1
    2
    3
    4
    5
    6
    7
    8

    表32 键位置数码关系
    KY3KY0
    1011
    1011
    1011
    1011
    0111
    0111
    0111
    0111
    KX3KX0
    0111
    1011
    1101
    1110
    0111
    1011
    1101
    1110
    键号
    9
    0
    A
    B
    C
    D
    E
    F
    KX3—KX0读出值皆1时代表该列没键进行键译码动作反果键时应KX3—KX0读出值送译码电路进行译码
    312 数码显示原理
    数码显示数方式静态显示动态显示分谓静态显示显示数BCD码通4—78显示译码器译码分接显示译码器显示驱动端a—g(p)公端COM根数码类型(阴阳)分接GNDVCC谓动态显示显示数BCD码定变化频率时刻周期性分送数总线通公4—78显示译码器译码接显示译码公显示驱动端口a—g(p)时时刻周期性选通应数码公端口COM
    设计采阳极数码采显示方式静态显示电路中数码键时数码显示出应键码值VHDL程序:
    数码显示程序
    library ieee
    use ieeestd_logic_1164all
    use ieeestd_logic_unsignedall
    entity smgxs is
    port(ym_in in std_logic_vector(4 downto 0)
    com0 out std_logic
    qout8 out std_logic_vector(7 downto 0))
    end entity smgxs
    architecture art of smgxs is
    signal qout8_s std_logic_vector(7 downto 0)
    begin
    process(ym_in)is
    begin
    case ym_in is
    when 00000>qout8_s<110000000
    when 00001>qout8_s<111110011
    when 00010>qout8_s<101001002
    when 00011>qout8_s<101100003
    when 00100>qout8_s<100110014
    when 00101>qout8_s<100100105
    when 00110>qout8_s<100000106
    when 00111>qout8_s<111110007
    when 01000>qout8_s<100000008
    when 01001>qout8_s<100100009
    when 01010>qout8_s<10001000A
    when 01011>qout8_s<10000000B
    when 01100>qout8_s<11000110C
    when 01101>qout8_s<11000000D
    when 01110>qout8_s<10000110E
    when 01111>qout8_s<10001110F
    when others>qout8_s<11111111
    end case
    end process
    qout8 com0<'1'
    end architecture art
    32 键盘扫描电路功模块设计
    321 时序产生模块
    时序产生模块中二种频率工作脉波形通系统时钟脉进行分频键盘扫描模块键盘抖模块时钟信号
    系统需种操作频率时钟脉时较直接简便方法计数器累加需种频率建立N位计数器N根电路需求决定N值越电路分频次数越样获更频率变化便提供种频率时钟信号输入时钟CLKN位计数器输出Q[N10]Q(0)CLK2分频脉信号Q(1)CLK4分频脉信号Q(2)CLK8分频脉信号……Q(N1)CLK2N 分频脉信号利规律需频率信号信号序列时序产生模块模块电路图图34示xd_clk输出信号ym_clk输出信号分系统时钟clk8分频2分频中xd_clk信号作弹跳消取样电路时钟信号ym_out信号作键盘扫描电路时钟信号时序产生模块原理图图33示

    图33 时序产生模块

    时序产生模块VHDL描述:
    扫描时钟产生程序
    library ieee
    use ieeestd_logic_1164all
    use ieeestd_logic_unsignedall
    use ieeestd_logic_arithall
    entity smsz is
    port(clk in std_logic
    ym_clk out std_logic
    xd_clk out std_logic)
    end entity smsz
    architecture art of smsz is
    signal clk_s std_logic_vector(3 downto 0)
    begin
    process(clk)is
    begin
    if(clk'event and clk'1')then 升
    if(clk_s1111)then
    clk_s<0000
    else
    clk_s end if
    end if
    end process
    ym_clk xd_clkend architecture art
    322 键盘扫描模块
    键盘扫描模块功键盘提供扫描信号(表31中行扫描信号KY0—KY3)行扫描信号时钟控制序次赋值1110—1101—1011—0111扫描时KY0KY3分扫描四行键行扫描信号赋值0111时KY0行键进行扫描扫描信号赋值1011时扫描KY1行键扫描信号赋值1101时扫描KY2行键扫描信号赋值1110时检测KY3行键情况通行扫描信号循环次检查行否键果行键立刻进行键编码进行译码译码结果传送数码键盘扫描模块模块图图34示

    图34 键盘扫描模块
    键盘扫描模块VHDL描述:
    扫描信号产生程序
    library ieee
    use ieeestd_logic_1164all
    use ieeestd_logic_arithall
    use ieeestd_logic_unsignedall
    entity smxh is
    port(clk in std_logic
    q_out out std_logic_vector(1 downto 0)
    sm_out out std_logic_vector(3 downto 0))
    end entity smxh
    architecture art of smxh is
    signal sm_s std_logic_vector(3 downto 0)
    signal q_s std_logic_vector(1 downto 0)
    begin
    process(clk)is
    begin
    if(clk'event and clk'1')then
    if(q_s11)then
    q_s<00
    else
    q_s end if
    end if
    end process
    process(q_s)is
    begin
    case q_s is
    when 00>sm_s<1110 输出扫描信号1110
    when 01>sm_s<1101 输出扫描信号1101
    when 10>sm_s<1011 输出扫描信号1011
    when 11>sm_s<0111 输出扫描信号0111
    when others>sm_s<1111
    end case
    end process
    sm_out q_outend architecture art
    323 弹跳消模块
    设计中4*4矩阵键盘机械开关键时刻会触片出现信号回弹跳现象种弹跳现象会造成乱码现象影响键结果正确显示
    图35弹跳现象造成错误抽样结果中出然键次然马松开然实际键信号已跃变次通取样信号检查输出错误编码

    图35 弹跳现象产生错误抽样结果
    果调整抽样频率(图36示)发现弹跳现象获改善

    图36 调整抽样频率抽样结果
    系统加模块效避免乱码现象发生外系统中弹跳消模块脉信号频率必须高模块中脉信号频率般情况扫描模块工作频率24Hz左右弹跳消模块工作频率必须128Hz左右者工作频率高前者

    图37 弹跳消电路部实现原理图
    弹跳消电路实现原理图37示键时键盘输入信号D_INCLK模块时钟信号抽样信号D_IN通两D触发器延时RS触发器处理
    RS触发器前端连接非门原理:
    (1)通常键速度维持10次秒左右说次键时间100ms左右时间估算50ms取样信号CLK周期8ms计取样6次
    (2)稳定噪声4ms抽样次
    (3)触发器前接ANDNOTSR组态表33示
    表33 RS触发器真值表
    S
    R
    D_OUT
    0
    0

    1
    0
    1
    0
    1
    0
    (1)D01D11时结果S1R0D_OUT会输出1代表取样D_IN信号连续取样两次1时认定已稳定钮
    (2)D00D10时结果S0R1D_OUT会输出0代表取样D_IN信号连续取样两次0时认定已稳定放掉钮
    (3)D01D10时结果S0R0D_OUT维持先前输出信号变D00D11
    总必须取样两次1会输出1两次0会输出0D_OUT信号输出时间宽度长输出必须接级微分电路接译码电路
    弹跳消模块VHDL描述:
    D触发器程序
    library ieee
    use ieeestd_logic_1164all
    entity dcfq is
    port(clkd in std_logic
    q out std_logic)
    end entity dcfq
    architecture art of dcfq is
    begin
    process(clk)
    begin
    if clk'event and clk'1' then 升
    q end if
    end process
    end architecture art
    SR触发器
    library ieee
    use ieeestd_logic_1164all
    entity srcfq is
    port(rs in std_logic
    qqb out std_logic)
    end entity srcfq
    architecture art of srcfq is
    signal q_sqb_s std_logic
    begin
    process(rs)is
    begin
    if(r'0' and s'1')then RS触发器输出置1’
    q_s<'1'
    qb_s<'0'
    elsif(r'1' and s'0')then RS触发器输出置0’
    q_s<'0'
    qb_s<'1'
    elsif(r'0' and s'0')then RS触发器输出保存变
    q_s qb_s end if
    q qb end process
    end architecture art
    324 键盘译码电路
    键盘译码电路工作原理:首先根输入键盘信号判断否键盘果键盘根输入键盘信号扫描信号进行查表根查表直接出相应键盘译码值
    矩阵式键盘中键键值参表(表34键盘参数表)
    表34 键盘参数表
    扫描位置
    KY3KY0
    键盘输出
    KX3KX0
    相应
    键盘键
    键盘译码
    电路输出
    1110
    0111
    1
    0001
    1011
    2
    0010
    1101
    3
    0011
    1110
    4
    0100
    1101
    0111
    5
    0101
    1011
    6
    0110
    1101
    7
    0111
    1110
    8
    1000
    1011
    0111
    9
    1001
    1011
    0
    0000
    1101
    A
    1010
    1110
    B
    1011
    0111
    0111
    C
    1100
    1011
    D
    1101
    1101
    E
    1110
    1110
    F
    1111

    键盘译码模块模块原理图图38示

    图38 键盘译码模块
    键盘译码模块VHDL描述:
    译码电路程序
    library ieee
    use ieeestd_logic_1164all
    use ieeestd_logic_unsignedall
    use ieeestd_logic_arithall
    entity ymdl is
    port(clk in std_logic
    sm_in in std_logic_vector(1 downto 0)
    jm_in in std_logic_vector(3 downto 0)
    ym_out out std_logic_vector(3 downto 0))
    end entity ymdl
    architecture art of ymdl is
    signal jm_s std_logic_vector(5 downto 0)
    signal ym_s std_logic_vector(3 downto 0)
    begin
    process(clk)is
    begin
    jm_s if(clk'event and clk'1')then
    case jm_s is
    when 000111>ym_s<0001 译码值1
    when 001011>ym_s<0010 译码值2
    when 001101>ym_s<0011 译码值3
    when 001110>ym_s<0100 译码值4
    when 010111>ym_s<0101 译码值5
    when 011011>ym_s<0110 译码值6
    when 011101>ym_s<0111 译码值7
    when 011110>ym_s<1000 译码值8
    when 100111>ym_s<1001 译码值9
    when 101011>ym_s<0000 译码值0
    when 101101>ym_s<1010 译码值A
    when 101110>ym_s<1011 译码值B
    when 110111>ym_s<1100 译码值C
    when 111011>ym_s<1101 译码值D
    when 111101>ym_s<1110 译码值E
    when 111110>ym_s<1111 译码值F
    when others>ym_s end case
    end if
    end process
    ym_outend architecture art
    325 键盘扫描程序顶层文件设计
    设计模块相互联系起通QUARTUS II图形编辑器模块定关系建立顶层文件jpsmbdf通连线模块整合整体电路VHDL实现总体模块电路图图39示:

    图39 键盘扫描程序顶层文件图

    33章结
    章首先根课题务书查找资料出次设计整体电路设计方案然硬件部分4*4矩阵键盘8段7位数码原理进行阐述键盘扫描程序模块(时序产生模块键盘扫描模块弹跳消模块键盘译码模块)分进行设计模块进行编程生成电路元件进行详细分析根设计思路模块电路元件进行整合生成键盘扫描程序顶层文件

    第4章 键盘扫描程序波形仿真硬件验证

    系统采ALTERA公司软件Quartus II90软件进行编译仿真硬件部分利CreatSOPC2000实验箱时钟频率源4*4矩阵键盘8位7段数码EP1C20F324C8芯片模块搭建电路进行硬件验证Quartus II支持种设计输入形式:原理图VHDLVerilogHDLAHDL(Altera Hardware Description Language)等种综合性PLD开发软件嵌带仿真器综合器够完成输入设计配置硬件整PLD设计流程支持AlteraIP核编程系统(SOPC)Altera片开发具LPM宏功模块库户成熟功模块FPGA设计工作变更简单时Quartus II支持第三方EDA工具户熟悉第三方EDA工具进行设计工作外Quartus II 集合MatlabSimulinkDSP Builder等优秀EDA工具种DSP应系统台够快实现Quartus II综合性开发台集嵌入式软件开发系统级设计编程逻辑设计体
    41 系统仿真
    软件Quartus II90程序进行编译编译进行波形仿真方便观察显示结果里调节仿真时间1s 脉频率clk周期10ms保存模块VWF文件执行Quartus软件中processing> start simulation选项生产模块波形仿真图观察分析结果否设计方案中设计思路致
    411 消抖电路仿真
    键盘键闭合释放瞬间输入信号会键抖动问题出现果进行消抖处理系统会键抖动误户次输入导致系统误操作出现乱码
    图41键盘输入抖电路仿真结果图图中输出信号Q_OUTQB_OUT图出输出信号Q_OUT信号跃变输入信号D_IN拖两时钟周期必须连续两次采样检测信号变化系统会做出反应否电路视噪声予理会原弹跳现象键盘输入抖电路处理已解决

    图41 键盘输入抖电路仿真图
    412 键盘时钟信号仿真
    键盘时钟信号系统时钟提供频率进行分频图41键盘电路提供时钟信号仿真结果图图中输出信号clk_out[30]图出clk_out(0)clk时钟信号2分频信号clk_out(1)clk时钟信号4分频信号clk_out(2)clk时钟信号8分频信号clk_out(3)clk时钟信号16分频信号中clk_out(0)分译码电路扫描信号产生电路提供时钟中clk_out(2)抖电路提供时钟


    图42 键盘时钟信号仿真图
    413 键盘扫描信号仿真
    图43键盘扫描信号产生电路仿真结果图中输入clk输出sm_out[30]q_out[10]图出q_out值sm_out值图32扫描信号标示完全致中sm_out键盘扫描信号q_out译码电路提供相应扫描值观察仿真结果知q_out值sm_out值图32标示键盘行信号应译码值完全致


    图43 键盘扫描信号仿真图
    414 键盘译码电路仿真
    图44图45图46图47键盘译码电路仿真结果图中输入信号clkjm_in[30]sm_in[10]输出ym_out[30]图出扫描信号分0111101111011110时输出译码值ym_out输入sm_in值表34中完全符合

    图44 扫描信号0111时键盘译码电路仿真图

    图45 扫描信号1011时键盘译码电路仿真图
    图46 扫描信号1101时键盘译码电路仿真图

    图47 扫描信号1110时键盘译码电路仿真图
    415 键盘扫描总体电路仿真
    图48图49图410图411键盘扫描总体电路仿真结果图中输入信号clkjm0jm1jm2jm3输出信号smxh[30]ymxh[30]图出键盘输出键码分1110110110110111时扫描信号smxh译码结果ymxh表34完全符合

    图48 键盘输出1110时键盘扫描总体电路仿真图

    图49 键盘输出1101时键盘扫描总体电路仿真图

    图410 键盘输出1011时键盘扫描总体电路仿真图

    图411 键盘输出0111时键盘扫描总体电路仿真图
    42引脚锁定
    次设计CreatSOPC2000 实验箱实现Cyclone系列EP1C20F324C8芯片完成实验箱电路原理图元件符号实验室芯片引进列表查出系统设计中信号应引脚仿真选择Assignments -> Assignments EditorAssignments Editor窗口中选择 Pin 标签页芯片EP1C20F324C8引脚列表原理图中元件符号进行引脚锁定终引脚锁定图412示:

    图412 引脚锁定列表
    43硬件验证
    VHDL语言编写源程序QuartusⅡ软件完成编译测试波形仿真芯片EP1C20F324C8进行引脚锁定需进行载验证重新编译完成形成配置FPGA jpsmsof 文件载CreateSOPC2000实验系统SOPC 开发板次设计实验箱时钟产生模块芯片模块数码显示模块4*4矩阵键盘跳线时钟模块连接芯片模块载完成键进行测试观察否解决键抖动问题数码否正常显示键键值
    键观察实验箱数码显示结果数码显示图(图413图414图415)图中出数码正常显示4*4键盘16键(09AF)结果采合适扫描频率键结果显示迅速延迟采键消抖模块会出现乱码问题符合设计求完成次毕业设计务
    设计采8位7段数码键盘AF字母键进行数字显示程序载试验箱键盘A键F键5键实验箱显示结果图413图414图415示

    图413 A键显示结果图


    图414 F键显示结果图

    图415 5键显示结果图

    44章结
    章系统组成部分抖电路键盘时钟信号键盘扫描电路键盘译码电路进行波形仿真通波形仿真图分析检测次设计模块逻辑功否已实现进行引脚锁定源程序载实验箱进行硬件验证



    设计计算机工作台综合运EDA软件工具开发环境硬件描述语言VHDL采顶设计方法系统分成模块设计达系统预期求然Quartus II90通编程调试编译仿真实现键盘扫描程序设计
    文键盘扫描程序原理系统结构设计方法进行研究取成果:
    (1) 概述课题研究背景课题研究意义文工作
    (2) 概述FPGA设计流程VHDL语言Quartus II软件应进行简单介绍
    (3) 根次设计课题务书查找资料出键盘扫描程序总体设计方案设计出四模块(时序产生模块键盘扫描模块弹跳消模块键盘译码模块)
    (4) Quartus软件编译程序进行仿真然CreateSOPC2000实验系统SOPC 开发板键盘扫描系统进行硬件测试验证
    该系统具集成度高稳定性设计灵活设计效率高等优点然次设计实现键盘扫描显示功时间水限方改进例位数扫描显示键盘扫描LED点阵显示等






    参考文献
    [1] 李君胡胜种新型键盘扫描方式[J]控制工程 2004(S1):125148
    [2] 杜道山白荣华伺服控制系统键盘扫描程序处理[J]机床液压 2005(01)
    [3] 吴淑芸定时中断扫描键盘显示器程序设计[J]动化仪表 1994(01)
    [4] 李亮蒋华勤董雪峰基FPGA键盘控制计数电路设计实现[J]电子设计工程2011(8)154156
    [5] 王美丽FPGA设计制造键盘扫描[J]仪表技术2008(10)4749
    [6] 张玲基FPGA4*4键盘扫描电路设计[J]计算机软件光盘应2012(13)181182
    [7] 袁文波FPGA应开发实践提高[M]中国电力出版社2007:78
    [8] 褚振勇FPGA设计应[M]西安电子科技学出版社2002:6168
    [9] 周润景基QuartusIIFPGACPLD数字系统设计实例[M]电子工业出版社2007:98104
    [10] 胡振华VHDLFPGA设计[M]中国铁道出版社2003:5153
    [11] 樊国梁张晓燕基VHDL键盘扫描显示电路设计[J]电子世界2005(02)
    [12] 包明EDA技术编程逻辑器件应[M]北京邮电学出版社2006
    [13] 尹唱唱卫阿盈基QuartusⅡ数字电路设计研究[J]中国科技信息2009(21):75
    [14] 王艳玲QuartusⅡ应数字电路教学研究[J]中国科技信息2009(02):4147
    [15] 程继航黄飞石静苑QuartusⅡEDA技术中应[J]电脑编程技巧维护2009(S1)

    附 录
    程序:
    D触发器程序
    library ieee
    use ieeestd_logic_1164all
    entity dcfq is
    port(clkd in std_logic
    q out std_logic)
    end entity dcfq
    architecture art of dcfq is
    begin
    process(clk)
    begin
    if clk'event and clk'1' then 升
    q end if
    end process
    end architecture art

    SR触发器
    library ieee
    use ieeestd_logic_1164all
    entity srcfq is
    port(rs in std_logic
    qqb out std_logic)
    end entity srcfq
    architecture art of srcfq is
    signal q_sqb_s std_logic
    begin
    process(rs)is
    begin
    if(r'0' and s'1')then RS触发器输出置1’
    q_s<'1'
    qb_s<'0'
    elsif(r'1' and s'0')then RS触发器输出置0’
    q_s<'0'
    qb_s<'1'
    elsif(r'0' and s'0')then RS触发器输出保存变
    q_s qb_s end if
    q qb end process
    end architecture art

    译码电路程序
    library ieee
    use ieeestd_logic_1164all
    use ieeestd_logic_unsignedall
    use ieeestd_logic_arithall
    entity ymdl is
    port(clk in std_logic
    sm_in in std_logic_vector(1 downto 0)
    jm_in in std_logic_vector(3 downto 0)
    ym_out out std_logic_vector(3 downto 0))
    end entity ymdl
    architecture art of ymdl is
    signal jm_s std_logic_vector(5 downto 0)
    signal ym_s std_logic_vector(3 downto 0)
    begin
    process(clk)is
    begin
    jm_s if(clk'event and clk'1')then
    case jm_s is
    when 000111>ym_s<0001 译码值1
    when 001011>ym_s<0010 译码值2
    when 001101>ym_s<0011 译码值3
    when 001110>ym_s<0100 译码值4
    when 010111>ym_s<0101 译码值5
    when 011011>ym_s<0110 译码值6
    when 011101>ym_s<0111 译码值7
    when 011110>ym_s<1000 译码值8
    when 100111>ym_s<1001 译码值9
    when 101011>ym_s<0000 译码值0
    when 101101>ym_s<1010 译码值A
    when 101110>ym_s<1011 译码值B
    when 110111>ym_s<1100 译码值C
    when 111011>ym_s<1101 译码值D
    when 111101>ym_s<1110 译码值E
    when 111110>ym_s<1111 译码值F
    when others>ym_s end case
    end if
    end process
    ym_outend architecture art

    扫描信号产生程序
    library ieee
    use ieeestd_logic_1164all
    use ieeestd_logic_arithall
    use ieeestd_logic_unsignedall
    entity smxh is
    port(clk in std_logic
    q_out out std_logic_vector(1 downto 0)
    sm_out out std_logic_vector(3 downto 0))
    end entity smxh
    architecture art of smxh is
    signal sm_s std_logic_vector(3 downto 0)
    signal q_s std_logic_vector(1 downto 0)
    begin
    process(clk)is
    begin
    if(clk'event and clk'1')then
    if(q_s11)then
    q_s<00
    else
    q_s end if
    end if
    end process
    process(q_s)is
    begin
    case q_s is
    when 00>sm_s<1110 输出扫描信号1110
    when 01>sm_s<1101 输出扫描信号1101
    when 10>sm_s<1011 输出扫描信号1011
    when 11>sm_s<0111 输出扫描信号0111
    when others>sm_s<1111
    end case
    end process
    sm_out q_outend architecture art

    扫描时钟产生程序
    library ieee
    use ieeestd_logic_1164all
    use ieeestd_logic_unsignedall
    use ieeestd_logic_arithall
    entity smsz is
    port(clk in std_logic
    clk_out out std_logic_vector(3 downto 0))
    end entity smsz
    architecture art of smsz is
    signal clk_s std_logic_vector(3 downto 0)
    begin
    process(clk)is
    begin
    if(clk'event and clk'1')then
    if(clk_s1111)then
    clk_s<0000
    else
    clk_s end if
    end if
    end process
    clk_outend architecture art

















    致 谢











    学生签名:
    日 期:




    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 8 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    非编码键盘的扫描程序设计课程设计

    摘 要 11设计方案 21.1 设计任务 21.2 设计方案 22系统硬件设计 32.1最小应用系统 32.2 8155扩展电路 42.3 矩阵键盘接口电路 62.4 LCD1602...

    2年前   
    352    0

    基于FPGA的电梯控制系统设计毕业设计论文

    毕 业 设 计 [论 文]题 目: 基于FPGA的电梯控制系统设计 学 院: 电气与信息工程学院 ...

    3年前   
    1273    0

    基于FPGA的IIR滤波器设计

     基于FPGA的IIR滤波器设计摘 要:数字信号处理在科学和工程技术许多领域中得到广泛的应用,与FIR数字滤...

    3年前   
    540    0

    基于FPGA的温度检测系统设计

    XX学院信息工程学院数字系统与Verilog设计报告题 目: 基于FPGA的温度检测系统设计 姓 名: 学 号: ...

    3年前   
    608    0

    基于arm键盘课程设计

    基ARM课程设计 专 业:自动化学 号:姓 名: 在ARM嵌入式应用中,人机交互对话最通用的方法就是通过键盘和LCD显示进行的,本设计是通过键盘向系统发送各种指令或置入必要的数据信息。键盘模块...

    2年前   
    469    0

    基于FPGA的数字跑表

    基于FPGA的数字跑表学院:物电学院姓名: 学号:班级:班日期:2011年X月X日目录一、实例的主要内容 3二、实验目标: 41初步掌握Verilog HDL语言的设计方法 42、完成一个数字...

    3年前   
    630    0

    PARWANCPU状态机设计基于FPGA的数字系统设计

     基于FPGA的数字系统设计 大作业 学号: 姓名: 班级: 题目一:设计Pa...

    11个月前   
    302    0

    基于FPGA的多路彩灯控制器的设计课程设计

     FPGA课程设计报告 学院: 信息工程学院班 级: 信息级班姓 名: 学 号: 完成时间: 2015年X月X日 评阅意见: 题目...

    3年前   
    528    0

    基于FPGA的计数器设计电子技术课程设计

    XX学院电子技术课程设计 题 目 _基于FPGA的计数器设计___ __________...

    1年前   
    319    0

    FPGA课程设计基于RAM的十口8位计数器

    FPGA课程设计报告题 目: 基于RAM的十口8位计数器 院 系: 通信与信息工程学院...

    3年前   
    453    0

    基于FPGA的FSK数字调制解调器设计

    等级:课 程 设 计课程名称专业课程设计课题名称基于FPGA的FSK数字调制解调器设计专 业电子信息工程班 级学 号姓 名指导老师2016年X月X日电气信息学院专业设计...

    1年前   
    333    0

    通信工程基于FPGA的图像数据处理FIFO核设计论文

     基于FPGA的图像数据处理 FIFO核设计 院 系:信息科学与工程学院 专 业 班:通信1201 姓 名: 学 号: 指导教师:...

    5年前   
    1083    0

    基于Android的中国象棋毕业设计

    基于Android的中国象棋毕业设计 摘 要 现在智能操作系统迅速发展,使得智能手机和其他的智能移动设备得到广泛普及,因此,智能操作系统的应用软件开发及其需要的服务将有广阔的发展前景...

    5年前   
    1216    0

    基于安卓系统的点餐系统毕业设计

     本科毕业论文(设计) 题 目: 基于安卓系统的点餐系统 专 业: 姓 名: 指导教师: ...

    5年前   
    1690    0

    基于单片机智能小车毕业设计

    毕 业 设 计(论 文)设计(论文)题目: 基于单片机的智能小车 ...

    6个月前   
    200    0

    基于FPGA的语音录制与回放系统

    本语音录制与回放系统的基本工作原理是将模拟语音信号通过模数转换器(A/D)转换成数字信号,再通过FPGA(控制器)将数字信号存储到存储器中; 回放时, 由 FPGA控制将数据从存储器中读出, 然...

    5年前   
    1183    0

    2018年毕业设计(论文)的工作程序

    毕业设计(论文)的工作程序  毕业设计(论文)一般工作程序如下:  1.下达设计(论文)任务书  毕业设计(论文)题目选定后,应由指导教师向学生下达毕业设计(论文)任务书,明确下达设计(论文)...

    6年前   
    320    0

    基于VHDL的电子琴设计(含完整程序)

     课程设计报告 题 目 专业、学号 授课班号 学生姓名 指导教师 ...

    5年前   
    872    0

    基于微信小程序的测试设计与分析

    基于微信小程序的测试设计与分析Testing Design and Analysis Based on WeChat Mini Program日成绩评定 成绩项论文成绩(百分制)折合比例...

    3年前   
    963    0

    基于51单片机的智能窗户设计毕业设计

    基于51单片机的智能窗户设计【摘 要】 随着电子技术的发展和人民生活水平的不断提高,智能窗已经越来越多地被用到了现代智能化建筑中,提供住户一个安全、方便的环境。据统计,在未来的几年内,安装智...

    5个月前   
    121    0

    文档贡献者

    知***享

    贡献于2020-08-25

    下载需要 8 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档