- 1、本文档共70页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]ISP在系统编程数字电路课程设计实例源代码
十五个ISP在系统编程 数字电路课程设计 实验源代码
1.《数字逻辑》课程设计报告
题目:拔河游戏机(25题)
题目难度:优
班级:04级计算机科学与技术-04班
设计者:
设计要求:
1、拔河游戏机需要9个发光二极管排成一行,开机后只有中间一个亮点,以此作为拔河的中间线,游戏双方各持一个按键,迅速、不端地按动产生脉冲,哪方按得快,亮点就向哪方移动,每按一次,亮点移动一次。移到任一方二极管的终端,该方获胜,此时双方按键均无作用,输出保持,只有经复位后才能使亮点恢复到中心线。
2、显示器显示胜者的盘数。
二、采用器件及软件环境:
硬件:ispLSl1016E芯片
软件:ispEXPERT System及windows2000操作系统
三、设计思想及说明:
1、概述:使用ispLSl1016E芯片,使用ispEXPERT下载到芯片,采用74LS162计数,采用数字电路实现系统设备模拟测试
2、设计思想:9个发光二极管用来模拟拔河的过程,中间一个灯为中线标志。模拟的两端按左右两个按钮,按钮产生脉冲信号,芯片根据两侧按钮信号的快慢,控制中间的发光二极管的灯的熄灭,某一侧按得较快,中间亮的灯就会向那一侧移动;当亮的灯到达最外侧的灯时,锁定程序,(即任何按键无效,直到按复位键复位)并且相应端的计数器计数加一,用以表示获胜的次数。使用复位键可以在锁定或者在比赛中断后重新开始时,将标志灯回到中心。
3、说明:中间灯亮表示中线;最外侧灯亮表示该端获胜;计数表示获胜次数;复位键使亮灯回到中线位置。
四、设计步骤,各模块组成,简要说明:
1、设计步骤:分析设计要求,选择合适芯片,编写芯片代码,下载代码到芯片,连接数字电路,分项测试功能。
2、模块组成:设计程序使用一个名为baheji的模块,模块分为初始化(复位),判断是否到达最末端,没有的话,根据按键方式判断移动中间的信号灯;如果到达末端,产生计数,并且锁定;四个部分。
3、简要说明:
count1.ar = cd1;
count2.ar = cd1;
score1.ar = cd2;
score2.ar = cd2;初始化(复位)拔河游戏。
(count1-count2==4)或(count1-count2==-4);//说明:判断是否到达最末端的条件,如果是的话,计分器加1,并执行将死锁,并且将L发光二极管锁定状态。
Counter1-counter2结果的绝对值小于4均为没有到达末端的情况,按下按键移动信号灯向左或者向右。
五、源文件(ABEL-HDL源程序)
MODULE baheji
TITLE baheji
declarations
l8..l0 pin;
clk1,clk2 pin;
cd1,cd2 pin;
p3..p0 node istype reg;
q3..q0 node istype reg;
count1 = [p3..p0];
count2 = [q3..q0];
m3..m0 pin istype reg;
n3..n0 pin istype reg;
score1 = [m3..m0];
score2 = [n3..n0];
equations
count1.ar = cd1;
count2.ar = cd1;
score1.ar = cd2;
score2.ar = cd2;
count1.clk = clk1;
count2.clk = clk2;
score1.clk = (count1-count2==4);
score1 := score1.fb+1;
score2.clk = (count1-count2==-4);
score2 := score2.fb+1;
when(count1-count2==4) then {
l8=1;
count1 := count1.fb;
count2 := count2.fb;
}
else{
l8=0;
count1 := count1.fb+1;
count2 := count2.fb+1;
}
when(count1-count2==3) then {
l7 = 1;
count1 := count1.fb+1;
count2 := count2.fb+1;
}
else{
l7 = 0;
count1 := count1.fb+1;
count2 := count2.fb+1;
}
when(count1-count2==2) then {
l6 = 1;
co
文档评论(0)