数字逻辑课程设计报告.docx

上传人:b****6 文档编号:3969811 上传时间:2022-11-26 格式:DOCX 页数:27 大小:416.13KB
下载 相关 举报
数字逻辑课程设计报告.docx_第1页
第1页 / 共27页
数字逻辑课程设计报告.docx_第2页
第2页 / 共27页
数字逻辑课程设计报告.docx_第3页
第3页 / 共27页
数字逻辑课程设计报告.docx_第4页
第4页 / 共27页
数字逻辑课程设计报告.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

数字逻辑课程设计报告.docx

《数字逻辑课程设计报告.docx》由会员分享,可在线阅读,更多相关《数字逻辑课程设计报告.docx(27页珍藏版)》请在冰豆网上搜索。

数字逻辑课程设计报告.docx

数字逻辑课程设计报告

课程实验报告

课程名称:

数字逻辑课程设计

专业班级:

计算机科学与技术201003

学号:

姓名:

鲁辰

指导教师:

报告日期:

计算机科学与技术学院

目录

1实验目的2

2实验仪器和组件2

3实验设计方案、逻辑图和波形图2

3.1控制面板2

3.2输入2

3.3输出2

3.4流程图2

3.5设计的具体要求2

3.6端口列表及说明2

3.7数据对象列表说明2

3.8各个功能模块说明2

4实验步骤、实验记录2

4.1分模块编写源代码:

2

4.2分模块测试、仿真2

4.2.1水位控制模块的仿真2

4.2.2模式控制模块仿真2

4.2.3标准洗仿真2

4.2.4单洗模块仿真2

4.2.5洗漂模块仿真2

4.2.6单漂模块仿真2

4.2.7漂脱模块仿真2

4.2.8单脱模块仿真2

4.2.9暂停控制仿真2

4.2.10自动关机仿真2

5对观察结果的分析、处理及讨论2

6实验方案的改进意见2

参考文献2

附录:

程序源代码2

顶层文件:

try1.vhd2

开机控制模块:

power_control1.vhd2

水位控制模块:

water_level1.vhd2

1实验目的

通过硬件描述语言VHDL的编程,深入了解并掌握可编程芯片PLD的设计技术,加强对《数字逻辑》课程所学知识的综合运用能力。

培养创新性思维能力和独立解决实际问题的能力。

2实验仪器和组件

DICE-SEM型实验箱(含Lattice公司的CPLD芯片ispLSI1032)

开发系统ispLever5.0

导线数根

3实验设计方案、逻辑图和波形图

3.1控制面板

3.2输入:

电源开关:

电平

启动、暂停按钮:

脉冲信号

洗衣模式:

脉冲信号

水位:

脉冲信号

3.3输出

指示灯:

电源开关指示灯、启动/暂停指示灯(启动工作时亮)、洗涤指示灯、漂洗指示灯、脱水指示灯

数码管:

两个数码管显示剩余时间,由三种工作状态的剩余时间共用,即:

洗涤时间、漂洗时间和脱水时间,在进行洗衣模式选择时则显示为该模式的总时间。

一位数码管显示水位。

3.4流程图

3.5设计的具体要求

(1)标准模式下,洗衣机先洗涤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输出

端口类型

功能

power

inout

std_logic

作为洗衣机开关,接电平信号

clk

in

std_logic

输入时钟,接实验台上1Hz插孔

(接上页表)

start

in

std_logic

启动/暂停按钮,接脉冲信号

mode

in

std_logic

模式选择按钮,接脉冲信号

water

in

std_logic

水位选择按钮,接脉冲信号

display_1

out

std_logic_vector(3downto0)

洗衣机运行时,显示剩余时间;模式选择时,显示当前模式总时间(显示剩余时间的十位)

display_0

out

std_logic_vector(3downto0)

洗衣机运行时,显示剩余时间;模式选择时,显示当前模式总时间(显示剩余时间的个位)

water_level

out

std_logic_vector(3downto0)

显示当前水位

sound

out

std_logic

当洗衣机洗衣结束时,发出警报

power_light

out

std_logic

显示洗衣机的开关状态,接指示灯,灯亮表示“开”

startl

out

std_logic

启动/暂停指示灯,值为‘1’表示洗衣机处于“启动状态”

washing_light

out

std_logic

模式选择时,亮红灯表示该模式中包括了洗涤过程;洗衣机运行时,灯闪表示正在进行洗涤过程

clean_light

out

std_logic

