数字逻辑课程设计报告new_第1页
数字逻辑课程设计报告new_第2页
数字逻辑课程设计报告new_第3页
数字逻辑课程设计报告new_第4页
数字逻辑课程设计报告new_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课 程 实 验 报 告课程名称: 数字逻辑课程设计 专业班级:计算机科学与技术201003学 号: 姓 名: 鲁辰 指导教师: 报告日期: 计算机科学与技术学院目录1 实验目的22 实验仪器和组件23 实验设计方案、逻辑图和波形图23.1 控制面板23.2 输入23.3 输出23.4 流程图23.5 设计的具体要求23.6 端口列表及说明23.7 数据对象列表说明23.8 各个功能模块说明24 实验步骤、实验记录24.1 分模块编写源代码:24.2 分模块测试、仿真24.2.1 水位控制模块的仿真24.2.2 模式控制模块仿真24.2.3 标准洗仿真24.2.4 单洗模块仿真24.2.5 洗漂

2、模块仿真24.2.6 单漂模块仿真24.2.7 漂脱模块仿真24.2.8 单脱模块仿真24.2.9 暂停控制仿真24.2.10 自动关机仿真25 对观察结果的分析、处理及讨论26 实验方案的改进意见2参考文献2附录:程序源代码2顶层文件:try1.vhd2开机控制模块:power_control1.vhd2水位控制模块:water_level1.vhd21 实验目的 通过硬件描述语言VHDL的编程,深入了解并掌握可编程芯片PLD的设计技术,加强对数字逻辑课程所学知识的综合运用能力。培养创新性思维能力和独立解决实际问题的能力。2 实验仪器和组件DICE-SEM型实验箱(含Lattice 公司的C

3、PLD芯片 ispLSI1032)开发系统ispLever5.0导线数根3 实验设计方案、逻辑图和波形图3.1 控制面板3.2 输入:电源开关:电平启动、暂停按钮:脉冲信号洗衣模式:脉冲信号水位:脉冲信号3.3 输出指示灯:电源开关指示灯、启动/暂停指示灯(启动工作时亮)、洗涤指示灯、漂洗指示灯、脱水指示灯数码管:两个数码管显示剩余时间,由三种工作状态的剩余时间共用,即:洗涤时间、漂洗时间和脱水时间,在进行洗衣模式选择时则显示为该模式的总时间。一位数码管显示水位。上电(自动暂停)3.4 流程图设定水位选择洗衣模式启动工作是暂停?否工作完成跳电3.5 设计的具体要求(1)标准模式下,洗衣机先洗涤

4、12分钟,然后漂洗6分钟2次,最后脱水3分钟。(2)单洗模式下,洗衣机只洗12分钟。(3)洗漂模式下,洗衣机先洗涤12分钟,然后漂洗6分钟2次。(4)单漂模式下,洗衣机只漂洗6分钟2次(5)漂脱模式下,洗衣机先漂洗6分钟2次,然后脱水3分钟(6)单脱模式下,洗衣机只脱水3分钟(7)上面6种模式运行时,都可以随时按启动/暂停键在暂停运行和启动运行两者间切换。(8)在一个洗衣模式的所有工作流程完成之后,洗衣机进入标准模式,同时,如果5分钟内没有按启动/暂停键来启动运行,系统将自行掉电。3.6 端口列表及说明端口名称输入or输出端口类型功能powerinoutstd_logic作为洗衣机开关,接电平

5、信号clkinstd_logic输入时钟,接实验台上1Hz插孔(接上页表)startinstd_logic启动/暂停按钮,接脉冲信号modeinstd_logic模式选择按钮,接脉冲信号waterinstd_logic水位选择按钮,接脉冲信号display_1outstd_logic_vector(3 downto 0)洗衣机运行时,显示剩余时间;模式选择时,显示当前模式总时间(显示剩余时间的十位)display_0outstd_logic_vector(3 downto 0)洗衣机运行时,显示剩余时间;模式选择时,显示当前模式总时间(显示剩余时间的个位)water_leveloutstd_l

