数字逻辑课程设计报告.docx
- 文档编号:3969811
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:27
- 大小:416.13KB
数字逻辑课程设计报告.docx
《数字逻辑课程设计报告.docx》由会员分享,可在线阅读,更多相关《数字逻辑课程设计报告.docx(27页珍藏版)》请在冰豆网上搜索。
数字逻辑课程设计报告
课程实验报告
课程名称:
数字逻辑课程设计
专业班级:
计算机科学与技术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';
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 逻辑 课程设计 报告