模式选择时,亮红灯表示该模式中包括了漂洗过程;洗衣机运行时,灯闪表示正在进行漂洗过程

drain_light

out

std_logic

模式选择时,亮红灯表示该模式中包括了脱水过程;洗衣机运行时,灯闪表示正在进行脱水过程

表格3.1端口说明

3.7数据对象列表说明

数据对象名称

数据对象类型

功能

states

枚举类型

将洗衣机的六种洗衣模式描述值为(s0,s1,s2,s3,s4,s5)六种状态的数据类型

(接上页表)

c_s

states

表示当前状态,其值为s0,s1,s2,s3,s4,s5之一

c_t

integerrange0to27

表示洗衣机运行过程中当前模式下的剩余时间

last_time

integerrange0to27

表示当前clk脉冲到来前,洗衣机运行过程中当前模式下的剩余时间

stop

std_logic

控制系统的自动掉电,当stop值为‘1’时系统自动掉电

done

std_logic

表示当前是否可以修改洗衣模式,值为‘1’表示当前可修改洗衣模式

over

std_logic

表示洗衣机当前是否已完成工作处于待机状态,值为‘1’表示洗衣机当前完成工作

count

integerrange0to30

作为自动掉电计时器,当系统完成工作处于待机状态时,每当时钟脉冲到来,计时器的值加1

表格3.2数据对象说明

3.8各个功能模块说明

3.8.1开机/关机控制:

power_control1

该模块通过读取由顶层模块传入的信号power、stop,做出判断,对power_light的值进行修改。

3.8.2水位控制:

water_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,即当前模式下的剩余时间减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_light=’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单漂模块仿真

图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实验方案的改进意见

暂停功能下载到芯片后无法正常使用,是亟待改进的一点。

但是由于仿真波形名没有反映出上述错误,所以初步判断不大可能是代码的编写错误造成的。

个人分析可能由于在引脚绑定时,对相应引脚的选择不当,导致了这一错误。

可是即使数次在不同的实验台上,选择不同的引脚匹配组合,这一问题仍是得不到解决,只能考虑对程序的代码做适当修改。

参考文献

[1]欧阳星明.数字逻辑.4版[M].武汉:

华中科技大学出版社,2009.

[2]数字逻辑实验指导书

[3]孟庆海.VHDL基础及经典实例开发.西安:

西安交通大学出版社,2008.

[4]齐洪喜.VHDL电路设计.北京:

清华大学出版社,2004.

附录:

程序源代码

顶层文件:

try1.vhd

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitytry1is

port(

power:

inoutstd_logic;

clk,start,mode,water:

instd_logic;

display_1,display_0:

outstd_logic_vector(3downto0);

water_level:

bufferstd_logic_vector(3downto0);

sound,washing_light,clean_light,drain_light:

outstd_logic;

start_light:

bufferstd_logic;

power_light:

bufferstd_logic

);

end;

architecturewashoftry1is

typestatesis(s0,s1,s2,s3,s4,s5);--有限状态机

signalc_s:

states;

signalc_t,last_time:

integerrange0to27;

signalstop,done,over:

std_logic;

signalcount:

integerrange0to30;

componentpower_control1

port(

power:

INSTD_LOGIC;

stop:

INSTD_LOGIC;

power_light:

OUTSTD_LOGIC

);

endcomponent;

COMPONENTwater_level1

PORT(

power:

INSTD_LOGIC;

water:

INSTD_LOGIC;

start_light:

INSTD_LOGIC;

water_level:

OUTSTD_LOGIC_VECTOR(3DOWNTO0)

);

ENDCOMPONENT;

begin

power_1:

power_control1portmap(power,stop,power_light);

water1:

water_level1portmap(power,water,start_light,water_level);

mode_choose:

process(c_t,mode)--控制模式选择的进程

begin

ifpower_light='1'then

ifstart_light='0'then--暂停时进行模式变换

ifmode'eventandmode='1'then

done<='1';

casec_sis

whens0=>c_s<=s1;

whens1=>c_s<=s2;

whens2=>c_s<=s3;

whens3=>c_s<=s4;

whens4=>c_s<=s5;

whens5=>c_s<=s0;

whenothers=>null;

endcase;

endif;

endif;

ifc_t=0andlast_time=1then--工作流程结束后返回初始状态

c_s<=s0;

done<='1';

endif;

ifc_t>0andstart_light='1'then--定义工作的时候不能设置水位和模式

