资源描述
燕 山 大 学 课 程 设 计 说 明 书
燕山大学
课 程 设 计 说 明 书
题目: 电子路标(二)
学院(系):
年级专业:
学 号:
学生姓名:
指导教师:郑兆兆 周莲莲
教师职称:实验师 高级实验师
燕山大学课程设计(论文)任务书
院(系):电气工程学院 基层教学单位:电子实验中心
学 号
学生姓名
专业(班级)
设计题目
电子路标(二)
设
计
技
术
参
数
●在双色点阵上显示电子路标(指示人物)
●电子路标能够行走和停止(用不同颜色表示)
●行走20秒后停止10秒
●在2个动态数码管显示行走和停止的时间
设
计
要
求
●用双色点阵发光管显示电子路标
●用频率组模块作为频率信号发生器
●动态数码管显示时间
工
作
量
●学会使用Max+PlusII软件、Verilog HDL语言和实验箱;
●独立完成电路设计,编程下载、连接电路和调试;
●参加答辩并书写任务书。
工
作
计
划
1. 了解EDA的基本知识,学习使用软件Max+PlusII,下发任务书,开始电路设计;
2. 学习Verilog HDL语言,用Verilog HDL进行程序设计
3. 学习使用实验箱,继续电路设计;
4. 完成电路设计;
5. 编程下载、连接电路、调试和验收;
6. 答辩并书写任务书。
参
考
资
料
《数字电子技术基础》.阎石主编.高等教育出版社.
《EDA课程设计A指导书》.
指导教师签字
郑兆兆 周莲莲
基层教学单位主任签字
金海龙
说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。
2012年 1 月 5 日
目 录
第1章 设计说明 ……………………………………………………………………………4
1.1 设计思路 ……………………………………………………………………………4
1.2 模块介绍 ……………………………………………………………………………4 1. 3 真值表 ……………………………………………………………………………5
第2章 Verilong HDL 设计源程序 ………………………………………………………7
第3章 波形仿真……………………………………………………………………………12
第4章 管脚锁定及硬件连线 ……………………………………………………………16
4.1 管脚连接 …………………………………………………………………………16
4.2 硬件连接 …………………………………………………………………………17
第5章 总结 …………………………………………………………………………18
参考文献 ……………………………………………………………………………………18
第一章 设计说明
1. 设计思路:
设置RESET为复位信号,当RESET为高电平时进行复位。CLK为输入频率,上升沿敏感信号,点阵的各个行列为输出端。根据计数器原理,通过a对CLK的记数使其输出的8个状态循环。当CLK频率足够快,使人眼无法分辨时,可看到灯一直亮。该功能用case语句的循环完成。
停止的人物用红色表示。行走的人物用绿色表示。行走的人物用两个图片不断的切换来实现运动。根据计数器原理对CLK进行分频,得到S M 两个频率分别控制红绿灯亮的时间和绿灯时两个行走图片转换的时间。S对CLK计数,记到一定数量使时间为10s,此过程中红灯亮。再记到一定数量使时间为20s,此过程中绿灯亮。在计数到0,实现循环。从而使红灯亮10s绿灯亮20s。绿灯亮的期间,M对CLK计数,当记到一定数量使时间为0.5s时,人物行走图片1亮,再记到相同数量时,时间为0.5s,人物行走图片二亮。再计数到0,实现循环,从而使绿色人物显示成动态走动的效果。上述功能用if...else...语句嵌套完成。
由于动态数码管的余辉现象和人眼的视觉暂留现象,通过对数码管的高频扫描可以实现多个数码管同时亮。通过一位变量Z对CLK计数,可实现对两个数码管的扫描,本设计选中七号管和八号管,分别对七号管和八号管赋值,七号管有十个状态每一秒变化一次然后循环,八号管有三个状态,每十秒变化一次,通过计数P可实现对他们的赋值。
2.模块介绍:整个程序在两个ALWAYS模块内完成,不需编译顶层文件,用RESET控制复位,用CLK控制程序的进行。可以将其分成如下三个小模块:
(1) 停止模块:通过计数产生八种状态,通过case语句实现对其循环扫描。
(2) 行走模块:其原理和停止一样,为让人物动起来,可通过切换两张图片来实现。模块中在点亮一种颜色的二极管时封锁另一色二极管,从而避免出现色彩显示的错误。
(3) 动态数码管模块:动态数码管需要由两个信号来控制:一是数选信号,用来选择显示的数字;二是位选信号,用来选择第几位数码管工作。动态数码管是共阴数码管,高电平有效。选中一个数码管的同时,其要显示的数字也必须同时给出。位选可通过一位变量实现扫描,段选则可通过case语句实现赋值。
3.真值表:
(1)停止模块的真值表:R代表红灯 G代表绿灯
列
标
行
标
R1 R2 R3 R4 R5 R6 R7 R8
G1 G2 G3 G4 G5 G6 G7 G8
ROW1
0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0
ROW2
0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0
ROW3
0 0 1 1 1 1 0 0
0 0 0 0 0 0 0 0
ROW4
0 0 1 1 1 1 0 0
0 0 0 0 0 0 0 0
ROW5
0 0 1 1 1 1 0 0
0 0 0 0 0 0 0 0
ROW6
0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0
ROW7
0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0
ROW8
0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0
(2)move1模块的真值表:G代表绿灯 R代表红灯
列
标
行
标
G1 G2 G3 G4 G5 G6 G7 G8
R1 R2 R3 R4 R5 R6 R7 R8
ROW1
0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0
ROW2
0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0
ROW3
0 0 1 1 1 1 0 0
0 0 0 0 0 0 0 0
ROW4
0 0 1 1 1 1 0 0
0 0 0 0 0 0 0 0
ROW5
0 1 0 1 1 0 1 0
0 0 0 0 0 0 0 0
ROW6
0 0 1 0 1 0 0 0
0 0 0 0 0 0 0 0
ROW7
0 1 0 0 1 0 0 0
0 0 0 0 0 0 0 0
ROW8
1 0 0 0 1 0 0 0
0 0 0 0 0 0 0 0
(3)move2模块的真值表:G代表绿灯 R代表红灯
列
标
行
标
G1 G2 G3 G4 G5 G6 G7 G8
R1 R2 R3 R4 R5 R6 R7 R8
ROW1
0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0
ROW2
0 0 0 1 1 0 0 0
0 0 0 0 0 0 0 0
ROW3
0 0 1 1 1 1 0 0
0 0 0 0 0 0 0 0
ROW4
0 0 1 1 1 1 0 0
0 0 0 0 0 0 0 0
ROW5
0 1 0 1 1 0 1 0
0 0 0 0 0 0 0 0
ROW6
0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0
ROW7
0 0 1 0 1 0 0 0
0 0 0 0 0 0 0 0
ROW8
0 1 0 0 0 1 0 0
0 0 0 0 0 0 0 0
(4)动态数码管模块
位选(SS2SS1SS0)
段选信号
0 0 1
0 0 0
0
0 1 1 1 1 1 1
0 1 1 1 1 1 1
1
0 0 0 0 1 1 0
0 0 0 0 1 1 0
2
1 0 1 1 0 1 1
1 0 1 1 0 1 1
3
1 0 0 1 1 1 1
4
1 1 0 0 1 1 0
5
1 1 0 1 1 0 1
6
1 1 1 1 1 0 1
7
0 0 0 0 1 1 1
8
1 1 1 1 1 1 1
9
1 1 0 1 1 1 1
第二章Verilog HDL 设计源程序
module chao(ROW,R,G,CLK,ENA,Q,ss0,ss1,ss2);
input CLK,ENA;
output[7:0]ROW,R,G;
output[6:0]Q;
output ss0,ss1,ss2;
reg[7:0]ROW,R,G;
reg[2:0]a;
reg[14:0]s;
reg[9:0]M;
reg[6:0]Q;
reg ss0,ss1,ss2;
reg[4:0]B;
reg[1:0]C;
integer Z;
always@(posedge CLK or negedge ENA)
begin
if(~ENA) //进行复位
begin
a='b000;ROW='b11111111; s=0;
M=0;
end
else
begin
s=s+1;a=a+1;
if(3<10240)
begin
case(a)
'b000:begin ROW='b11111110;R='b00011000;G='b00000000;end
'b001:begin ROW='b11111101;R='b00011000;G='b00000000;end
'b010:begin ROW='b11111011;R='b00111100;G='b00000000;end
'b011:begin ROW='b11110111;R='b00111100;G='b00000000;end
'b100:begin ROW='b11101111;R='b00111100;G='b00000000;end
'b101:begin ROW='b11011111;R='b00011000;G='b00000000;end
'b110:begin ROW='b10111111;R='b00011000;G='b00000000;end
'b111:begin ROW='b01111111;R='b00011000;G='b00000000;end
endcase //扫描双色点阵的行和列(红灯亮)
B=s[14:10];
C=0;
end
else if(10240<=S&&S<30720)
begin
M=M+1;
if(M<=512)
begin
case(a)
'b001:begin ROW='b11111110;G='b00011000;R='b00000000;end
'b010:begin ROW='b11111101;G='b00011000;R='b00000000;end
'b011:begin ROW='b11111011;G='b00111100;R='b00000000;end
'b100:begin ROW='b11110111;G='b00111100;R='b00000000;end
'b101:begin ROW='b11101111;G='b01011010;R='b00000000;end
'b110:begin ROW='b11011111;G='b00101000;R='b00000000;end
'b111:begin ROW='b10111111;G='b01001000;R='b00000000;end
'b000:begin ROW='b01111111;G='b10001000;R='b00000000;end
endcase //行走图片1扫描双色点阵的行和列(绿灯亮)
end
else if(512<M<=1024)
begin
case(a)
'b001:begin ROW='b11111110;G='b00011000;R='b00000000;end
'b010:begin ROW='b11111101;G='b00011000;R='b00000000;end
'b011:begin ROW='b11111011;G='b00111100;R='b00000000;end
'b100:begin ROW='b11110111;G='b00111100;R='b00000000;end
'b101:begin ROW='b11101111;G='b01011010;R='b00000000;end
'b110:begin ROW='b11011111;G='b00010000;R='b00000000;end
'b111:begin ROW='b10111111;G='b00101000;R='b00000000;end
'b000:begin ROW='b01111111;G='b01000100;R='b00000000;end
endcase //行走图片2扫描双色点阵的行和列(绿灯亮)
end
if(10240<=S&&S<20480)
begin
B=s[14:10]-10;
C='b00;
end
else if(20480<=3&&3<30720)
begin
B=s[14:10]-20;
C='b01;
end
end
else if(30720<=s)s=0;
end
end
always@(posedge CLK or negedge ENA)
begin
if(~ENA)
begin
Q='b0000000;
end //进行复位
else
begin
if(Z=='b0)
begin
ss0=1;ss1=0;ss2=0; // 位选,选中七号管
case(B)
0:Q='b0111111;
1:Q='b0000110;
2:Q='b1011011;
3:Q='b1001111;
4:Q='b1100110;
5:Q='b1101101;
6:Q='b1111101;
7:Q='b0000111;
8:Q='b1111111;
9:Q='b1101111;
endcase
z=z+1; //扫描动态数码管七号管
end
else
begin
ss0=0;ss1=0;ss2=0; //位选,选中八号管
case(C)
0:Q='b0111111;
1:Q='b0000110;
2:Q='b1011011;
endcase
end //扫描动态数码管八号管
end
end
endmodule
第三章 波形仿真
1复位时的波形
2红灯亮且数码管显示00时的波形
3红灯亮且数码管显示09时的波形
4绿灯亮时且数码管为00时的波形
5绿灯亮时且数码管为09时的波形
6绿灯亮时且数码管为19时的波形
7蜂鸣时的波形
(1)停止转向行走时的蜂鸣
(2)行走转向停止时的蜂鸣
8例题波形
Cnt_dec7s的波形
Cnt4e的波形
Dec7s的波形
第四章 管脚锁定及硬件连线
(一)管脚锁定
CLK > chip = lubiao3;Input Pin=83
ENA > chip = lubiao3;Input Pin=39
G0 > chip = Lubiao;Output Pin=197
G1 > chip = Lubiao;Output Pin=195
G2 > chip = Lubiao;Output Pin=192
G3 > chip = Lubiao;Output Pin=190
G4 > chip = Lubiao;Output Pin=187
G5 > chip = Lubiao;Output Pin=177
G6 > chip = Lubiao;Output Pin=175
G7 > chip = Lubiao;Output Pin=173
Q0 > chip = Lubiao;Output Pin=75
Q1 > chip = Lubiao;Output Pin=74
Q2 > chip = Lubiao;Output Pin=71
Q3 > chip = Lubiao;Output Pin=69
Q4 > chip = Lubiao;Output Pin=73
Q5 > chip = Lubiao;Output Pin=70
Q6 > chip = Lubiao;Output Pin=68
ROW0 > chip = Lubiao;Output Pin=93
ROW1 > chip = Lubiao;Output Pin=90
ROW2 > chip = Lubiao;Output Pin=88
ROW3 > chip = Lubiao;Output Pin=86
ROW4 > chip = Lubiao;Output Pin=92
ROW5 > chip = Lubiao;Output Pin=89
ROW6 > chip = Lubiao;Output Pin=87
ROW7 > chip = Lubiao;Output Pin=85
R0 > chip = Lubiao;Output Pin=198
R1 > chip = Lubiao;Output Pin=196
R2 > chip = Lubiao;Output Pin=193
R3 > chip = Lubiao;Output Pin=191
R4 > chip = Lubiao;Output Pin=189
R5 > chip = Lubiao;Output Pin=179
R6 > chip = Lubiao;Output Pin=176
R7 > chip = Lubiao;Output Pin=174
SS0 > chip = Lubiao;Output Pin=172
SS1 > chip = Lubiao;Output Pin=170
(二)硬件连接
Pin=83 连接 CLOCK(T)11
Pin=39 (内锁 )拨码开关A组
Pin=197 连接 双色点阵GA1
Pin=195连接 双色点阵GA2
Pin=192连接 双色点阵GA3
Pin=190连接 双色点阵GA4
Pin=187连接 双色点阵GA5
Pin=177连接 双色点阵GA6
Pin=175连接 双色点阵 GA7
Pin=173连接 双色点阵 GA8
Pin=75连接 数码管A
Pin=74连接 数码管B
Pin=71连接 数码管C
Pin=69连接 数码管D
Pin=73连接 数码管E
Pin=70连接 数码管F
Pin=68连接 数码管G
Pin=93连接 双色点阵ROW1
Pin=90连接 双色点阵ROW2
Pin=88连接 双色点阵ROW3
Pin=86连接 双色点阵ROW4
Pin=92连接 双色点阵ROW5
Pin=89连接 双色点阵ROW6
Pin=87连接 双色点阵ROW7
Pin=85连接 双色点阵ROW8
Pin=198连接 双色点阵RA1
Pin=196连接 双色点阵RA2
Pin=193连接 双色点阵RA3
Pin=191连接 双色点阵RA4
Pin=189连接 双色点阵RA5
Pin=179连接 双色点阵 RA6
Pin=176连接 双色点阵RA7
Pin=174连接 双色点阵RA8
Pin=172连接 数码管SS0
Pin=170连接 数码管SS1
SS2 接地
第五章 总结
通过这次课程设计我收获很多,对书本理论知识有了进一步理解,我学会了利用Verilog语言编写一些简单的小程序,初步掌握了EDA开发软件maxplusII的使用方法和设计流程,了解并掌握了8×8双色点阵和动态数码管等的基本原理和使用方法,对一些器件的使用方法了解更深刻了,如一些器件的使能端的作用等,学会了硬件接线原理和仿真功能。
在两周的课程设计中,我学到了很多的东西,从刚开始时的一筹莫展,到后来的渐通关窍,每一步走过来都有豁然开朗的感觉,也对下一步多了一份期待和信心。每解决一个问题,心里都会特别兴奋,特别有成就感。设计性实验最重要的是要有一条清晰设计思路,对于问题的各个部分模块化,分模块进行分析,思考,设计,再去编程,再将所有的模块组装在一起,就可完成该设计。在实验设计当中应注意培养自己独立思考设计思路的能力, 许多事情只有在自己亲手做了之后才会感觉到,其实它并不是自己想象中的那样难或简单,要善于专心深入的思考问题,所学知识要常用。必须学会自己调试电路,一般第一次设计出的电路都会通不过编译的,所以要学会调试电路,而不是等老师解答或同学帮助。在进行设计时总会遇到各种问题,排除错误,解决问题,贯穿设计的始终。找到了错误,我们就积累了一点儿经验,对自己也就更加自信。
这次的课程设计是自己完成的第一次项目的设计,开始的时候觉得有些困难,但当自己真正思考,去想解决方法、改正时,确实学到很多,可以说是在课本的基础上更深一步理解学习的过程吧!
最后,感谢指导老师耐心的指导和帮助。
参考文献
1郑兆兆,周莲莲,陈白. EDA课程设计指导书. 2011年
2 阎石. 数字电子技术基础. 高等教育出版社,2011年
燕山大学课程设计评审意见表
指导教师评语:
①该生学习态度 (认真 较认真 不认真)
②该生迟到、早退现象 (有 无)
③该生依赖他人进行设计情况 (有 无)
平时成绩: 指导教师签字:
2012 年 1 月5 日
图面及其它成绩:
答辩小组评语:
①设计巧妙,实现设计要求,并有所创新。
②设计合理,实现设计要求。
③实现了大部分设计要求。
④没有完成设计要求,或者只实现了一小部分的设计要求。
答辩成绩: 组长签字:
2012 年 1 月5 日
课程设计综合成绩:
答辩小组成员签字:
2012年 1 月5 日
共 19 页 第 19 页
展开阅读全文