单片机系统设计与应用实例 教学课件 ppt 作者 韩志军 主编 第十一章

上传人:E**** 文档编号:89492436 上传时间:2019-05-25 格式:PPT 页数:53 大小:1.17MB
返回 下载 相关 举报
单片机系统设计与应用实例 教学课件 ppt 作者 韩志军 主编 第十一章_第1页
第1页 / 共53页
单片机系统设计与应用实例 教学课件 ppt 作者 韩志军 主编 第十一章_第2页
第2页 / 共53页
单片机系统设计与应用实例 教学课件 ppt 作者 韩志军 主编 第十一章_第3页
第3页 / 共53页
单片机系统设计与应用实例 教学课件 ppt 作者 韩志军 主编 第十一章_第4页
第4页 / 共53页
单片机系统设计与应用实例 教学课件 ppt 作者 韩志军 主编 第十一章_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《单片机系统设计与应用实例 教学课件 ppt 作者 韩志军 主编 第十一章》由会员分享,可在线阅读,更多相关《单片机系统设计与应用实例 教学课件 ppt 作者 韩志军 主编 第十一章(53页珍藏版)》请在金锄头文库上搜索。

1、本章给出了PLD器件在复杂数字系统的典型应用实例-数字时钟的设计。数字时钟的设计也是PLD在复杂数字系统的经典应用。 该章首先介绍了数字时钟的功能要求和整体结构;随后具体介绍了数字时钟的模块设计,其中包括数字时钟控制信号和控制模块的具体结构。本章最后详细描述了设计的具体实现过程,具体包括数字时钟的计数模块设计、计数时钟及扫描时钟设计和显示控制模块设计。,数字时钟设计-本章概要,第11章,第十一章,数字钟时常见的一种计数装置,数字钟以1Hz的频率工作。该设计完成数字钟的运行和显示。其主要功能有: 数字钟以1Hz的频率工作,其输入频率为1MHz。 数字钟显示时、分、秒信息。这些显示信息在6个7 段

2、数码管上完成。 通过按键设置时、分信息。并且具有对数字钟的复位功能。 复位键将时、分、秒清零,并做好重新计数的准备。 按键具有预置时、分的功能。分别对当前的时和分信息做递增设置和递减设置。,第十一章,数字时钟设计-数字时钟的功能要求,第十一章,数字时钟设计-数字时钟的结构,第十一章,数字时钟设计-数字时钟的结构,图11.1给出了该数字钟的结构图。从图中可以看到,数字钟由: 复位按键(reset); 小时递增按键(hour_inc); 小时递减按键(hour_dec); 分钟递增按键(min_inc); 分钟递减按键(min_dec); 时钟输入; 7段LED显示LED管选择信号线sel; LE

3、D码控制信号线(segment),该数字钟的控制部分由PLD芯片完成。该芯片的输入和输出接口由下面信号组成: 输入信号: 复位信号(reset) 时钟输入信号(clk) 小时递增信号(hour_inc) 小时递减信号(hour_dec) 分钟递增信号(min_inc) 分钟递减信号(min_dec),数字时钟设计-数字时钟的信号,第十一章,输出信号: LED选择信号(sel) LED码显示控制信号(segment),数字时钟设计-数字时钟的信号,第十一章,该设计分成下面四个模块:定时时钟模块、扫描时钟模块、按键处理模块、定时计数模块和显示控制模块。图11.2给出了这几个模块之间的信号连接关系。

4、,第十一章,数字时钟设计-控制模块结构,1、按键处理模块 由于VHDL语言的规则,将按键的处理和定时模块设计在一起。为了描述清楚,将对按键的处理进行说明。在该设计中,采用异步复位电路方式。当复位信号低有效时,计数器停止计数,时、分、秒清零。 对于小时的递增、递减按键操作,通过一个1Hz的计数时钟采样。图11.3给出了递增、递减的操作时序。,第十一章,数字时钟设计-控制模块结构,第十一章,数字时钟设计-控制模块结构,当1Hz的div_clk信号的上升沿到来时,检测hour_inc和hour_dec按键,图中的虚线表示在时钟的上升沿对按键信号进行采样。当hour_inc或hour_dec按键低有效

5、时,对小时进行递加或递减操作。 对于分钟的递加、递减按键操作,也是通过一个1Hz的计数时钟采样。原理同图11.4。,数字时钟设计-控制模块结构,第十一章,2、定时时钟模块 定时时钟模块其作用就是将外部提供的1MHz的时钟,通过分频器后向模块内的定时计数模块提供1Hz的定时计数时钟。在设计定时时钟模块时,采用同步计数电路。,数字时钟设计-控制模块结构,第十一章,3、扫描时钟模块 扫描时钟模块的作用就是通过对1MHz的分频处理后,向显示控制模块提供合适的显示扫描时钟,该时钟必须经过合理的设计,才能保证7段数码显示的稳定。在设计扫描时钟模块时,采用同步计数电路。,数字时钟设计-控制模块结构,第十一章

6、,4、定时计数模块 定时计数模块是该设计中最重要的一部分,在设计该模块时,为了便于后续显示控制模块的设计,将时、分、秒进行分离,即小时分成了小时的十位和个位分别处理,分钟分成了分钟的十位和个位分别处理。秒分成了秒的十位和个位分别处理。在该设计中,采用24小时计数模式。 例如:13:28:57。13为小时的表示,1为小时的十位,3为小时的个位;28为分钟的表示,2为分钟的十位,8为分钟的个位;57为秒的表示,5为秒的十位,7为秒的个位。,数字时钟设计-控制模块结构,第十一章,秒的个位计数从0-9,即十进制计数。当秒的个位计数到9后,准备向秒的十位进位。秒的十位计数从0-5,即六进制计数。当秒的十

