ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:291.67KB ,
资源ID:16893466      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16893466.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(现代数字系统设计 最后Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

现代数字系统设计 最后Word格式.docx

1、 clk_01:OUT STD_LOGIC);END timectr_clkdiv;ARCHITECTURE rtl OF timectr_clkdiv ISSIGNAL div1:STD_LOGIC_VECTOR(3 DOWNTO 0):=0000;- divide by 10 counterSIGNAL div2:STD_LOGIC_VECTOR(7 DOWNTO 0):00000000- divide by 256 counterSIGNAL div3:STD_LOGIC_VECTOR(1 DOWNTO 0):00- divide by 3 counterSIGNAL clk1,clk2

2、:STD_LOGIC;BEGINdiv_10:PROCESS(clk1) IF(clk1EVENT AND clk1=1) THEN IF(div1=1001) THEN div1 ELSE div1=div1+1; END IF; END IF;END PROCESS;clk2=div1(3);div_256:PROCESS(sysclk) IF(sysclkEVENT AND sysclk=) THEN div2=div2+1;clk1=div2(7); -select baud ratediv_3:PROCESS(clk2) IF(clk2EVENT AND clk2= IF(div3=

3、10) THEN div3 ELSE div3=div3+1;clk_01=div3(1);END rtl;在MAXPLUS软件中编译成功后生成的顶层文件TIMER_CLKDIV为:单独对以上分频程序进行仿真,所的仿真结果如图3所示。图3 由程序timerctr_clkdiv仿真所得结果由图得:当设定输入sysclk的周期约为13.02us(频率为76800HZ)时,图形阴影部分的时间间隔为0.1s,即经分频后clk_01周期为0.1s故符合设计要求。2 主控制器程序设计及其仿真(1) 主控制器输入输出设计主控制器的设计包括的输入信号和输出信号如图1所示,分别叙述如下。(1) 输入信号:res

4、et:上电复位;start_stop:启/停按键输入;modesel:洗涤模式选择按键输入;系统时钟输入(sysclk):76 800 Hz 主时钟;timer_down:定时到输入。(2) 输出信号:start_out:启/停控制j_out:强洗水流控制;b_out:标准水流控制;z_out:轻柔水流控制(2)主控制器算法状态机图设计主控制器的功能包括:1、输出洗衣机启/停信号。2、输出洗涤模式(强洗、标准、轻柔)的选择信号。故对主控制器的算法状态机图设计,包括对启/停控制算法状态机图以及洗涤模式选择状态机图的设计,分别如图4、图5所示。图4启/停控制算法状态机图如图4所示的算法状态机图,图

5、中只有2种状态:停止状态和启动状态。系统复位时进入停止状态s_stop,当start_stop按键按下时,则状态转移至启动状态s_start,并送出启动控制信号start (start=)。再按一下start_stop键,状态又能回停止状态,start 控制信号置“0”,暂停洗涤工作。再按一次start_stop按键,系统又回到启动状态。这样,根据需要可人为地暂停或启动洗衣机工作。图5主控制器的算法状态机图如图5所示主控制器控制算法状态机图,复位后进入标准洗涤模式,并输出set_b标准模式状态信号。接着判断定时结束timer_down是否有效。如果有效,则表明洗涤结束,set_b置“0”回到标

6、准模式状态;如果无效,则判别模式选择按键是否按下。如果未按下,则仍处于标准状态;如果已按下,则进入轻柔状态。通过类同的操作和判别,该状态机图可在标准、轻柔、强洗三种模式下循环选择和工作,并送出相应的状态信号。(3)主控制器的VHDL程序、顶层文件及程序仿真主控制器的VHDL程序为timer_ctr,如下所述:USE IEEE.STD_LOGIC_ARITH.ALL;-系统时钟sysclk:76800 Hz,timer_down:计时时间到ENTITY timer_ctr IS PORT(reset, sysclk,start_stop,mode_sel,timer_down: start_ou

7、t,b_out,j_out,z_out:END timer_ctr;ARCHITECTURE rtl OF timer_ctr IS TYPE state1TYPE IS (s_b,s_z,s_j);-洗涤模式选择,标准,轻柔,强 TYPE state3TYPE IS (s_start,s_stop);-启停模式 SIGNAL state1,nextstate1:state1TYPE; SIGNAL state3,nextstate3:state3TYPE; SIGNAL start_stop_rising,start_stop_dlayed,setstart,clrstart: SIGNAL

8、 mode_sel_dlayed,modesel_rising,timer_down_rising: SIGNAL start,set_b,set_j,set_z,timer_down_dlayed: modesel_rising=mode_sel AND (NOT mode_sel_dlayed); start_stop_rising=start_stop AND (NOT start_stop_dlayed); mode_ctr:PROCESS(modesel_rising,state1,timer_down) BEGIN set_b=0set_jset_z IF(timer_down=)

9、 THEN set_bnextstate1=s_b; ELSIF(modesel_rising=) THEN nextstate1 set_z) THEN set_z set_j) THEN set_j END CASE;timer_down_rising=timer_down AND (NOT timer_down_dlayed);start_ctr:PROCESS(start_stop_rising,state3,timer_down) setstartclrstart IF(start_stop_rising=) THEN nextstate3=s_start;setstart next

