资源预览内容
第1页 / 共19页
第2页 / 共19页
第3页 / 共19页
第4页 / 共19页
第5页 / 共19页
第6页 / 共19页
第7页 / 共19页
第8页 / 共19页
第9页 / 共19页
第10页 / 共19页
亲,该文档总共19页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
FPGA 系统设计 组成员及负责模块 冀鹏超 状态控制器 KZQ 设计 陆威 数据装载器 ZZQ 设计 韩华凯 烹饪计时器 JSQ 设计 凌智 烹饪计时器 JSQ 设计 白浚材 显示译码器 YMQ47 设计 孙兵剑 微波炉控制器 WBLKZQ 设计 微波炉控制器的设计与分析 一系统设计要求 现在设计一个微波炉控制器 WBLKZQ其外部接口如图 1 所示。通过该控制器再配以4 个七段数码二极管完成微波炉的定时及信息显示。 图 1 微波炉控制器外部接口符号图 图 1 中的各信号的功能及要求如下 CLK 是秒表时钟脉冲输入它接收每秒一个时钟脉冲的节拍信号。RESET 为复位信号高电平有效用于芯片的复位功能。TEST 为测试信号高电平有效。用于测试 4 哥七段数码二极管工作是否正常。SET_TS 是烹调时间设置控制信号高电平有效。DATA0 的一个人16 位的总线输入信号输入所设置的时间长短它由高到低分为 4 组每一组是 BCD 码输入分别表示分、秒上十位个位的数字如 12 分 59 秒。START 是烹调开始的控制信号高电平有效。 COOK 是烹调进行信号它外接用于控制烹调的继电器开关高电平时表明烹调已经开始或正在进行 低电平表示烹调结束或没有进行。 MIN_H 十分位 、 MIN_L 分位 、 SEC_H(十秒位)和 SEC_L秒位是 4 组七位总线信号它们分别接 4 个七段数码管动态地显示完成烹调所剩的时间以及测试状态信息“8888” 、烹调完毕的状态信息“donE” 。 该微波炉控制器 WBLKZQ 的具体功能要求如下上电后系统首先处于一种复位状态。在工作时首先按 SEC_L 键设置烹调时间 此时系统读入 DATA0 的数据作为烹调所需时间 然后系统自动回到复位状态同时 4 个七段数码管显示时间信息假设系统最长的烹调时间为59 分 59 秒 。再按 START 键后系统进入烹调状态COOK 信号开始为高电平此时 4 个七段数码管每隔一秒钟变化一次用以刷新还剩多少时间结束烹调。烹调结束后COOK 信号变为低电平同时 4 个七段数码管组合在一起显示“donE”的信息然后系统回到复位状态。系统可以通过按 RESET 键随时回到复位状态。在复位状态下按 TEST 键在 4 个数码管上会显示“8888”的信息它可以测试 4 个七段数码管工作是否正常。 二系统设计要 1微波炉控制器的总体设计方案 根据该微波炉控制器的功能设计要求本系统可由以下 4 个模块组成 状态控制器KZQ数据装载器 ZZQ烹调计时器 JSQ显示译码器 YMQ47。其内部组成原理如图 2所示。 图 2 微波炉控制器 WBLKZQ 的内部组成原理图 1状态控制器 KZQ 的功能是控制微波炉工作过程中的状态转换并发出有关控制信息输入信号为 CLK、 TEST、 START、 SET_T、 RESET 和 DONE,输出信号为 LD_DONE、 LD_CLK、 LD_8888和 COOK 信号。KZQ 根据输入信号和自身当时所处的状态完成状态的转换和输出相应的控制信号LD_DONE 指示 ZZQ 装入烹调完毕的状态信息“donE”的显示驱动信息数据LD_CLK指示 ZZQ 装入设置的烹饪时间数据LD_8888 指示 ZZQ 装入用于测试的数据“8888”以显示驱动信息数据COOK 指示烹饪正在进行之中并提示计时器进行减计数。 2数据装载器 ZZQ 的功能是根据 KZQ 发出的控制信号选择定时时间、测试数据或烹调完成信息的装入。当 LD_DONE 为高电平时输出烹调完毕的状态信息数据LD_CLK 为高电平时输出设置的烹饪时间数据LD_8888 为高电平时输出测试数据。输出信号 LOAD 用于提示 JSQ 将处于数据装入状态。 3计时器 JSQ 的功能是负责烹调过程中的时间递减计数并提供烹调完成时的状态信号提供 KZQ 产生烹调完成信号。LOAD 为高电平时完成装入功能COOK 为高电平时执行逆计数功能。输入 DONE 指示烹调完成。MIN_H、MIN_L、SEC_H、和 SEC_L 为完成烹调所剩的时间以及测试状态信息“8888” 、烹调完毕的状态信息“donE”的 BCD 码信息。 4显示译码器 YMQ47 的功能就是负责将各种显示信息的 BCD 转换成七段数码管显示的驱动信息编码。需要译码的信息有数字 09字母 d、o、n、E。 2状态控制器 KZQ 的设计 状态控制器 KZQ 的功能是控制微波炉工作过程中的状态转换 并发出有关控制信息 因此我们可用一个状态机来实现它。 经过对微波炉工作过程中的状态转换条件及输出信号进行分析我们可得到其状态转换图如图 3 所示其输入、输出端口如图 4 所示。 图 3 KZQ 的输入输出端口图 图 4 KZQ 的输入输出端口图 3数据装载器 ZZQ 的设计 ZZQ 的输入、输出端口如 5 所示根据其应完成的逻辑功能它本质上就是一个三选一数据选择器。本设计采用一个进程来完成但由于三个被选择的数据只有一个来自输入端口因此另两个被选择的数据则通过在进程的说明部分定义两个常数来产生。由于用于显示“8888”的常数 ALL-8 需分解成 4 个 8分别经过四个 47 译码器译码后才是真正的显示驱动信息编码因此该常数应是 4 个分段的是 4 位 BCD 码故应设为“1000100010001000” 。 同理显示“donE”的常数 DONE 可设为“1010101111001101” 其中 d、o、n、E 的 BCD 码分别为 “1010” 、 “1011” 、 “1100” 、 “1101” 。该模块的主要程序如下 图 5 ZZQ 的输入输出端口 PROCESS(DATA1,LD_8888.LD_CLK.LD_DONE)IS CONSTANT ALL_8:STD_LOGIC_VECTOR(15 DOWNTO 0):=“1000100010001000“; CONSTANT DONE:STD_LOGIC_VECTOR(15 DOWNTO 0):=“1010101111001101“; VARIABLE TEMP:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN LOADDATA2DATA2DATA2NULL; END CASE; END PROCESS; 4烹调计时器 JSQ 的设计 烹调计时器 JSQ 为减数计时器其最大计时时间为 59:59。因此我们可用两个减计数十进制计数器 DCNT10 和两个减计数六进制计数器 DCNT6 级联构成。 JSQ 的内部组成原理如图 6所示。 图 6 JSQ 的内部组成原理图 5.显示译码器 YMQ47 的设计 本显示译码器 YMQ47 不但要对数字 09 进行显示译码还要对字母 d、o、n、E 进行显示译码其译码对照表如表 1 所示。 表 1 YMQ47 的译码对照表 显示的数字或字母 BCD 编码 七段显示驱动编码ga 0 0000 0111111 1 0001 0000110 2 0010 1011011 3 0011 1001111 4 0100 1100110 5 0101 1101101 6 0110 1111101 7 0111 0000111 8 1000 1111111 9 1001 1101111 d 1010 1011110 o 1011 1011100 n 1100 1010100 E 1101 1111001 三主要 VHDL 源程序 1状态控制器 KZQ 的 VHDL 源程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY KZQ IS PORT(RESET,SET_T,START,TEST,CLK,DONE:IN STD_LOGIC; COOK,LD_8888,LD_CLK,LD_DONE:OUT STD_LOGIC); END ENTITY KZQ; ARCHITECTURE ART OF KZQ IS TYPE STATE_TYPE IS(IDLE,LAMP_TEST,SET_CLOCK,TIMER,DONE_MSG); SIGNAL NXT_STATE,CURR_STATE:STATE_TYPE; BEGIN PROCESS(CLK,RESET)IS BEGIN IF RESET=1 THEN CURR_STATELD_8888LD_CLKLD_DONE IF(TEST=1)THEN NXT_STATE IF DONE=1THEN NXT_STATEDATA2DATA2DATA2NULL; END CASE; END PROCESS; 3烹调计时器 JSQ 的 VHDL 源程序 -DCNT10.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DCNT10 IS PORT(CLK:IN STD_LOGIC; LOAD:IN STD_LOGIC; ENA:IN STD_LOGIC; DATAIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT:OUT STD_LOGIC); END ENTITY DCNT10 ARCHITECTURE ART OF DCNT10 IS SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK,LOAD,ENA)IS BEGIN IF LOAD=1 THEN CQIDOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7=“0000000“; END CASE; END PROCESS; END ARCHITECTURE ART; 5微波炉控制器 WBLKZQ 的 VHDL 源程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY WBLKZQ IS PORT(RESET,SET_T,START,TEST,CLK:IN STD_LOGIC; DATA0:IN STD_LOGIC_VECTOR(15 DOWNTO 0); COOK:OUT STD_LOGIC; SEC_L,SEC_H,MIN_L,MIN_H:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END ENTITY WBLKZQ; ARCHITECTURE ART OF WBLKZQ IS COMPONENT KZQ IS PORT(RESET,SET_T,START,TEST,CLK,DONE:IN STD_LOGIC; COOK,LD_8888,LD_CLK,LD_DONE:OUT STD_LOGIC); END COMPONENT KZQ; COMPONENT ZZQ IS PORT(DATA1:IN STD_LOGIC_VECTOR(15 DOWNTO 0); LD_8888:IN STD_LOGIC; LD_CLK:IN STD_LOGIC; LD_DONE:IN STD_LOGIC; DATA2:OUT STD_LOGIC_VECTOR(15 DOWNTO 0); LOAD:
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号