7、位计数到5后,准备向分的个位进位。 分钟的个位计数从0-9,即十进制计数。当分钟的个位计数到9后,准备向分钟的十位进位。分钟的十位计数从0-5,即六进制计数。当分钟的十位计数到5后,准备向小时的个位进位。 对于小时的处理比较复杂,小时的十位和个位之间存在下面的关系: 当小时的十位为0或1时,小时的个位可以计数范围为0-9,即十进制计数; 当小时的十位为2时,小时的各位可以计数的范围为0-3,即四进制计数;,数字时钟设计-控制模块结构,第十一章,数字时钟设计-控制模块结构,第十一章,5、显示控制模块 显示控制模块主要作用是在7段数码管上正确的显示0-9的数字。sel三位LED选择线和3-8译码器

8、相连,数字时钟设计-控制模块结构,第十一章,整个工程窗口:含设计时钟源文件、仿真测试文件、用户约束文件,第十一章,数字时钟设计-控制模块结构,数字时钟设计-行为仿真结果,第十一章,数字时钟设计-布局布线仿真结果,第十一章,选择“project-new source”; 设置实现约束文件类型Implementation Constraints File,文件名clock; 单击“下一步”,选中与“clock”关联; 单击“下一步”,单击“完成”; 选中“clcok.ucf”文件,在Process view窗口双击“Assign package pins”,出现Xinlinx PACE窗口界面;,

9、数字时钟设计-用户约束文件设置,第十一章,数字时钟设计- Xinlinx PACE窗口界面,第十一章,6. 单击Design Object List-IO Pins窗口中每一信号后的Loc,可以输入对应的FPGA引脚,形式如P78。设置完成,保存文件,退出Xilinx PACE窗口,完成引脚分配。,数字时钟设计-用户约束文件设置,第十一章,数字时钟设计-引脚分配文件,第十一章,1.首先选中“Generate Programming File ”,右键单击,单击“Properties”; 2.选中“Process Properties”窗口下的“Startup options”标签,设置“FPG

10、A start-up clock”为JTAG,单击“确定”;,数字时钟设计-编程下载验证,第十一章,数字时钟设计-编程下载验证,第十一章,3.在如下图所示的“Process for source:clock-behavioral”中,双击Configure Device (iMPACT).,数字时钟设计-编程下载验证,第十一章,4.系统自动进行综合、实现过程,若没有错误,将出现如下窗口,单击“下一步”,单击“完成”;,数字时钟设计-编程下载验证,第十一章,5.出现一个确认窗口,告知检测到一个器件,单击“确定”按钮; 6.选择刚刚生成的bit文件,单击“打开”; 7.可能会出现警告,单击“确定”

11、; 8.此时界面中JTAG链上只有一个器件,型号为 XC3S400,单击鼠标右键,单击“Program”,完成对器件编程,进行实际验证。,数字时钟设计-编程下载验证,第十一章,library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -实体定义部分 entity clock is port( clk : in std_logic; rst : in std_logic; inc_min : in std_logic; sub_min : in

12、 std_logic; inc_hour : in std_logic; sub_hour : in std_logic; sel : out std_logic_vector(2 downto 0); q : out std_logic_vector(7 downto 0); end clock;,数字时钟设计-主程序,第十一章,-信号定义: architecture Behavioral of clock is signal sec_counter1:std_logic_vector(3 downto 0); signal sec_counter2:std_logic_vector(3 d

13、ownto 0); signal min_counter1:std_logic_vector(3 downto 0); signal min_counter2:std_logic_vector(3 downto 0); signal hour_counter1:std_logic_vector(3 downto 0); signal hour_counter2:std_logic_vector(3 downto 0); signal divcounter : std_logic_vector(3 downto 0); signal div_clk : std_logic; signal sca

14、ncounter : std_logic_vector(1 downto 0); signal scan_clk : std_logic; signal scan_out : std_logic_vector(2 downto 0); signal secseg1,secseg2,minseg1,minseg2,hourseg1,hourseg2:std_logic_vector(7downto 0); begin,数字时钟设计-主程序,第十一章,-计数时钟,对外部输入时钟分频,此处只适用于仿真,实际进行时间计数时,分频后时钟应该满足1HZ。 process(rst,clk) begin if

15、(rst=0)then divcounter=“0000“; div_clk=0; elsif(rising_edge(clk) then if(divcounter=“1111“) then divcounter=“0000“; div_clk=not div_clk; else divcounter=divcounter+1; end if; end if; end process;,数字时钟设计-主程序,第十一章,-仿真时数码管扫描时钟,实际中需根据具体情况进行调解时钟频率 process(rst,clk) begin if(rst=0)then scancounter=“00“; sc

16、an_clk=0; elsif(rising_edge(clk) then if(scancounter=“11“) then scancounter=“00“; scan_clk=not scan_clk; else scancounter=scancounter+1; end if; end if; end process;,数字时钟设计-主程序,第十一章,-时钟计数部分主进程 -时钟复位 clock:process(div_clk,rst) begin if(rst=0)then sec_counter1=X“0“; sec_counter2=X“0“; min_counter1=X“0“; min_counter2=X“0“; hour_counter1=X“0“; hour_c

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号