10、state3 IF(timer_down_rising=) THEN clrstartnextstate3 ELSIF(start_stop_rising= nextstate3 END IF; END PROCESS;time_ctr_update:PROCESS(reset,sysclk,timer_down_rising) IF(reset= state1 state3start_stop_dlayed ELSIF(sysclk=nextstate1;state3=nextstate3; IF(set_b=) THEN b_outELSE b_outEND IF; IF(set_z=)

11、THEN z_outELSE z_out IF(set_j=) THEN j_outELSE j_out) THEN start_out ELSIF(clrstart= ELSIF(setstart= mode_sel_dlayed=mode_sel; start_stop_dlayed=start_stop; timer_down_dlayed=timer_down;在MAXPLUS软件中编译成功后生成的顶层器件timer_ctr为:对timer_ctr单独进行仿真,得到的仿真结果如图6所示为:图6 对程序timer_ctr仿真所得仿真结果由图6所示的仿真图得出:当start_stop为1,

12、timer_down为0,mode_sel为0时,洗衣机定时器开始工作,洗涤模式为标准;当按照标准模式运行过程中,遇mode_sel为1,洗涤模式改变为轻柔;当按照轻柔模式工作时,遇mode_sel为1,则洗涤模式改变为强洗;而当按照强洗模式工作时,遇mode_sel为1时,则洗涤模式改变为标准模式;当洗衣机工作过程中遇timer_down为1时间段,则在此时间段,洗衣机不工作。以上仿真结果符合设计要求。3 洗涤定时器程序设计及其仿真(1)洗涤定时器输入输出设计洗涤定时器的功能是根据主控制器送来的有关控制信号,实现15分钟的洗涤时间控制。其输入和输出信号分别如下。(1) 输入信号:reset

13、sysclk start_intimer_on_out:定时有效;timer_down_out:定时到(2)洗涤定时器算法状态机图设计图7洗涤定时器算法状态机图所设计的洗涤定时器的算法状态机图如图7所示。定时器有3种状态:停止状态(IDLE)、计时状态(INCCOUNT)和暂停状态(TMP_STOP)。系统复位后就进入停止状态(IDLE)。在停止状态下不断判别启动信号start是否为“1”。如果为“1”,表明启动键已按下,定时器开始工作,timer_on标志置“1”, 转移的下一个状态为计数状态;否则仍留在停止状态。在计时状态下(INCCOUNT),先要判别启动信号是否仍为“1”。前面已经提到

14、,启/停按键是一个乒乓按键,按一次启/停按键使start输出状态转换一次。如果复位后按一下启/停按键,使start=“1”,则定时器开始进行定时计数。如果再按一次启/停按键就会使start=“0”,定时器就处于暂时停止状态,定时计数值将被保留。如再按一次启/停键,洗涤定时器继续启动,在原有计时值上进行计时。如果在计时状态下发现start=“0”,定时器就进入暂停状态(temp_stop),同时timer_on置“0”,定时器停止计数。在暂停状态下,继续判别start信号。如果start=“0”,则仍留在暂停状态;如果start=“1”表明定时器再启动,timer_on=“1”,状态将转移至计时

15、状态。在计时状态下,如果start=“1”,接着就判别分时钟上升沿是否到来s1min。如果未到来,则仍停留在计时状态;若分时钟的上升沿到来了,分计数器就进行加1操作。接着判断是否到了指定的定时计时值(15分钟)。如果未到计时值,仍停留在计时状态;如果到了计时值,则停止计时,Timer_on=“0”,timer_down=“1”,count=“0000”,start=“0”,状态转移至停止状态(3)洗涤定时器VHDL程序、顶层文件以及程序仿真所设计的洗涤定时器的VHDL程序timer_count为:ENTITY timer_count IS PORT(reset,sysclk,clk_01,st

16、art_in: timer_down_out,timer_on_out:END timer_count;ARCHITECTURE rtl OF timer_count IS COMPONENT cnt10 PORT(reset,clk: div10: END COMPONENT; COMPONENT cnt60 div60:TYPE stateTYPE IS (IDLE,INCOUNT,TMP_STOP); SIGNAL state,nextstate:stateTYPE; SIGNAL set_timer_on,set_timer_down,ca10,s1min,s1min_dlayed,s

17、1min_rising,count_inc,count_clr: SIGNAL setdown,clrdown,seton,clron,timer_on,timer_down,timer_down_dlayed,timer_down_rising,reset1,clk_01_s: SIGNAL count,count_u:STD_LOGIC_VECTOR(3 DOWNTO 0); s1min_rising=s1min AND (NOT s1min_dlayed); timer_down_rising count_ctr:PROCESS(s1min_rising,state,start_in,c

18、ount) BEGIN setdownclrdownsetonclroncount_inccount_clr IF(start_in= AND timer_down= setonnextstate=INCOUNT; clronIF(start_in=TMP_STOP; IF(s1min_rising= IF(count/=count_u) THEN count_inc ELSE clron setdown count_clr nextstate) THEN nextstate ELSE nextstateupdate:PROCESS(reset,sysclk) AND (NOT timer_d

19、own)= states1min_dlayedcount state=nextstate; IF(seton=) THEN timer_onELSIF(clron= END IF; IF(clrdown=) THEN timer_downELSIF (setdown= timer_down IF(count_inc= count=count+1; ELSIF(count_clr=) THEN count s1min_dlayed=s1min; timer_down_out=timer_down ;timer_on_out=timer_on;INIT:PROCESS(reset,timer_do

20、wn_rising) or timer_down_rising= count_u1110clk_01_s=clk_01 AND start_in;reset1=reset AND (NOT timer_down);u0:cnt10 PORT MAP(reset1,clk_01_s,ca10);-10分频,1Hzu1:cnt60 PORT MAP(reset1,ca10,s1min);-60分频,周期1min程序中的十进制和六十进制计数器的程序分别为cnt10和程序cnt60:cnt10如下所示:ENTITY cnt10 IS div10:END ENTITY cnt10;ARCHITECTURE rtl OF cnt10 ISSIGNAL div_2: PROCESS(clk,reset) IF(reset= div_2 ELSIF(clkEVENT AND clk= IF(div_2= ELSE div_2=div_2+1;div10=div_2(3);END ARCHITECTURE rtl;cnt60如下所示:LIBRA

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1