done<='0';

over<='1';

endif;

else--给系统的模式赋初值

c_s<=s0;

done<='1';

over<='0';

endif;

endprocessmode_choose;

start1:

process(clk)--初始进程:

判断洗衣模式

begin

ifpower_light='1'then

ifstart_light='1'then

ifclk'eventandclk='1'then

ifc_t>0then--计时

last_time<=c_t;

c_t<=c_t-1;

endif;

endif;

else

ifdone='1'then

casec_sis--暂停状态下判断洗衣模式

whens0=>c_t<=27;

whens1=>c_t<=12;

whens2=>c_t<=24;

whens3=>c_t<=12;

whens4=>c_t<=15;

whens5=>c_t<=3;

whenothers=>null;

endcase;

elsifdone='0'then

endif;

endif;

else

c_t<=27;

endif;

endprocessstart1;

operation_time:

process(c_t)--根据上个进程的时间信号得到洗衣机工作时间

variabletemp:

integerrange0to15;--暂存用来显示的时间

begin

ifpower_light='1'then

ifstart_light='0'then

ifdone='1'orc_t=27then

casec_sis--显示每个模式时间的初值

whens0=>display_1<="0010";

display_0<="0111";

whens1=>display_1<="0001";

display_0<="0010";

whens2=>display_1<="0010";

display_0<="0100";

whens3=>display_1<="0001";

display_0<="0010";

whens4=>display_1<="0001";

display_0<="0101";

whens5=>display_1<="0000";

display_0<="0011";

whenothers=>null;

endcase;

endif;

else

casec_sis--工作开始后动态显示时间

whens0=>ifc_t>15then

temp:

=c_t-15;

elsifc_t>3then

temp:

=c_t-3;

elsetemp:

=c_t;

endif;

whens1=>temp:

=c_t;

whens2=>ifc_t>12then

temp:

=c_t-12;

elsetemp:

=c_t;

endif;

whens3=>temp:

=c_t;

whens4=>ifc_t>3then

temp:

=c_t-3;

elsetemp:

=c_t;

endif;

whens5=>temp:

=c_t;

whenothers=>null;

endcase;

iftemp>9then

display_1<="0001";

temp:

=temp-10;

elsedisplay_1<="0000";

endif;

casetempis

when9=>display_0<="1001";

when8=>display_0<="1000";

when7=>display_0<="0111";

when6=>display_0<="0110";

when5=>display_0<="0101";

when4=>display_0<="0100";

when3=>display_0<="0011";

when2=>display_0<="0010";

when1=>display_0<="0001";

when0=>display_0<="0000";

whenothers=>null;

endcase;

endif;

else

display_1<="1111";--未开电源时的初值

display_0<="1111";

endif;

endprocessoperation_time;

lighting:

process(c_t)--控制洗涤灯漂洗灯和脱水灯的亮灭

begin

ifpower_light='1'then

ifstart_light='0'then--暂停模式下

ifdone='1'then

casec_sis

whens0=>washing_light<='1';clean_light<='1';drain_light<='1';

whens1=>washing_light<='1';clean_light<='0';drain_light<='0';

whens2=>washing_light<='1';clean_light<='1';drain_light<='0';

whens3=>washing_light<='0';clean_light<='1';drain_light<='0';

whens4=>washing_light<='0';clean_light<='1';drain_light<='1';

whens5=>washing_light<='0';clean_light<='0';drain_light<='1';

whenothers=>null;

endcase;

else

casec_sis--执行已选的洗衣模式

whens0=>

ifc_t>15thenwashing_light<='1';--标准洗

clean_light<='1';

drain_light<='1';--1.洗涤

elsifc_t>3thenwashing_light<='0';

clean_light<='1';--2.漂洗

drain_light<='1';

elsewashing_light<='0';

clean_light<='0';--3.脱水

drain_light<='1';

endif;

whens1=>washing_light<='1';--单洗

clean_light<='0';

drain_light<='0';

whens2=>

iflast_time>12thenwashing_light<='1';--洗漂

clean_light<='1';--1.洗涤

drain_light<='0';

elsewashing_light<='0';

clean_light<='1';--2.漂洗

drain_light<='0';

endif;

whens3=>

washing_light<='0';--单漂

clean_light<='1';

drain_light<='0';

whens4=>

iflast_time>3thenwashing_light<='0';--漂脱

clean_light<='1';--1.漂洗

drain_light<='1';

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 小学教育

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

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