ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:543.48KB ,
资源ID:4681      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4681.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数字电子技术实验报告之交通灯设计.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

数字电子技术实验报告之交通灯设计.docx

1、数字电子技术实验报告之交通灯设计数 字 电 子 技 术 实 验 报 告交通灯的设计姓名:学号:学院:专业:班级:指导老师: 目录一、 实验目的与要求二、 实验设计三、 调试及实验结果四、 附页一、 实验目的及要求实验目的:1. 熟练掌握verilog语言及Quartus软件的使用。2. 考验和培养学生独立自主综合设计的能力。实验要求:1. 设计一个十字路口的四个交通灯的设计。2. 注意红灯时间23秒、黄灯时间3秒、绿灯时间17秒。3. 时间倒计时功能需在数码管中显示出来。实验扩展:1. 分频:因为实验要求秒数的倒计时及控制,故要将高频率进行分频得到1khz和1hz的频率。分频的实现2. 数码管

2、动态扫描: 倒计时的显示要求有四位同时显示,而以前只进行过一位显示。所以该实验需要数码管的动态扫描。二、 实验设计总体思路:先实现由高频率分频得到1khz和1hz的频率,然后实现在1hz的频率下交通灯状态的转换,同时倒计时功能也开始运行。然后在1khz的频率下进行动态扫描,再加上数码管的七段显示即可。 交通灯的状态设计:每个灯有三种状态:红、绿、黄。又因为每个灯由2个开关来控制,所以四个灯设定四个变量 sn1:0、ns1:0、ew1:0、we1:0分别代表南北、东西方向的灯。其中01代表绿灯,10代表红灯,11代表黄灯。灯状态的循环设计:第一个状态(state0): 绿 红 红 :该状态维持1

3、7s,we红灯23s倒计时到 绿 6s,sn绿灯17s倒计时到0s。 第二个状态(state1):黄 红 红 :该状态维持3s,we红灯倒计时6s到 黄 3s,sn黄灯倒计时3s到0s。第三个状态(state2):红 红 红:该状态维持3s,we红灯倒计时3s到红 0s,sn红灯23s倒计时到20s。 第四个状态(state3):红 绿 绿:该状态维持17s,we绿灯17s倒计时到红 0s,sn红灯20s倒计时到3s。 第五个状态(state4):红 黄 黄: 该状态维持3s,we黄灯3s倒计时到0s,红 sn红灯3s倒计时到0s。 回到原始状态(state0):绿 红 红:回到原始状态,构成

4、一个循环。绿 状态设计代码:state0: begin/设定初状态:南北方向为绿灯,东西方向为红灯(下面同理) sn=2b01; ns=2b01; we=2b10; ew=2b10;if(gl=3d0&gh=3d0&rl=3d0&rh=3d0) begin/设定红绿灯计时起点红灯23s绿灯17s(下面同理) gl=3d7;gh=3d1;rl=3d3;rh=3d2; end else begin if(gl=0) /十进制的减法设定(下面同理) begin gl=9;gh=gh-1;end else begin gl=gl-1;end if(rl=0) begin rl=9;rh=rh-1;en

5、d else begin rl=rl-1;end/判定状态是否结束(看绿灯倒计时是否到达0)(下面同理) if(gl=3d0&gh=3d0) begin next_state=state1;end end endstate1: begin sn=2b11; ns=2b11; we=2b10; ew=2b10; if(yl=3d0) begin yl=3d3;rl=3d6;rh=3d0; end else begin begin yl=yl-1;end begin rl=rl-1;end if(yl=0) begin next_state=state2;end end endstate2: be

6、gin sn=2b10; ns=2b10; we=2b10; ew=2b10; if(yl=3d0&yh=3d0) begin rl=3d3;rh=3d2;yl=3d3; end else begin begin rl=rl-1;yl=yl-1;end if(yl=0) begin next_state=state3; end end endstate3: begin sn=2b10; ns=2b10; we=2b01; ew=2b01; if(yl=3d0&yh=3d0) begin rl=3d0;rh=3d2;yl=3d7;yh=3d1; end else begin if(rl=0) b

7、egin rl=9;rh=rh-1;end else begin rl=rl-1;end if(yl=0) begin yl=9;yh=yh-1;end else begin yl=yl-1;end if(yl=3d0&yh=3d0) begin next_state=state4;end end endstate4: begin sn=2b10; ns=2b10; we=2b11; ew=2b11; if(yl=3d0&yh=3d0) begin rl=3d3;yl=3d3; end else begin begin rl=rl-1;yl=yl-1;end if(rl=3d0&yl=3d0)

8、 begin next_state=state0;endend end 分频技术的实现:接入6M的频率,先分成1khz的频率,在由1khz的频率分出1hz的频率。分频代码:/1khz always(posedge clk)/注:接入6M的频率 begin if(count1=d3000) begin clk1khz=clk1khz; count1=4d0; end else count1=count1+4d1; end/1hz always(posedge clk1khz) begin if(count2=d500) begin clk1hz=clk1hz; count2=4d0; end e

9、lse count2=count2+1d1;数码管的显示:数码管的显示,因为需要同时显示两位数字,故要用到数码管扫描;其次要进行显示,要七段显示译码器。数码管的扫描代码:wei3:0代表八位数码管的八位,在此因为只需显示4位故只将wei只用4位。/该部分作用是让数码管在1hkz下不断的快速扫描,照成它们同时显示的错觉。always(posedge clk1khz)if(wei=3d3) begin wei=3d0; end else wei=wei+3d1;/该部分的num3:0是提供给七段显示器的,而weiscan7:0是用于决定数码管哪一位亮的。always (wei)begin case

