




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
交通灯控制器设计 n应用场合:繁忙的高速路与较少使用的农场路相交 n设计要求:探测器沿着农场路放置,只要有车辆等待着穿 越十字路口,就发出信号C。 交通灯按照如下方式操作:若农场路无车辆,则在高速 路保持绿灯。在探测农场路有车辆,高速路上的交通灯应 由绿到黄,再到红,并允许农场路方向灯变绿,绿灯亮一 段时间,由绿变黄再到红。这时即使还有车辆穿越高速路 ,高速路的绿灯也要亮一段时间 假设:把两个黄灯时间设相同5S 将高速绿灯最短时间和农场 路绿灯最长时间设置为相同10S 仅需一个计数器,能对两个时 间间隔发生信号:一个间隔短、一 个间隔长 理解问题 n确定输入、输出、控制器的状态配置 q输入信号 Reset:将控制器置于初始状态 clk:系统时钟信号 C:探测农场路上两个方向的车辆 q输出信号 HG、HY、HR:分别点亮高速路上的绿灯、黄灯、红灯 FG、FY、FR:分别点亮农场路上的绿灯、黄灯、红灯 转换过程时间显示 q状态 按照输出组合唯一原则,仅有4种不同的输出,因此 控制器有4个不同的状态 HG:高速路亮绿灯(农场路亮红灯) HY :高速路亮黄灯(农场路亮红灯) FG :农场路亮绿灯(高速路亮红灯) FY :农场路亮黄灯(高速路亮红灯) 基于Spartan-3E开发板交通灯控制器设计 n为方便实验,探测器由按键代替。当按下FPGA开 发板上按键时,产生的触发信号相当于检测到农 场路上有车。 n由于FPGA板上led资源有限,农场和高速路上的 交通灯由两个LED管代替,HG状态显示00,HY状 态显示01,FG状态显示10,FY状态显示11 n Spartan-3E开发板有两个7段数码管,显示状态 为转换过程剩余的时间。 系统模块图(硬件电路) n控制器有限状态机将Reset,CLK,TL(相对长时间已到点)和TS(相对 短的时间已经到点)以及经过同步之后的C(people)信号等作为输 入,并产生ST(复位定时器,开始对长和短时间间隔进行计数)信 号 n定时器子系统将Reset,CLK和ST信号作为输入,产生TL和TS为输出 n车辆传感器子系统具有一个异步输入C,而它的输出为C同步信号 n交通灯译码器将编码后的交通灯控制信号转换成不同的信号,分 别驱动独立的交通灯 问题分解 n车辆传感器 n输出译码和交通灯显示 n定时器(短时间间隔TS和长时间间隔TL定时器) n控制器的有限状态机 次态和输出组合逻辑 状态寄存器(n个状态位,其中n由状态编码决定 ) 车辆探测器 n嵌在路上的双掷开关用来判断是否有车辆到达 n因为车辆可在任意时刻到达,车辆探测器是异步工作 的,为了将车辆识别信号同步化,该信号必须通过一 个同步触发器,该触发器由系统时钟控制 车辆探测器(sensor.v模块) n输入信号为clk,reset_n,people,其中people信号来自按 键。 n输出信号为people_valid,表示检测信号有效。 n键盘检测原理:当按键按下时,输入电平由高变低,按键 松开后,输入电平有低变高,如此会产生一个下降沿和一 个上升沿,只要扑捉到这两个沿,就可以确定按键按下。 n键盘防抖原理:在按键被按下的瞬间,由于物理上的原因 ,导致按键在被按键的瞬间的过程中其实是处于高电平和 低电平之间进行抖动,加上本实验的时钟频率很高,容易 产生信号采集错误,导致检测失败,无法得到正确的结果 。若要正确防抖,需要在检测到按键上升沿后延迟一小段 信号在进行上升沿和下降沿检测。 实验三 按键检测实验 交通灯译码器 n使用2:4译码器 交通灯状态显示模块 (segled.v) Spartan-3E开发板上提供两个LED七段数码管,可以显示数字 。开发板上采用的是共阴的,即:低点亮。 在Spartan-3E开发板上LED数码管不是直接连在FPGA上,而是通 过74HC595的8bit的串转并芯片连接到FPGA上的,这样连接的目的 是可以更有效的使用FPGA的IO管脚,然后两个数码管再通过选通 管脚选通。 农场和高速路 上的交通灯4种 状态由两个LED 管代替。 HG状态显示00, HY状态显示01, FG状态显示10, FY状态显示00 交通灯状态显示模块 (segled.v) n输入信号有:clk,reset_n,traffic_state,data_sel_temp ,其中traffic_state为信号灯,直接驱动LED, data_sel_temp为送到两位数码中要显示的时间 n模块输出信号分别为: led_b0,ledb1,led_data,led_oe_n,led_rck,led_srck。 led_b0,led_b1作为选通数码管信号,高电平有效。 led_data,串行输入数据信号 led_oe_n,选通74HC595, 低电平有效。 led_rck,串行数据转并信号 led_srck,数据串行输入 74HC595移位信号。 led1,led2,显示红绿黄灯 间隔定时器 n设计的目的是在ST信号进行设置之后,产生TL和TS信 号。使用一个计数器和外部译码器逻辑。当ST信号为 真时,计数器清零,而当计数器的计数值到达一个适 当的阈值时,外部逻辑就使得TL或TS信号为真。假设 计数到0111时,TS为真,当到达1111时,TL为真 时钟分频与计时模块 (timer.v) n输入信号clk,reset_n,ST,traffic_state.其中ST为计数 器复位后重新启动信号, traffic_state为当前显示状态 n输出信号为TS,TL,data_sel_temp,当TS为1,表示短时 间计时已到,当TL为1,表示长时间计时已到。 data_sel_temp表示定时器剩余的定时时间值(用于显示 )。 时钟分频与计时模块 (timer.v) / purpose : Divide the 66.666667MHZ clk to 1HZ, generate the TS and TL signal 。used for controlling the display time of traffic light module timer( TS, TL, ST, clk, reset_n, traffic_state, data_sel_temp); output TS; output TL; output 7:0 data_sel_temp; reg 7:0 data_sel_temp; input ST; input clk; input reset_n; input 1:0 traffic_state; reg 3:0 value; reg 24:0 counter; reg clk1hz; wire time10s; wire time5s; 时钟分频与计时模块 (timer.v) always(posedge clk or negedge reset_n) begin if(reset_n=1b0) begin counter = 5)?1b1:1b0; assign TL = (value = 10)?1b1:1b0; assign time10s=(traffic_state0=1b0) /绿灯延时10S assign time5s=(traffic_state0=1b1) /黄灯延时5S reg time10s_delay; reg time5s_delay; always(negedge reset_n or posedge clk) begin if(reset_n=1b0) begin time10s_delay=0; time5s_delay=0; end else begin time10s_delay=time10s; time5s_delay=time5s; end end reg 7:0 data_sel_temp1;/根据状态转换设定定时时间 always (negedge reset_n or posedge clk) begin if(reset_n=1b0) data_sel_temp1=8h10; else if(time10s_delay) data_sel_temp1=8h10; else if(time5s_delay) data_sel_temp1=8h05; else data_sel_temp1=8h00; end reg ST_delay; /对输入ST信号进行延迟两个周期 always(negedge reset_n or posedge clk) begin if(reset_n=1b0) ST_delay=0; else ST_delay=ST; end reg ST_delay1; always(negedge reset_n or posedge clk) begin if(reset_n=1b0) ST_delay1=0; else ST_delay1=ST_delay; end always(negedge reset_n or posedge clk1hz or posedge ST_delay1) begin if(reset_n=1b0) data_sel_temp=8h10; else if(ST_delay1) /定时器启动信号,根据状态设定初始值 data_sel_temp=data_sel_temp1; else if(data_sel_temp=8h00) data_sel_temp=8h00; else if(data_sel_temp=8h10) data_sel_temp=8h10-8h07; else data_sel_temp=data_sel_temp-1b1; end /原因对两个数码管显示为16进制,显示10H后,下一个为09H endmodule 交通灯状态机的设计 n其中people_valid是作为系统检测到 的信号C(即按键)有效的提示,提供 给FSM模块作为输入。 nTS:相对短的时间已经到点。 nTL:相对长的时间已经到点。 该系统的核心部分,为整个系统逻 辑功能实现的模块,是一有限状态控 制器。 输入信号为 clk,reset_n,people_valid,TS,TL 。 输出信号: traffic_state1:0,即交通灯的工作状态,作为显示模块和 定时模块的输入。 ST:复位定时器,并开始对长和短时间间隔进行计数。交通灯 一切换状态,立刻置ST为高电平,是计时器复位并重新计时。 交通灯状态机的设计 n使用外部计数器后的米利型状态图尝试 Reset TS TS / ST (TLC) TLC / ST TS TS / ST (TL+C) TL+C / ST HG FG FYHY 状态机说明:系统启动对 计数器进行复位,并设置长计 数时间到(TL=1),当检测到 people(C)信号,将ST置1对 计数器进行复位,HG转换为HY ,当计数到短时间间隔,置ST 为1开始进行长时间计数,转 换到FG,若TL为1或people(C )=0,退出到FY,最后若TS为 1,短时间计时到,切换到HG ,并且ST置1,对计时器复位 并计数到TL。 次态逻辑和输出 n有限状态机具有6个输入:Reset、 C、TL、TS以及当前状态位(Q1和Q0 ) n有限状态机具有7个输出:2个次态 位P1、P0, ST信号,H1,0 (编码后 的高速路交通灯信号)和F1,0 (编码 后的农场路交通灯信号) n采用随机状态编码:HG=00,HY=10 ,FG=01,FY=11。将这些状态填充 至状态表,就能得到编码后的状态 表,就可产生次态逻辑和输出逻辑InputsPresent StateNext StateOutputs CTLTSSTHF 0HG(00)HG(00)00010 0HGHG00010 11HGHY10010 0HY(10)HY(10) 00110 1HYFG10110 10FG(01)FG (01) 010 00 0FGFY110 00 1FGFY110 00 0FY(11)FY (11) 010 01 1FYHG110 01 Reset TS TS / ST (TLC) TLC / ST TS TS / ST (TL+C) TL+C / ST HG FG FYHY 由状态图到状态表 InputsPresent StateNext StateOutputs CTLTSSTHF 0HGHG00010 0HGHG00010 11HGHY10010 0HYHY00110 1HYFG10110 10FGFG010 00 0FGFY110 00 1FGFY110 00 0FYFY010 01 1FYHG110 01 Reset TS TS / ST (TLC) TLC / ST TS TS / ST (TL+C) TL+C / ST HG FG FYHY 交通灯状态机的设计 / purpose : Finite state machine used for implementing the logic of traffic light module fsm_ctrl(people_valid,clk,reset_n,TS,TL,ST,traffic_state); Input people_valid; input TS; input TL; input clk; input reset_n; output ST; output 1:0 traffic_state; reg 1:0 traffic_state; reg 1:0 fsm_next_state; reg ST; reg people_check; parameter HG=2b00, HY=2b01, FG=2b10, FY=2b11; /traffic light state control always(posedge clk or negedge reset_n) begin if (reset_n=1b0) traffic_state=HG; else traffic_state=fsm_next_state; end always(traffic_state or TL or TS or people_check) begin case(traffic_state) HG: if (people_check else fsm_next_state=HG; HY: if (TS) fsm_next_state=FG; else fsm_next_state=HY; FG: if (TL|(!people_check) fsm_next_state=FY; else fsm_next_state=FG; FY: if(TS) fsm_next_state=HG; else fsm_next_state=FY; endcase /end case end /end always wire ST_temp; assign ST_temp=(traffic_state=HG) always (posedge clk or negedge reset_n) begin if (reset_n=1b0) ST=0; else ST=ST_temp; end wire check_rst; assign check_rst=(reset_n=1b0|(traffic_state=FY); always (posedge check_rst or posedge people_valid) begin if (check_rst) people_check =0; else people_check =1; /people_check is used for hold the /information people_valid deteced by sensor end endmodule 顶层模块traffic_top.v 输入信号有:clk,reset_n,people clk:系统时钟,频率为66.666667MHZ。 reset_n:系统异步复位信号,将控制器置于初始状态,低电平有效 。People: 检测信号输入,由外部按键按下产生一低电平信号提供 顶层模块traffic_top.v module traffic_top(clk,reset_n, people, led_data, led_oe_n, led_srck, led_rck, led_b0, led_b1, led1, led2); input cl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 申庭主管护师课件
- 甲状腺术后护理常规
- 倍力桥 教学课件
- 江苏南通2020-2022年中考满分作文54篇
- 剪羊毛课件教学设计
- 用水彩笔点叶子颜色课件
- 生鸡蛋课件教学课件
- 生鲜货源管理培训课件
- 生活工作安全知识培训课件
- 胆固醇性胸膜炎护理查房记录
- 肿瘤药物配制注意事项
- GB/T 22126-2025物流中心作业通用规范
- 2025至2030年中国光接入系统设备行业发展前景及投资战略咨询报告
- 土地 赠与协议书
- 非遗数字技术课件
- 2024-2025学年吉林省吉林十二中高一(下)期末数学试卷(含答案)
- 2025年全国招标采购专业技能大赛(央企组)复习题及答案-竞赛类
- 疾病诊断讲课
- 手术室术中无菌技术课件
- 2025年食品安全培训考试试题(含答案)
- 2025新《治安管理处罚法》解读
评论
0/150
提交评论