12014—2015学年第一学期《数字电子技术课程设计》报告专业班级姓名学号开课系室电工电子学教学中心设计日期2014年12月22日~30日2目录一、设计任务及原理:...............................................................................3二、具体要求..........................................................................................3——5三、输入输出资源说明:...................................................................................5——6四、子模块设计:............................................................................................8——194.1分频器模块:..........................................................................................8——94.2显示译码器模块.......................................................................................94.3计数器模块...............................................................................................9——104.4控制器模块...............................................................................................11——124.5点阵显示模块...........................................................................................12——19五、仿真测试结果.............................................................................................19——23六、实习总结与讨论..........................................................................................233数字电子技术课程设计题目:交通灯控制电路设计一、设计任务及原理:交通灯的显示有很多方式,如十字路口、丁字路口等,而对于同一个路口又有很多不同的显示要求,比如十字路口,车辆如果只要东西和南北方向通行就很简单,而如果车子可以左右转弯的通行就比较复杂。要完成本实验,首先必须了解交通路灯的燃灭规律。本实验需要用到实验箱上交通灯模块中的发光二极管,即红、黄、绿各四个。依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。其交通灯的燃灭规律为:东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯闪烁,红灯亮(表示左转弯),再延时一段时间后,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯闪烁,红灯亮(表示左转弯),再延时一段时间后,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。在实验中使用4个七段码管中的任意两个数码管显示时间。东西路和南北路的通车时间均设定为20s(其中,绿灯亮时间为10s,绿灯闪烁时间为5s,黄灯闪烁时间为5s)。数码管的时间总是显示为20、19、18、17……2、1、0、20、19、18……。在显示时间小于等于5秒的时候,通车方向的黄灯闪烁。在东西向绿灯期间,点阵显示自己的姓名;在南北向绿灯期间,点阵显示自己的学号后3位。扩展要求:1、利用一个开关将0-20s扩展为0-30s(30-10s之间绿灯亮,其他与基本要求相同);2、增加交警控制模块:用一个开关切换自动模式(上述情况属于自动模式)和人工模式(交警控制模式):用4个开关分别实现东西向通行(东西向绿灯亮,南北向红灯亮,没有时间限制),实现南北向通行(南北向绿灯亮,东西向红灯亮,没有时间限制),实现东西向左转弯(东西向绿灯闪烁,东西向红灯亮,南北向红灯亮,没有时间限制),实现南北向通行(南北向绿灯闪烁,南北向红灯亮,东西向红灯亮,没有时间限制)。二、具体要求:本课程设计要完成的任务就是设计一个简单的交通灯控制器,交通灯显示用实验箱的交通灯模块和七段码管中的任意两个来显示。系统时钟选择时钟模块的50MHz时钟,黄灯和绿灯闪烁时钟要求为2Hz,七段码管的时间显示为1Hz脉冲,即每1s中递减一次。在东西向绿灯期间,点阵显示自己的姓名;在南北向绿灯期间,点阵显示自己的学号后3位。显示方式:1秒显示一个汉字或者一个数字(汉字和数字均静止不动,即不循环),4然后全暗1秒,然后再显示一个汉字或者一个数字,以此类推。实验箱中用到的数字时钟模块、按键开关、数码管、点阵与FPGA的接口电路,以及数字时钟源、按键开关、数码管、点阵与FPGA的管脚连接在以前的实验中都做了详细说明,这里不再赘述。交通灯模块原理与LED灯模块的电路原理一致,当有高电平输入时LED灯就会被点亮,反之不亮。只是LED发出的光有颜色之分。其与FPGA的管脚连接如下表所示:EDA/SOPC开发平台交通信号灯模块R1纵向D3R2横向E3Y1纵向D4Y2横向E4G1纵向D5G2横向F3信号名称EP2C35IO接脚信号名称EP2C35IO接脚EDA/SOPC开发平台16*16点阵显示模块C0P19R0L8C1P4R1J4C2R6R2H6C3R7R3H5C4R8R4H4C5J3R5H3C6W18R6G7C7R11R7G6C8U10R8P6C9U9R9P5C10U8R10P3C11R16R11N6C12R15R12N4C13R14R13N3C14J6R14M6C15R4R15M5CLKL1系统时钟输入端口,50MHz7SEG-DISPLAYDS1DS2DS3DS4AN4AB7AH4AD11BN3BC14BH3BG5CM6CA7CG7CG3DN6DD4DH6DB6EP3ED5EH5EC13FP6FE3FL8FD14GP5GE4GJ4GA65HM5HD3HG6HF4EDA/SOPC开发平台12位拨动开关模块K1E15K7A16K2B14K8F13K3F9K9F14K4B15K10A17K5A15K11H7K6F11K12A18核心板模块七段码LEDaT11eV9bL17fV11cT16gU13dJ14dpU14三、输入输出资源说明:1、外部输入脉冲信号时钟源CP(50MHz),经适当分频后供计数器使用。2、输出2组显示译码信号(每组7个输出端),分别接到外部的两个七段数码管M1、M2上,M1和M2分别显示倒计时的十位和个位。3、输出6个高低电平信号,分别接到外部的6个指示纵向、横向的LED灯。(输出高电平时,对应的LED灯亮)其具体框图如下:图1交通灯控制电路结构框图根据如上说明,本设计的主要任务和设计要求是:1Hz纵向指示灯LED1控制器计数器(倒计时;通车时间倒计时)七段LED数码管显示(2个)50MHz纵向指示灯LED3横停指示灯LED6纵向指示灯LED2横向指示灯LED5横向指示灯LED4CLK显示姓名或者学号61、按照现代数字系统的Top-Down模块化设计方法,提出交通灯控制电路设计系统的整体设计方案,并进行正确的功能划分,分别提出并实现控制器、计数器、输出译码、点阵显示等模块化子系统的设计方案。2、在QuartusⅡ的EDA设计环境中,完成系统的顶层设计、各子系统的模块化设计。分别完成各个基于Verilog语言实现的子模块(包括控制器电路、计数器电路、输出译码电路、点阵显示电路)的逻辑功能仿真。最后对顶层设计进行功能仿真。3、在2步的基础上,用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。观察实验结果是否与自己的编程思想一致。顶层设计图及verilog程序modulejilian(clk,r1,g1,y1,r2,g2,y2,c,p,q,r);inputclk;outputr1;outputg1;outputy1;outputr2;outputg2;outputy2;output[15:0]c;output[6:0]p;output[6:0]q;output[15:0]r;wireSYNTHESIZED_WIRE_7;wireSYNTHESIZED_WIRE_1;7wire[3:0]SYNTHESIZED_WIRE_2;wire[3:0]SYNTHESIZED_WIRE_3;wireSYNTHESIZED_WIRE_5;wire[6:0]SYNTHESIZED_WIRE_6;controlb2v_inst(.clk(SYNTHESIZED_WIRE_7),.r1(r1),.g1(g1),.y1(y1),.r2(r2),.g2(g2),.y2(y2),.cout(SYNTHESIZED_WIRE_6));counterb2v_inst1(.clk(SYNTHESIZED_WIRE_1),.cou1(SYNTHESIZED_WIRE_2),.cou2(SYNTHESIZED_WIRE_3));fenpin_1hz_2hzb2v_inst2(.CLK_50M(clk),.cp1(SYNTHESIZED_WIRE_1),.cp2(SYNTHESIZED_WIRE_7));displayb2v_inst3(.in(SYNTHESIZED_WIRE_2),.out(p));displayb2v_inst4(.in(SYNTHESIZED_WIRE_3),.out(q));dianzhenb2v_inst5(.clk_2hz(SYNTHESIZED_WIRE_7),.clk_1khz(SYNTHESIZED_WIRE_5),.green(SYNTHESIZED_WIRE_6),.con(c),.row(r));8fenpin_1khzb2v_inst6(.CLK_50M(clk),.cp(SYNTHESIZED_WIRE_5));endmodule四、子模块设计4.1分频器模块两个分频器分别产生1khz、2hz、1hz时钟频率,为各模块提供cp;Verilog程序:modulefenpin_1hz_2hz(CLK_50M,cp1,cp2);inputCLK_50M;outputcp1,cp2;reg[31:0]cnt1;reg[31:0]cnt2;regcp1,cp2;always@(posedgeCLK_50M)beginif(cnt1==32'd49999999)cnt1=1'd0;elsecnt1=cnt1+1'd1;if(cnt1=32'd25000000)cp1=1'd1;elsecp1=1'd0;if(cnt2==32'd24999999)cnt2=1'd0;elsecnt2=cnt2+1'd1;if(cnt2=32'd12500000)cp2=1'd1;elsecp1=1'd0;endendmodule生成模块:modulefenpin_1khz(CLK_50M,cp);inputCLK_50M;outputcp;reg[31:0]cnt;regcp;9always@(posedgeCLK_50M)beginif(cnt==32'd49999)cnt=1'd0;elsecnt=cnt+1'd1;if(cnt