10、(wei) 3b000:begin num3:0=l3:0;weiscan7:0=8b00000001; end3b001:begin num3:0=h3:0;weiscan7:0=8b00000010; end 3b010:begin num3:0=l13:0;weiscan7:0=8b00000100;end 3b011:begin num3:0=h13:0;weiscan7:0=8b00001000; endendcaseend倒计时的显示设计: 每一个状态显示的时间和亮的灯的颜色都不一样。所以每个状态时,计时的变量都应改变,才能使得数码管正常显示。代码如下:case(state) st

11、ate0:begin l=gl;h=gh;l1=rl;h1=rh;end state1:begin l=yl;h=yh;l1=rl;h1=rh;end state2:begin l=rl;h=rh;l1=yl;h1=yh;end state3:begin l=rl;h=rh;l1=yl;h1=yh;end state4:begin l=rl;h=rh;l1=yl;h1=yh;end endcaseend调试与实验结果 调试: 将代码中always部分中的常来clk1hkz和常来clk1hz都改为clk,然后进行编译,并建立一个vector waveform file文件,找到所有的节点,就可以

12、运行了。仿真波形如下:整体仿真图形:weiscan7:0的仿真图:counter7:0的仿真图:引脚锁定:下载到实验箱后,用导线将clk与p16接起,后接入6M频率即可。实验结果:实验交通灯变化正常,倒计时显示正常。本次实验的心得;本次实验经历了3个礼拜,完全由学生自主学习和实验,我对于这个实验一开始以为比较简单,可是动起手却没有思路。经过查阅图书馆的资料才有那么一点思路,开始动手。经过这次实验我学到了很多,学会数码管的扫描和状态的设定和转换。附页(附总代码):module d20122756(clk,sn,we,ns,ew,counter,weiscan);output 7:0weiscan

13、;reg 7:0weiscan;input clk;output 1:0sn,we,ns,ew;output 6:0counter;reg 6:0counter;reg 1:0sn,we,ns,ew;reg 3:0rl,rh,yl,yh,gl,gh;reg 3:0wei,num;reg clk1khz,clk1hz;reg 12:0count1;reg 8:0count2;reg 3:0l,h,l1,h1;reg 2:0state,next_state;parameter state0=0,state1=1,state2=2,state3=3,state4=4;/1khz always(pos

14、edge clk) begin if(count1=d3000) begin clk1khz=clk1khz; count1=4d0; end else count1=count1+4d1; end/1hz always(posedge clk1khz) begin if(count2=d500) begin clk1hz=clk1hz; count2=4d0; end else count2=count2+1d1; if(wei=3d3) begin wei=3d0; end else wei=wei+3d1;case(state) state0:begin l=gl;h=gh;l1=rl;

15、h1=rh;end state1:begin l=yl;h=yh;l1=rl;h1=rh;end state2:begin l=rl;h=rh;l1=yl;h1=yh;end state3:begin l=rl;h=rh;l1=yl;h1=yh;end state4:begin l=rl;h=rh;l1=yl;h1=yh;end endcaseend always (posedge clk1hz)beginstate=next_state;case(state)state0: begin sn=2b01; ns=2b01; we=2b10; ew=2b10; if(gl=3d0&gh=3d0&

16、rl=3d0&rh=3d0) begin gl=3d7;gh=3d1;rl=3d3;rh=3d2; end else begin if(gl=0) begin gl=9;gh=gh-1;end else begin gl=gl-1;end if(rl=0) begin rl=9;rh=rh-1;end else begin rl=rl-1;end if(gl=3d0&gh=3d0) begin next_state=state1;end end endstate1: begin sn=2b11; ns=2b11; we=2b10; ew=2b10; if(yl=3d0) begin yl=3d

17、3;rl=3d6;rh=3d0; end else begin begin yl=yl-1;end begin rl=rl-1;end if(yl=0) begin next_state=state2;end end endstate2:begin sn=2b10; ns=2b10; we=2b10; ew=2b10; if(yl=3d0&yh=3d0) begin rl=3d3;rh=3d2;yl=3d3; end else begin begin rl=rl-1;yl=yl-1;end if(yl=0) begin next_state=state3; end end endstate3:

18、 begin sn=2b10; ns=2b10; we=2b01; ew=2b01; if(yl=3d0&yh=3d0) begin rl=3d0;rh=3d2;yl=3d7;yh=3d1; end else begin if(rl=0) begin rl=9;rh=rh-1;end else begin rl=rl-1;end if(yl=0) begin yl=9;yh=yh-1;end else begin yl=yl-1;end if(yl=3d0&yh=3d0) begin next_state=state4;end end endstate4:begin sn=2b10; ns=2

19、b10; we=2b11; ew=2b11; if(yl=3d0&yh=3d0) begin rl=3d3;yl=3d3; end else begin begin rl=rl-1;yl=yl-1;end if(rl=3d0&yl=3d0) begin next_state=state0;end end endendcaseendalways (wei)begin case(wei)3b000:begin num3:0=l3:0;weiscan7:0=8b00000001; end3b001:begin num3:0=h3:0;weiscan7:0=8b00000010; end3b010:b

20、egin num3:0=l13:0;weiscan7:0=8b00000100; end3b011:begin num3:0=h13:0;weiscan7:0=8b00001000; end endcaseend always (num) begin case(num) 4b0000: counter=7b1111110; /0 4b0001: counter=7b0110000; /1 4b0010: counter=7b1101101; /2 4b0011: counter=7b1111001; /3 4b0100: counter=7b0110011; /4 4b0101: counter=7b1011011; /5 4b0110: counter=7b1011111; /6 4b0111: counter=7b1110000; /7 4b1000: counter=7b1111111; /8 4b1001: counter=7b1111011; /9 default: counter=7b0000000; /0 endcase endendmoduleRTL viewer:

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2