资源描述:
《307-《EDA技术基础》实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、HUBEINORMALUNIVERSITY电工电子实验报告课程名称现代电子技术实验(EDA)选题名称交通灯逻辑电路选题性质(基础、综合、设计)学号姓名2012112020307张娟专业名称电子信息科学与技术所在院系物理与电子科学学院完成时间2014-12-28电工电子中心2009年5月绘制交通灯逻辑电路的设计(研究)—•任务解析利用CEET-EDA实验箱上的八位数码管设计一交通灯,能够实现红、黄、绿三种灯循环倒计时点亮,红灯倒计时30秒,黄灯倒计时3秒,绿灯倒计时30秒。二.方案论证对于此次交通灯实验,按照老师要
2、求去设计吋有两种方案:一种是直接用一个总程序实现,另一种是用各个分模块程序连接起来后实现。不过,便于写程序和检查程序,所以我选择了分模块写程序,最后各个模块连接起来实验选题功能,即方案二。程序设计过程中参考了老师上课时讲的基础程序。三.实验步骤1、选择自己感兴趣的设计选题2、对自己的选题要求进行分析,然后开始写出Ver订og程序(1)分频模块always@(posedgeckl)beginif(cnt>=25,D25000000)beginent二0;cko二!cko;endelseent二ent+f;end这个
3、分频模块是能自由定义频率的,由f的取值决定。基频是50Mhz,当加到25000000的时候再清零,那样得到的频率就是f的值。(2)三种灯的转换模块assigngreen二(s==l)?l:0;assignyellow二(s二二2
4、s=0)?1:0;assignred二(s=3)?l:0;绿,黄,红灯之间的转换是由S的取值实现的,s为1是绿灯亮;s为2和0时,黄灯亮;s为3时,红灯亮。(3)交通灯倒计时实现的计数模块always@(posedgeclko)begincase(s)0:beginif(count1[3
5、:0]>4,hO)countl=countl-4,hl;elsebegincountl二8'h30;s=l;endend1:beginif(countl[3:0]>4,hO)countl二countl-4'hl;elseif(countl[7:4]〉4'hO)countl=countl-4,h7;elsebegincountl二8'hf3;s二2;cndend2:beginif(countl[3:0]>4,hO)countl二countl-4'hl;elsebegincountl二8'h30;s=3;endend
6、3:beginif(countl[3:0]>4,hO)countl二countl-4'hl;elseif(countl[7:4]>4'hO)countl二countl—4'h7;elsebegincountl二8'hf3;s=0;endendendcase当countl[3:0]大于0吋,countl减1;countl[3:0]不大于0时,countl就等于8'h30(8,h30经过译码后就是30秒)s取值1,此时绿灯亮,倒计时30秒。如此实现黄灯倒计时3秒,和红灯倒计时30秒。(4)数码管的扫描模块always
7、@(posedgeclkol)beginsei二sel+1;end每clkol的上升沿来到是数码管就加一让下一个数码管亮.(5)数码管的位选模块assignq二(sei二二O)?countl[3:0]:count1[7:4];当sel==0时,countl[3:0]亮,否则countl[7:4]亮。(3)数码管的段选模块always@(q)begincase(q)0:y二8'h3f;l:y二8'h06;2:y二8'h5b;3:y二8'hdf;4:y二8'h66;5:y二8'h6d;6:y二8'h7d;7:y二8'
8、h07;8:y二8'h7f;9:y二8'h6f;default:y=8,hOO;cndcasc(4)总体程序modulefenpin(ckl,f,cko);inputckl;input[24:0]f;outputcko;reg[24:0]cnt;regcko;always@(posedgeckl)beginif(cnt>=25,D25000000)beginent二0;cko二!cko;endelseent二ent+f;endendmodulemoduleyima(q,y);input[3:0]q;output[
9、7:0]y;reg[7:0]y;always@(q)begincase(q)0:y二8'h3f;l:y=8'h06;2:y=8,h5b;3:y二8'hdf;4:y二8'h66;5:y二8'h6d;6:y二8'h7d;7:y二8'h07;8:y二8'h7f;9:y二8'h6f;default:y=8,hOO;cndcascendendmodulemoduletopjt(el