6、ogic_vector(3 downto 0)显示当前水位soundoutstd_logic当洗衣机洗衣结束时,发出警报power_lightoutstd_logic显示洗衣机的开关状态,接指示灯,灯亮表示“开”startloutstd_logic启动/暂停指示灯,值为1表示洗衣机处于“启动状态”washing_lightoutstd_logic模式选择时,亮红灯表示该模式中包括了洗涤过程;洗衣机运行时,灯闪表示正在进行洗涤过程clean_lightoutstd_logic模式选择时,亮红灯表示该模式中包括了漂洗过程;洗衣机运行时,灯闪表示正在进行漂洗过程drain_lightoutstd_l

7、ogic模式选择时,亮红灯表示该模式中包括了脱水过程;洗衣机运行时,灯闪表示正在进行脱水过程表格3. 1 端口说明3.7 数据对象列表说明数据对象名称数据对象类型功能states枚举类型将洗衣机的六种洗衣模式描述值为(s0,s1,s2,s3,s4,s5)六种状态的数据类型(接上页表)c_sstates表示当前状态,其值为s0,s1,s2,s3,s4,s5之一c_tinteger range 0 to 27表示洗衣机运行过程中当前模式下的剩余时间last_timeinteger range 0 to 27表示当前clk脉冲到来前,洗衣机运行过程中当前模式下的剩余时间stopstd_logic控制

8、系统的自动掉电,当stop值为1时系统自动掉电donestd_logic表示当前是否可以修改洗衣模式,值为1表示当前可修改洗衣模式overstd_logic表示洗衣机当前是否已完成工作处于待机状态,值为1表示洗衣机当前完成工作countinteger range 0 to 30作为自动掉电计时器,当系统完成工作处于待机状态时,每当时钟脉冲到来,计时器的值加1表格3. 2 数据对象说明3.8 各个功能模块说明3.8.1 开机/关机控制:power_control1该模块通过读取由顶层模块传入的信号power、stop,做出判断,对power_light的值进行修改。3.8.2 水位控制:wate

9、r_level1该模块通过由顶层模块传入的信号 power、water、start_light、water_level,作出判断;当power=1,start_light=0时,通过顶层的water端口传入的脉冲信号为有效,这时,每当检测到water的一个脉冲时,water_level的输出值加1。3.8.3 模式控制:mode_choose通过检测信号power_light、start_light、mode等的值,当处于暂停情况下时,检测到的mode的脉冲有效,对模式c_s进行修改。3.8.4 计时:start1当处于启动状态时,时钟脉冲clk有效,使c_t的值减1,即当前模式下的剩余时间减

10、1,此时不能修改模式;当暂停时,通过done的值,判断是否修改模式。3.8.5显示时间:operation_time根据计时模块得到的剩余时间c_t,运算得出当前模块当前步骤(可能含洗涤、漂洗、脱水三个洗衣步骤)的剩余时间。3.8.6模式指示等控制:lighting根据由c_s、power_light、start_light的值控制wash_light、clean_light、drain_light 的亮、灭、闪等状态。3.8.7启动/暂停指示灯控制:spl处于启动状态时,灯亮;否则灯不亮。3.8.8自动关机控制:selfoff当洗衣的流程结束时(即power=1、over=1、start_l

11、ight=0时),每当检测到一个时钟脉冲count的值加1,当count的值等于30时,开关机控制模块power_control1检测到stop的值变成1,于是将power_light置为0,即自动关机。4 实验步骤、实验记录4.1 分模块编写源代码:详见附录中的代码部分4.2 分模块测试、仿真4.2.1 水位控制模块的仿真图4. 1 水位控制模块仿真波形图4.2.2 模式控制模块仿真图4. 2 模式控制模块仿真波形图4.2.3 标准洗仿真图4. 3 标准洗仿真波形图4.2.4 单洗模块仿真图4. 4 单洗模块仿真波形图4.2.5 洗漂模块仿真图4. 5 漂洗模块仿真波形图4.2.6 单漂模块

