




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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)ISCONSTANT 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)000000111111100010000110200101011011300111001111401001100110501011101101601101111101701110000111810001111111910011101111d10101011110o10111011100n11001010100E11011111001三主要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 BEGINIF RESET=1 THEN CURR_STATE=IDLE; ELSIF CLKEVENT AND CLK=1 THEN CURR_STATE=NXT_STATE; END IF;END PROCESS;PROCESS(CLK,CURR_STATE,SET_T,START,TEST,DONE)IS BEGIN NXT_STATE=IDLE; -DEFAULT NEX STATE IS IDLE LD_8888=0; LD_DONE=0; LD_CLK=0; COOKLD_8888=1;COOKLD_CLK=1;COOKLD_DONE=0;COOK IF(TEST=1)THEN NXT_STATE=LAMP_TEST; LD_8888=1; ELSIF SET_T=1THEN NXT_STATE=SET_CLOCK; LD_CLK=1; ELSIF (START=1)AND(DONE=0)THEN NXT_STATE=TIMER; COOK IF DONE=1THEN NXT_STATE=DONE_MSG; LD_DONE=1; ELSE NXT_STATE=TIMER; COOK=1; END IF; END CASE; END PROCESS;END ARCHITECTURE ART;2数据装载器ZZQ的VHDL源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY 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:OUT STD_LOGIC);END ENTITY ZZQ;ARCHITECTURE ART OF ZZQ IS BEGIN 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;3烹调计时器JSQ的VHDL源程序-DCNT10.VHDLIBRARY 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 DCNT10ARCHITECTURE ART OF DCNT10 IS SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK,LOAD,ENA)IS BEGIN IF LOAD=1 THEN CQI=DATAIN; ELSIF CLKEVENT AND CLK=1 THEN IF ENA=1 THEN IF CQI=000 THEN CQI=1001; ELSE CQI=CQI-1;END IF; END IF; END IF; END PROCESS; PROCESS(CLK,CQI)IS BEGIN IF CLKEVENT AND CLK=1 THEN IF CQI=0000 THEN CARRY_OUT=1; ELSE CARRY_OUT=0;END IF; END IF; END PROCESS; CQ=CQI;END ARCHITECTURE ART;-DCNT6.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DCNT6 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 DCNT6;ARCHITECTURE ART OF DCNT6 IS SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK,LOAD,ENA)IS BEGIN IF LOAD=1 THEN CQI=DATAIN; ELSIF CLKEVENT AND CLK=1 THEN IF ENA=1 THEN IF CQI=0000 THEN CQI=0101; ELSE CQI=CQI-1;END IF; END IF; END IF; END PROCESS; PROCESS(CLK,CQI)IS BEGIN IF CLKEVENT AND CLK=1 THEN IF CQI=0000 THEN CARRY_OUT=1; ELSE CARRY_OUT=0;END IF; END IF; END PROCESS; CQ=CQI;END ARCHITECTURE ART;-JSQ.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY JSQ IS PORT(COOK:IN STD_LOGIC; DATA3:IN STD_LOGIC_VECTOR(15 DOWNTO 0); LOAD:IN STD_LOGIC; CLK:IN STD_LOGIC; SEC_L:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEC_H:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); MIN_L:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); MIN_H:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); DONE:OUT STD_LOGIC);END ENTITY JSQ;ARCHITECTURE ART OF JSQ IS COMPONENT DCNT10 IS PORT(CLK,LOAD,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 COMPONENT DCNT10; COMPONENT DCNT6 IS PORT(CLK,LOAD,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 COMPONENT DCNT6; SIGNAL NEWCLK:STD_LOGIC; SIGNAL S1:STD_LOGIC; SIGNAL S2:STD_LOGIC; SIGNAL S3:STD_LOGIC; SIGNAL S4:STD_LOGIC; BEGINU1:DCNT10 PORT MAP(CLK, LOAD, COOK, DATA3(3 DOWNTO 0), SEC_L, S1); U2:DCNT6 PORT MAP(S1, LOAD, COOK, DATA3(7 DOWNTO 4), SEC_H, S2); U3:DCNT10 PORT MAP(S2, LOAD, COOK, DATA3(11 DOWNTO 8), MIN_L, S3); U4:DCNT6 PORT MAP(S3, LOAD, COOK, DATA3(15 DOWNTO 12), MIN_H, S4); DONEDOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7=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:OUT STD_LOGIC); END COMPONENT ZZQ; COMPONENT JSQ IS PORT(COOK:IN STD_LOGIC; DATA3:IN STD_LOGIC_VECTOR(15 DOWNTO 0); LOAD:IN STD_LOGIC; CLK:IN STD_LOGIC; SEC_L:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SEC_H:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); MIN_L:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); MIN_H:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); DONE:OUT STD_LOGIC); END COMPONENT JSQ; COMPONENT YMQ47 PORT(AIN4:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END COMPONENT YMQ47 ; SIGNAL S1:STD_LOGIC; SIGNAL S2:STD_LOGIC; SIGNAL S3:STD_LOGIC; SIGNAL S4:STD_LOGIC; SIGNAL S5:STD_LOGIC; SIGNAL S6:STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL S7:STD_LOGIC; SIGNAL S8:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL S9:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL S10:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL S11:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN U1:KZQ PORT MAP(RESET,SET_T,START,TEST,CLK,S1,S2,S3,S4,S5); U2:ZZQ PORT MAP(DATA0(15 DOWNTO 0),S3,S4,S5,S6(15 DOWNTO 0),S7); U3:JSQ PORT MAP(S2,S6(15 DOWNTO 0),S7,CLK,S8(3 DOWNTO 0),S9(3 DOWNTO 0),S10(3 DOWNTO 0),S11(3 DOWNTO 0),S1); U4:YMQ47 PORT MAP(S8(3 DOWNTO 0),
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 普法考试题库及答案2024
- 森林防灭火综合知识培训课件
- 森林火灾培训知识课件
- 森林图书馆绘本课件
- 2025年知名电商企业运营主管招聘笔试预测题
- 2025年智能制造领域资深工程师考试模拟题及答案
- 2025年弱电维修工招聘笔试备考指南与答案详解
- 2025护士资格证考试题库及答案参考68
- 2025年人力资源管理师中级模拟题集与答案解析
- 2025年陪诊师考试成功备考经验与试题及答案
- 2026高考英语 写作-倡议信 复习课件
- 2025广东广州市从化区社区专职人员招聘33人笔试参考题库附答案解析
- 建材买卖(橱柜订购类)合同协议书范本
- 2025年小学英语教师业务理论考试试题及答案
- 中小学基孔肯雅热应急防控预案
- 港口无人驾驶行业深度报告:奇点已至蓝海启航
- 北师大版五年级下册数学口算题题库1200道带答案可打印
- 托管老师岗前培训
- (正式版)HGT 6313-2024 化工园区智慧化评价导则
- 《资本论》讲稿课件
- 护理品管圈QCC之提高手术物品清点规范执行率
评论
0/150
提交评论