欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 幼儿/小学教育>
  • 中学教育>
  • 高等教育>
  • 研究生考试>
  • 外语学习>
  • 资格/认证考试>
  • 论文>
  • IT计算机>
  • 法律/法学>
  • 建筑/环境>
  • 通信/电子>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    交通灯控制器课程设计报告共29页.doc

    • 资源ID:37372       资源大小:13.26MB        全文页数:29页
    • 资源格式: DOC        下载积分:5
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录 微博登录
    二维码
    微信扫一扫登录
    下载资源需要5
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    交通灯控制器课程设计报告共29页.doc

    1、精选优质文档-倾情为你奉上目录引言3第1章 Verilog HDL 硬件描述语言的介绍4第2章 设计任务与要求5 2.1 实验目的与任务5 2.2 参考设计方案 6第3章 设计说明73.1 设计思路73.2 模块介绍9第4章 Verilog HDL 源程序11第5章 功能仿真18 5.1 功能仿真介绍185.2 功能仿真结果19第6章 时序仿真20 6.1 时序仿真介绍20 6.2 时序仿真结果21第7章 管脚分配22第8章 设计结果24第9章 总结28第10章 参考文献29引言 EDA 技术是依靠功能强大的电子计算机,在EDA 工具软件平台上,对以硬件描述语HDL (Hardware Des

    2、cription Language)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编辑、化简、分割、综合、优化和仿真,直至下载到可编程逻辑器件CPLD/ FPGA 或专用集成电路ASIC(Application Specific IntegratedCircuit) 芯片中,实现既定的电子电路设计功能。EDA 技术使得电子电路设计者的工作仅限于利用硬件描述语言和EDA软件平台来完成对系统硬件功能的实现,极大地提高了设计效率,缩短了设计周期,节省了设计成本。 实现路口交通灯系统的控制方法很多,可以用标准逻辑器件,可编程控制器PLC ,单片机等方案来实现。但是这些控制方法的功能修改及调试都需要硬

    3、件电路的支持,在一定程度上增加了功能修改及系统调试的困难。因此,在设计中采用EDA 技术,应用目前广泛应用的Verilog HDL 硬件电路描述语言,实现交通灯系统控制器的设计,利用MAX + PLUS 集成开发环境进行综合、仿真,并下载到CPLD 可编程逻辑器件中,完成系统的作用。第1章Verilog HDL 硬件描述语言的介绍Verilog HDL 是目前应用最广泛的一种硬件描述语言。Verilog HDL 是在1983 年由GDA(GateWay Design Automation) 公司的Phil Moorby 首创的。1986 年,他对Verilog HDL 的发展又作出了另一个巨大

    4、贡献:提出了用于快速门级仿真的XL 算法。Verilog - XL 算法的成功,使Verilog HDL 语言得到迅速发展。基于Verilog HDL 的优越性,IEEE 于1995 年制定了VerilogHDL 的IEEE 标准,即Verilog HDL1364 - 1995。Verilog HDL 语言具有以下特点:基本逻辑门,例如and ,or 和nand 等都内置在语言中。用户定义原语(UDP) 创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。开关级基本结构模型,例如pmos 和nmos 等也被内置在语言中。提供显示语言结构制定设计中的端口到端口的时延及路径和设

    5、计的时序检查。可以用三种不同方式或混和方式对设计建模这些方式包括:行为描述方式使用过程化结构建模;数据流方式使用连续赋值语句方式建模;结构化方式使用门和模块实例语句描述建模。能够描述层次设计,可使用模块实例结构描述任何层次。Verilog HDL 的描述能力能够通过使用编程语言接口(PLI) 机制进一步扩展。PLI 是允许外部函数访问Verilog 模块内信息,允许设计者与模拟器交互的例程集合。设计能够在多个层次相加以描述,从开关级,门级,寄级器传送级(RTL) 到算法级,包括进程和队列级。能够监控拟验证的执行,即模拟验证执行过程这设计的值能够被监控和显示。在行为级描述中,Verilog HD

    6、L 不仅能够在RTL 级上进行设计描述,而且能够在体系结构描述及其算法级行为上进行第2章 设计任务与要求2.1 实验目的与任务学习利用计数器和状态机设计十字路口交通灯控制器。设计一个简单十字路口交通灯控制器。该控制器控制甲乙两道的红、黄、绿三色灯,指挥交通和行人安全通行。复杂十字路口交通灯控制器要比简单交通灯控制器增加一些功能,如倒计时时间显示,左转弯(左拐)、指示灯闪烁及特殊紧急情况的处理等。2.2 参考设计方案下面以下面的十字路口交通灯系统为例,来说明上述功能的实现:东西方向(甲道)循环为绿灯45s, 黄灯5s,左拐灯15s,黄灯5s,红灯40s,黄灯5s南北方向(乙道)循环为红灯65s,

    7、黄灯5s,绿灯20s,黄灯5s,左拐灯15s,黄灯5s其一个工作周期的时间关系示意图如下:红 65s 黄5s 绿20s 黄5s 左拐15s 黄5s 绿 45s 黄 5s 左拐15秒 黄 5s 红40s 黄5s S0 S1 S2 S3 S4 S5 S6 S7 甲道乙道状态表示 可以将一个周期划分成以下8种状态:S0:cnt=0-44:甲道通行,乙道禁止;S1:cnt=45-49:甲道停车,乙道禁止;S2:cnt=50-64;甲道左拐,乙道禁止;S3:cnt=65-69;甲道停车,乙道禁止;S4:cnt=70-89;甲道禁止,乙道通行;S5:cnt=90-94;甲道禁止,乙道停车;S6:cnt=9

    8、5-109;甲道禁止,乙道左拐;S7:cnt=110-114;甲道禁止,乙道停车;具体实现可采用VHDL/Verilog 硬件描述语言设计。 第3章 设计说明3.1 设计思路根据交通灯控制器要实现的功能,考虑用两个并行执行的always模块(两个进程)来分别控制甲道和乙道两个方向的4盏灯。这两个always模块使用同一个时钟信号,以进行同步,也就是说,两个进程的敏感信号是同一个。每个always模块控制一个方向的4种灯按如下顺序点亮,并往复循环:甲道:绿灯黄灯左拐灯黄灯红灯黄灯。乙道:红灯黄灯绿灯黄灯左拐灯黄灯。每种灯亮的时间采用一个减法计数器进行计数,计数器用同步预置法设计,这样只需改变预置

    9、数据,就能改变计数器的模,因此每个方向只要一个计数器进行计时即可。为便于显示灯亮的时间,计数器的输出均采用BCD码,显示由4个数码管来完成,甲道方向和乙道方向各用两个数码管。总体思想可分为以下三个模块:1) 频率转换模块这个模块的基本功能就是将DE2-70实验板上的50MHz的晶振转换为1Hz的时钟信号,主要方法是通过递归来降低频率,为了使时钟信号更加准确,本次实验使用实验板内部自带的晶振信号。2)LED显示模块这个模块的基本功能就是将每条通道四位BCD码倒计时转换为七段码显示在实验板的数码管上,主要方法是通过七段码的基本分配方式。3)顶层模块这个模块包含状态分配模块,初始化倒计时以及状态转换

    10、模块三个功能。其中,状态分配使用八位BCD码初始化每个状态的时间,初始化倒计时分别对两个通道BCD码的时间进行倒计时,状态转换是用于对时间倒计时结束后分配交通灯的下一个状态。总流程图:3.2 模块介绍(1) 状态分配模块:(甲乙两道除预置数及顺序不同,其余均相同)流程描述:首先将EN开关置1,处于清除功能,显示及亮灯情况不改变,再将EN置为0,处于开始状态,开始分配状态,包括每个状态的时间长度分配和每个道路的亮灯顺序分配。(2)倒计时及状态转换模块:流程描述:首先将EN开关置1,处于清除功能,再将EN置为0,处于开始状态,各个道路根据已分配的状态进行,通过灯的变化表示红灯,绿灯,黄灯,左拐灯的

    11、变化,同时两块LED显示板会显示各个状态的倒计时情况,当倒计时为0,进入下一状态,将所亮的灯以及时长改为预设值,重新开始倒计时,否则时间减1,循环判断。下表为该控制芯片实现基本功能状态转换表:第4章 Verilog HDL源程序module Traffic(CLK,EN,LAMPA,LAMPB,ACOUNT,BCOUNT,dis);/顶层模块input CLK;/同步时钟信号, input EN;/ 使能信号,为1的话,则控制器开始工作output13:0 ACOUNT,BCOUNT;output3:0 LAMPA,LAMPB; output 3:0dis;/清除小数点assign RST=1

    12、/频率使能端设为1,分频模块一直执行clk_1hz clk (CLK,RST,clk_1Hz);/分频模块,将50MHz分频为1Hzhex_7seg h7 (numa7:4,ACOUNT13:7); hex_7seg h6 (numa3:0,ACOUNT6:0); /显示甲道时间倒数hex_7seg h5 (numb7:4,BCOUNT13:7);hex_7seg h4 (numb3:0,BCOUNT6:0); /显示乙道时间倒数reg7:0 numa,numb; /八位BCD码倒计时regtempa,tempb; /控制是否亮灯reg2:0 counta,countb; /控制亮灯的顺序r

    13、eg7:0 ared,ayellow,agreen,aleft,bred,byellow,bgreen,bleft; /各状态的时间reg3:0 LAMPA,LAMPB; /控制甲乙两道方向的亮灭,03分别控制左拐通行,绿灯,黄灯,红灯四盏灯reg3:0 dis; /用于去除LED小数点always (EN) if(!EN) /当使能信号为0,重新设置计数器begin /设置各种灯的计数器的预置数ared =8b; /甲道红灯40 秒ayellow =8b; /甲道黄灯5 秒agreen =8b; /甲道绿灯45 秒aleft =8b; /甲道左转灯15 秒bred =8b; /乙道红灯65

    14、秒byellow =8b; /乙道黄灯5 秒bleft =8b; /乙道绿灯15 秒bgreen =8b; /乙道左转灯20 秒dis=4b1111;/去除小数点end always (posedge clk_1Hz) /该进程控制甲道的四种灯begin if(EN) begin if(!tempa) begin tempa=1; case(counta) /控制亮灯的顺序 0: begin numa=agreen; LAMPA=4; counta=1;end 1: begin numa=ayellow; LAMPA=2; counta=2;end 2: begin numa=aleft; L

    15、AMPA=8; counta=3;end 3: begin numa=ayellow; LAMPA=2; counta=4;end 4: begin numa=ared; LAMPA=1; counta=5;end 5: begin numa=ayellow; LAMPA=2; counta=0; end default: LAMPA1) if(!numa3:0)/如果个位减至1,十位减1,个位变为9 begin numa3:0=9; numa7:4=numa7:4-1; end else numa3:0=numa3:0-1; if(numa=2) /倒计时显示至1 (tempa置0后,下1秒

    16、状态才能改变,所以要提 tempa=0; / 前1秒,置tempa为0) end end else begin LAMPA=4b0001; counta=0; tempa=0; end end always (posedge clk_1Hz) /该进程控制乙道的四种灯begin if (EN) begin if(!tempb) begin tempb=1; case (countb) /控制亮灯的顺序 0: begin numb=bred; LAMPB=1; countb=1;end 1: begin numb=byellow; LAMPB=2; countb=2;end 2:begin n

    17、umb=bgreen; LAMPB=4; countb=3;end 3:begin numb=byellow; LAMPB=2; countb=4;end 4: begin numb=bleft; LAMPB=8; countb=5;end 5: begin numb=byellow; LAMPB=2; countb=0; end default: LAMPB1) if(!numb3:0) /如果个位减至1,十位减1,个位变为9begin numb3:0=9; numb7:4=numb7:4-1; end else numb3:0=numb3:0-1; if(numb=2) /倒计时显示至1(

    18、tempb置0后,下1秒,状态才能改变,所以要tempb=0; 提前1秒,置tempb为0)end end elsebeginLAMPB=4b0001; tempb=0;countb=0; end end endmodule module clk_1hz(CLK, RST, clk_1Hz);/ /分频模块input CLK, RST;output clk_1Hz;wire clk_1MHz, clk_100KHz, clk_10KHz, clk_1KHz, clk_100Hz, clk_10Hz; divide_by_50 d6 (clk_1MHz, CLK, RST); divide_by

    19、10 d5 (clk_100KHz, clk_1MHz, RST); divide_by_10 d4 (clk_10KHz, clk_100KHz, RST); divide_by_10 d3 (clk_1KHz, clk_10KHz, RST); divide_by_10 d2 (clk_100Hz, clk_1KHz, RST); divide_by_10 d1 (clk_10Hz, clk_100Hz, RST); divide_by_10 d0 (clk_1Hz, clk_10Hz, RST);endmodulemodule divide_by_10 (Q, CLK, RST); /

    20、分频模块 input CLK,RST; output Q; reg Q; reg 2:0 count; always (posedge CLK or negedge RST)begin if (RST) begin Q = 1b0; count = 3b000; end else if (count 4) begin count = count + 1b1; end else begin count = 3b000; Q = Q; endendendmodulemodule divide_by_50 (Q, CLK, RST); /分频模块 input CLK, RST; output Q;

    21、reg Q; reg 4:0 count; always (posedge CLK or negedge RST)begin if (RST) begin Q = 1b0; count = 5b00000; end else if (count 24) begin count = count + 1b1; end else begin count = 5b00000; Q = Q; end endendmodulemodule hex_7seg (hex_digit, seg); / 七段显示译码器input 3:0 hex_digit;output 6:0 seg;reg 6:0 seg;a

    22、lways (hex_digit) case(hex_digit)4h0: seg = 7h3F;4h1: seg = 7h06; / -a- 4h2: seg = 7h5B; / | |4h3: seg = 7h4F; / f b 4h4: seg = 7h66; / | | 4h5: seg = 7h6D; / -g-4h6: seg = 7h7D; / | |4h7: seg = 7h07; / e c4h8: seg = 7h7F; / | |4h9: seg = 7h6F; / -d-4ha: seg = 7h77; 4hb: seg = 7h7C; 4hc: seg = 7h39;

    23、4hd: seg = 7h5E;4he: seg = 7h79;4hf: seg = 7h71; endcaseendmodule 第5章 功能仿真5.1 功能仿真介绍基本概念又称为前仿真(Pre-layout Simulation)。主要目的主要目的是确定一个设计是否实现了预定的功能(或者说设计意图),是证明设计功能正确性的过程。前仿真也叫RTL级行为仿真,功能仿真,目的是分析电路的逻辑关系的正确性,仿真速度快,可以根据需要观察电路输入输出端口和电路内部任一信号和寄存器的波形。所处状态综合布局布线完成之前对电路进行的仿真是比较理想的仿真,并不包含任何物理信息如寄生效应、互连延迟等,称作“前仿

    24、真”,也属于功能仿真。5.2 功能仿真结果 第6章 时序仿真6.1 时序仿真介绍时序仿真就是接近器件运行特性的仿真,仿真文件中已包含器件硬件特性参数,仿真精度高,但时序仿真的仿真文件必须来自针对具体器件的适配器。综合后得到的EDIF等网表文件通常作为FPGA适配器的输出文件,产生的仿真网表文件中包含了精确的硬件延迟信息。一句话概括就是,时序仿真就是相当于对做好的硬件进行硬件测试,看能否达到要求。 6.2 时序仿真结果由于是纳秒级别,CLK的频率是1Hz,纳秒过于小,因此看不出LAMPA和LAMPB的变化。第7章 管脚分配名称类型管脚编号对应实体备注EnInputPIN_AB25SW2使能信号,

    25、为1的话,则控制器开始工作CLKInputPIN_AD15CLK_5050MHz时钟信号ACOUNT13OutputPIN_G1HEX7_D6显示甲道时间倒数的七段显示器ACOUNT12OutputPIN_H3HEX7_D5ACOUNT11OutputPIN_H2HEX7_D4ACOUNT10OutputPIN_H1HEX7_D3ACOUNT9OutputPIN_J2HEX7_D2ACOUNT8OutputPIN_J1HEX7_D1ACOUNT7OutputPIN_K3HEX7_D0ACOUNT6OutputPIN_E4HEX6_D6ACOUNT5OutputPIN_F4HEX6_D5ACOU

    26、NT4OutputPIN_G4HEX6_D4ACOUNT3OutputPIN_H8HEX6_D3ACOUNT2OutputPIN_H7HEX6_D2ACOUNT1OutputPIN_H4HEX6_D1ACOUNT0OutputPIN_H6HEX6_D0BCOUNT13OutputPIN_K5HEX5_D6显示乙道时间倒数的七段显示器BCOUNT12OutputPIN_K4HEX5_D5BCOUNT11OutputPIN_K1HEX5_D4BCOUNT10OutputPIN_L3HEX5_D3BCOUNT9OutputPIN_L2HEX5_D2BCOUNT8OutputPIN_L1HEX5_D1

    27、BCOUNT7OutputPIN_M3HEX5_D0BCOUNT6OutputPIN_M2HEX4_D6BCOUNT5OutputPIN_M1HEX4_D5BCOUNT4OutputPIN_N3HEX4_D4BCOUNT3OutputPIN_N2HEX4_D3BCOUNT2OutputPIN_P3HEX4_D2BCOUNT1OutputPIN_P2HEX4_D1BCOUNT0OutputPIN_P1HEX4_D0LAMPA3OutputPIN_AJ7LEDR17甲道左拐通行LAMPA2OutputPIN_AD8LEDR16甲道绿灯LAMPA1OutputPIN_AD9LEDR15甲道黄灯LAM

    28、PA0OutputPIN_AC11LEDR14甲道红灯LAMPB3OutputPIN_AC13LEDR10乙道左拐通行LAMPB2OutputPIN_AD14LEDR9乙道绿灯LAMPB1OutputPIN_AH3LEDR8乙道黄灯LAMPB0OutputPIN_AJ2LEDR7乙道红灯dis3OutputPIN_L6HEX4_DP去除小数点dis2OutputPIN_K6HEX5_DPdis1OutputPIN_K2HEX6_DPdis0OutputPIN_G2HEX7_DPRSTUnknownPIN_F2LCD_RS频率模块使能端第8章 设计结果程序下载到实验板后,进行实际的测试。使能端E

    29、N为sw2,左右的LED显示屏分别显示甲道和乙道的信息,LEDR1714分别表示甲道红灯、黄灯、绿灯及左拐通行,LEDR107表示乙道红灯、黄灯、绿灯及左拐通行,以下为具体设计结果:1复位键EN打开:显示屏没有变化。 2.关闭复位键:可以注意到状态立即分配,进入第一个状态,甲道45秒绿灯,乙道65秒红灯,同时计时开始,LEDR16,LEDR7亮。3.甲道黄灯5秒,乙道继续红灯:LEDR15,LEDR7亮。4.甲道左拐通行15秒,乙道继续红灯:LEDR17,LEDR7亮。5.甲乙两道均进入黄灯5秒: LEDR15,LEDR8亮。6.甲道进入红灯40秒,乙道进入绿灯20秒:LEDR14,LEDR9

    30、亮。7.甲道继续红灯,乙道黄灯5秒:LEDR14,LEDR8亮。8. 甲道继续红灯,乙道左拐通行15秒: LEDR14,LEDR10亮。9.甲乙两道均进入黄灯5秒:,LEDR15,LEDR8亮。10.一次循环结束,下一循环开始。第9章 总结本次能够成功地使用Verilog设计并仿真出交通灯控制器,离不开自己的努力,同学间的互相合作和老师的指导。通过本次交通灯控制器设计实验,我更好地了解和掌握Verilog语言,虽然期间遇到了很多问题,但在同学和老师的帮助下,一一解决了,并收获了很多关于Verilog语言的知识。这次课程设计让我对数字电路这门课程有了更深的了解,熟知书本知识仅是一部分,我们还应该

    31、学会EDA软件使用,掌握了Verilog设计方法,即分模块分层次的设计方法。以前的数字实验只是针对某一个小的功能设计,而EDA课程设计对我们的总体电路的设计的要求更严格,需要通过翻阅复习以前学过的知识确立了实验总体设计方案,然后逐步细化进行各模块的设计。在设计过程中遇到问题比较多的地方是电路的仿真包括功能仿真和时序仿真,经过多次试验才成功。期间,我获得了很多经验,也吸取了教训,深刻体会到一个小小的细节能够影响整个实验的结果。所以,在以后的学习及程序设计当中,我一定要先弄清要求和原理再去实践,避免不必要的错误。我相信这次的课程设计能在我以后的学习中起到很大的帮助,它不仅让我知道课本知识的重要性,更让我明白合作和实践的重要性。最后再次感谢老师在课程设计的过程中耐心的指导。只有通过扎实的基础和不懈的努力,我们才能不断提高自己,充实自己。第10章 参考文献1、康华光 电子技术基础. 数字部分 第五版 高等教育出版社 2006年2、王金明 Verilog HDL 程序设计教程 人民邮电出版社 2004年专心-专注-专业


    注意事项

    本文(交通灯控制器课程设计报告共29页.doc)为本站会员(奥沙丽水)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!




    宁ICP备18001539号-1

    三一文库
    收起
    展开