12、仿真图4. 6 单漂模块仿真波形图4.2.7 漂脱模块仿真图4. 7 漂脱模块仿真波形图4.2.8 单脱模块仿真图4. 8 单脱模块仿真波形图4.2.9 暂停控制仿真图4. 9 暂停控制仿真波形图4.2.10 自动关机仿真图4. 10 自动关机仿真波形5 对观察结果的分析、处理及讨论首先通过引脚绑定,生成jed文件,然后将jed文件下载到目标器件(即CPLD芯片ispLSI1032)。通过实际手动测试,发现基本功能与仿真产生的波形图相符合,但是,测试暂停功能时,发现每当在洗衣机运行时按下暂停键,时间的显示会回到该模块最初的总时间,从新开始计时,这与4.2.9中的暂停控制波形仿真情况不符。6 实

13、验方案的改进意见暂停功能下载到芯片后无法正常使用,是亟待改进的一点。但是由于仿真波形名没有反映出上述错误,所以初步判断不大可能是代码的编写错误造成的。个人分析可能由于在引脚绑定时,对相应引脚的选择不当,导致了这一错误。可是即使数次在不同的实验台上,选择不同的引脚匹配组合,这一问题仍是得不到解决,只能考虑对程序的代码做适当修改。参考文献1 欧阳星明.数字逻辑. 4版M. 武汉:华中科技大学出版社,2009.2 数字逻辑实验指导书3 孟庆海.VHDL基础及经典实例开发. 西安:西安交通大学出版社,2008.4 齐洪喜.VHDL电路设计. 北京:清华大学出版社,2004.附录:程序源代码顶层文件:t

14、ry1.vhdlibrary ieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity try1 isport( power:inout std_logic; clk,start,mode,water:in std_logic; display_1,display_0:out std_logic_vector(3 downto 0); water_level:buffer std_logic_vector(3 downto 0); sound,washing_light,clean_light,drain_li

15、ght:out std_logic; start_light:buffer std_logic; power_light:buffer std_logic );end;architecture wash of try1 istype states is (s0,s1,s2,s3,s4,s5); -有限状态机signal c_s:states;signal c_t,last_time:integer range 0 to 27;signal stop,done,over:std_logic;signal count:integer range 0 to 30;component power_co

