EDA交通灯语句全解释(问题补充中有程序,跪求全注释)

EDA交通灯语句全解释(问题补充中有程序,跪求全注释),第1张

这个是veilog语言编辑的,还只是部分的程序吧

module

rglight(clk,clrn,yzflag,flag,LED,t1,t2,q1,q2)

/*--定义了一个rglight模块,估计是控制红灯和绿灯用的,后面是变量--*/

input clk,clrn

/*--定义输入端口,这俩应该是时钟--*/

input [7:0] q1,q2

/*--定义输入端口,8bit数据--*/

output reg yzflag

/*--定义输出端口,目测是黄灯状态控制变量,0/1--*/

output reg[1:0] flag

/*--定义输出端口,也是什么状态,2bit数据--*/

output reg[7:0] LED

/*--定义输出端口,应该用来控制LED灯,8bit--*/

output reg[7:0] t1,t2

/*--定义输出端口,应该是计时相关的变量,8bit,估计用来输出给黄灯控制模块用的--*/

reg[7:0] rtime,gtime,ytime,rtime1='h20,gtime1='h16

/*--红灯、绿灯、黄灯的时间? rtime1赋初值 十六进制20,也就是十进制32,gtime1 十进制22--*/

reg[1:0] z

/*--定义变量z,后面根据z的状态00、01、10、11执行循环--*/

后面是程序的主体 实现的功能大致是倒计时的功能 不断的循环 只是部分程序 我也看不明白

一):设计题目及要求

主干道与乡村公路十字交叉路口在现代化的农村星罗棋布。图2为某十字路口交通灯与传感器运行示意图。设计交通灯控制系统,用以管理十字路口的车辆通行。具体要求:

(1)主干道车辆通行有优先权,当乡间公路无车时,主干道绿灯亮,乡间公路红灯亮,并始终保持主干道车辆通行。

(2)当乡村公路有车、主干道没有车辆时,乡间公路绿灯亮,主干道红灯亮。

(3)当主干道和乡村公路均有车时,按主干道通车60 s,乡村公路通车30 s交替进行。

(4)每次由绿灯亮变为红灯亮和红灯亮变为绿灯亮的转换过程中,要亮5 s时间的黄灯,作为过渡。

(5)用开关代替传感器作检测车辆是否到来的信号,用红、绿、黄三种颜色的发光二极管分别作交通灯。

(6)秒脉冲时基可由外电路引入。

程序

MODULE traffic_lights

TITLE 'zht'

M,C,EN,CLK PIN 11,12,13,7

CR,CG,CY,MR,MG,MY PIN 68,69,70,71,72,73 ISTYPE'REG'// CR,CY,CG为乡村道红、黄、绿灯,MR MG,MY为主干道红、绿、黄灯//

K,D7..D0 NODE ISTYPE'REG'//D5..D0为计数器输出,K控制节拍//

CP,X=.C.,.X.

Q=[CR,CG,CY,MR,MG,MY]

D=[D7..D0]

SET=[D,Q]

Q.OE=!EN

EQUATIONS

K.CLK=CLK

K:=!K

SET.CLK=(CLK&!K)#(CLK&K)

WHEN(M==1)&(C==1) THEN //当乡村路有车时//,

{WHEN(D>=0)&(D<=100)THEN D:=D+1ELSE D:=0//100 进制的计数器// <br/>WHEN(D>=0)&(D<=60)THEN Q:=[1,0,0,0,1,0]//当时间大于0小于60时// <br/>ELSE WHEN(D>=61)&(D<=65)THEN Q:=[0,0,1,0,0,1]//当时间大于60小于65时,转黄灯亮// <br/>ELSE WHEN(D>=65)&(D<=95)THEN Q:=[0,1,0,1,0,0]//当时间大于65小于95时// <br/>ELSE WHEN(D>=95)&(D<=99)THEN Q:=[0,0,1,0,0,1]//当时间大于95小于99时,转黄灯亮// <br/>ELSE Q:=[1,0,0,0,1,0]} //改变节拍,开始新的循环//

ELSE WHEN (M==0)&(C==1) THEN Q:=[0,1,0,1,0,0]//乡村公路有车//

ELSE WHEN (M==1)&(C==0) THEN Q:=[1,0,0,0,1,0]//主干道有车//

ELSE Q:=[1,0,0,0,1,0]//都无车//

TEST_VECTORS

([EN,M,C,CLK]->Q)

[1,X,X,CP]->X//使能测试//

@REPEAT 5{[0,0,0,CP]->X} //功能测试//

@REPEAT 5{[0,1,0,CP]->X}

@REPEAT 10{[0,0,1,CP]->X}

@REPEAT 150{[0,1,1,CP]->X}

END

首先最简单的方法是列出真值表。写出逻辑表达式。然后根据逻辑表达式来写出vhdl程序。在编译=》仿真=》功能分析=》输出延时=》下载程序 1.设计原理

在这个实例中,我们设计一个简单的十字路口交通灯。交通灯分东西和南北两个方向,均通过数码管和指示灯指示当前的状态。设两个方向的流量相当,红灯时间45s,绿灯时间40s,黄灯时间5s.

从交通灯的工作机理来看,无论是东西方向还是南北方向,都是一个减法计数器。只不过计数时还要判断红绿灯情况,再设置计数器的模值。

下表所示为一个初始状态和4个跳变状态。交通灯工作时状态将在4个状态间循环跳变,整个交通灯则完全按照减计数器原理进行设计。

状态 当前计数值 下一个CLOCK到来时新模值

东西方向指示 南北方向指示 东西-南北方向指示 东西方向指示 南北方向指示 东西-南北方向指示

初始 0 0 45 40 红-绿

1 6 1 红-绿 5 5 红-黄

2 1 1 红-黄 40 45 绿-红

3 1 6 绿-红 5 5 黄-红

4 1 1 45 40 红-绿

2.部分程序

library ieee

use ieee.std_logic_1164.all

use ieee.std_logic_unsigned.all

entity traffic is

port(clk, urgency: in std_logic

east_west:buffer std_logic_vector(7 downto 0)--东西方向时钟计数

south_north: buffer std_logic_vector(7 downto 0)--南北方向的时钟计数

led:buffer std_logic_vector(5 downto 0))--交通指示灯

end traffic

architecture arch of traffic is

。。。。。。。

end arch

3.具体设计步骤

1) 建立一个新的工程完成上面的电路设计

2) 编译电路并使用功能仿真来验证设计

3) 引脚配置,如Part I中讨论的,这些配置是确保VHDL代码中输出端口能使用PFGA芯片上连接到LEDR和LEDG的引脚。重新编译项目,并下载到FPGA芯片上。

4) 测试电路的正确性。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7811714.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存