16、ntrol1port(power: IN STD_LOGIC;stop: IN STD_LOGIC;power_light: OUT STD_LOGIC);end component;COMPONENT water_level1PORT (power: IN STD_LOGIC;water: IN STD_LOGIC;start_light: IN STD_LOGIC;water_level: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT;beginpower_1: power_control1 port map(power,stop,power

17、_light);water1:water_level1 port map(power,water,start_light,water_level);mode_choose:process(c_t,mode) -控制模式选择的进程beginif power_light=1 thenif start_light=0 then -暂停时进行模式变换if modeevent and mode=1 thendonec_sc_sc_sc_sc_sc_snull;end case;end if;end if;if c_t=0 and last_time=1 then -工作流程结束后返回初始状态c_s=s0

18、;done0 and start_light=1 then -定义工作的时候不能设置水位和模式done=0;over=1;end if;else -给系统的模式赋初值c_s=s0;done=1;over 0 then -计时last_time=c_t;c_tc_tc_tc_tc_tc_tc_tnull;end case;elsif done=0 thenend if;end if;elsec_tdisplay_1=0010;display_0display_1=0001;display_0display_1=0010;display_0display_1=0001;display_0displ

19、ay_1=0001;display_0display_1=0000;display_0null;end case;end if;elsecase c_s is -工作开始后动态显示时间when s0=if c_t15 thentemp:=c_t-15;elsif c_t3 thentemp:=c_t-3;else temp:=c_t;end if;when s1=temp:=c_t;when s2=if c_t12 thentemp:=c_t-12;else temp:=c_t;end if;when s3=temp:=c_t;when s4=if c_t3 thentemp:=c_t-3;e

20、lse temp:=c_t; end if;when s5=temp:=c_t;when others=null;end case;if temp9 thendisplay_1=0001;temp:=temp-10;else display_1display_0display_0display_0display_0display_0display_0display_0display_0display_0display_0null;end case;end if;elsedisplay_1=1111; -未开电源时的初值display_0washing_light=1;clean_light=1

21、;drain_lightwashing_light=1;clean_light=0;drain_lightwashing_light=1;clean_light=1;drain_lightwashing_light=0;clean_light=1;drain_lightwashing_light=0;clean_light=1;drain_lightwashing_light=0;clean_light=0;drain_lightnull;end case;elsecase c_s is -执行已选的洗衣模式when s0=if c_t 15 then washing_light=1; -标准

22、洗clean_light=1;drain_light3 then washing_light=0;clean_light=1; -2.漂洗drain_light=1;else washing_light=0;clean_light=0; -3.脱水drain_lightwashing_light=1; -单洗clean_light=0; drain_lightif last_time12 then washing_light=1; -洗漂 clean_light=1; -1.洗涤drain_light=0;else washing_light=0;clean_light=1; -2.漂洗dra

23、in_lightwashing_light=0; -单漂clean_light=1;drain_lightif last_time3 then washing_light=0; -漂脱 clean_light=1; -1.漂洗drain_light=1;else washing_light=0; -2.脱水clean_light=0;drain_lightwashing_light=0; -单脱clean_light=0;drain_lightnull;end case;end if;else -工作时控制三个灯的闪亮灭case c_s iswhen s0=if c_t15 then -标准洗

24、模式下洗涤时if c_t mod 2 = 0 then washing_light=0; -闪 亮 亮 else washing_light=1;end if;clean_light=1;drain_light 3 then washing_light=0; -漂洗时 灭 闪 亮 if c_t mod 2 = 0 then clean_light=0;else clean_light=1;end if;drain_light=1;else washing_light=0; -脱水时 灭 灭 闪clean_light=0;if c_t mod 2 = 0 then drain_light=0;e

25、lse drain_lightif c_t mod 2 = 0 then washing_light=0;-单洗模式下 闪 灭 灭else washing_light=1;end if;clean_light=0;drain_lightif c_t12 then -洗漂模式下洗涤时 闪 亮 灭if c_t mod 2 = 0 then washing_light=0;else washing_light=1;end if;clean_light=1;drain_light=0;else washing_light=0; -漂洗时 灭 闪 灭if c_t mod 2 = 0 then clean

26、_light=0;else clean_light=1;end if;drain_lightwashing_light=0; -单漂模式下 灭 闪 灭 if c_t mod 2 = 0 then clean_light=0;else clean_light=1;end if;drain_lightif c_t3 then washing_light=0;-漂脱模式下 漂洗 灭 闪 亮if c_t mod 2 = 0 then clean_light=0;else clean_light=1;end if;drain_light=1;else washing_light =0; -脱水时 灭 灭

27、 闪clean_light=0;if c_t mod 2 = 0 then drain_light=0;else drain_lightwashing_light=0; -单脱模式下 灭 灭 闪clean_light=0;if c_t mod 2 = 0 then drain_light=0;else drain_lightnull;end case;end if;else -断电时 灭 灭 灭washing_light=0;clean_light=0;drain_light=0;end if;end process lighting;spl:process(power,start)-控制启动

28、/暂停指示灯的进程beginif power_light=1thenif startevent and start=1thenstart_light=not start_light;end if;if c_t = 0 and last_time= 1 and start_light=1 then -控制一个流程结束后启动/暂停灯的亮灭start_light=0;end if;else start_light=0;end if;end process spl;selfoff:process(clk) -控制工作流程结束后30秒自动关机的进程begin if power=1 thenif clke

29、vent and clk=1 then -计时30秒if c_t =27 and start_light=0 and over=1 thencount=count+1;elsecount=0;end if;if count= 30 then -30秒后给控制电源的进程提供关机信号stop=1;count=0;elseend if;end if;elsecount=0;stop=0;end if;end process selfoff;sound_control:process(power,start,mode,water,count,clk)-控制声音的进程variable num:integ

30、er:=0;beginif power_light=1 thenif start =1 or mode=1 or water = 1 then -按键发声sound=1;elsif clk=1thensound0 then -报警发声if count mod 2 = 1 thensound=1;else sound=0;end if;end if;elsesound =0;end if;end process sound_control;end wash;开机控制模块:power_control1.vhdlibrary ieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;ENTITY power_control1 ISport(power: IN STD_LOG

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论