收藏 分销(赏)

EDA交通灯程序.docx

上传人:a199****6536 文档编号:2245501 上传时间:2024-05-23 格式:DOCX 页数:7 大小:22.32KB 下载积分:6 金币
下载 相关 举报
EDA交通灯程序.docx_第1页
第1页 / 共7页
EDA交通灯程序.docx_第2页
第2页 / 共7页


点击查看更多>>
资源描述
EDA交通灯程序 EDA交通灯程序 编辑整理: 尊敬的读者朋友们: 这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望(EDA交通灯程序)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。 本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为EDA交通灯程序的全部内容。 交通灯控制器 一 实验目的 1. 了解交通灯的亮灭规律。 2. 了解交通灯控制器的工作原理. 3. 熟悉VHDL语言编程,了解实际设计中的优化方案。 二 硬件需求 1.EDA/SOPC实验箱一台。 三 实验原理 交通灯的显示有很多方式,如十字路口、丁字路口等,而对于同一个路口又有很多不同的显示要求,比如十字路口,车子如果只要东西和南北方向通行就很简单,而如果车子可以左右转弯的通行就比较复杂,本实验仅针对最简单的南北和东西直行的情况。 要完成本实验,首先必须了解交通路灯的亮灭规律。本实验需要用到实验箱上交通灯模块中的发光二极管,即红、黄、绿各三个。依人们的交通常规,“红灯停,绿灯行,黄灯提醒"。其交通灯的亮灭规律为:初始态是两个路口的红灯全亮,之后东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。 在实验中使用8个七段码管中的任意两个数码管显示时间。东西路和南北路的通车时间均设定为20s.数码管的时间总是显示为19、18、17……2、1、0、19、18……。在显示时间小于3秒的时候,通车方向的黄灯闪烁。 四 实验内容 本实验要完成任务就是设计一个简单的交通灯控制器,交通灯显示用实验箱的交通灯模块和七段码管中的任意两个来显示。系统时钟选择时钟模块的1KHz时钟,黄灯闪烁时钟要求为2Hz,七段码管的时间显示为1Hz脉冲,即每1s中递减一次,在显示时间小于3秒的时候,通车方向的黄灯以2Hz的频率闪烁。系统中用S1按键进行复位。 五 实验步骤 完成交通灯控制器的实验步骤如下: 1.首先打开Quartus II软件,新建一个工程,并新建一个VHDL File。 2.按照自己的想法,编写VHDL程序. 3.对自己编写的VHDL程序进行编译并仿真。 4.仿真无误后,根据附录一的引脚对照表,对实验中用到时钟、七段码显示及交通灯模块的LED对应的FPGA引脚进行管脚绑定,然后再重新编译一次。 5.用下载电缆通过JTAG接口将对应的sof文件下载到FPGA中。 6.观察交通灯控制器的工作是否满足实验要求。 ==================================== 源代码如下 ==================================== library ieee; use ieee。std_logic_1164.all; use ieee.std_logic_arith.all; use ieee。std_logic_unsigned.all; ——-—--—--———--——-————-——————--—-----------—-—-—-—--———--———————--——- entity exp18 is port( Clk : in std_logic; -—时钟输入 Rst : in std_logic; ——复位输入 R1,R2 : out std_logic; -—红灯输出 Y1,Y2 : out std_logic; ——黄灯输出 G1,G2 : out std_logic; ——绿灯输出 Display : out std_logic_vector(7 downto 0); ——七段码管显示输出 SEG_SEL : buffer std_logic_vector(2 downto 0) -—七段码管扫描驱动 ); end exp18; ———----——---————-—--—————-—--———-—--—--—--—---——-—----—-—---——-——--— architecture behave of exp18 is signal Disp_Temp : integer range 0 to 15; signal Disp_Decode : std_logic_vector(7 downto 0); signal SEC1,SEC10 : integer range 0 to 9; signal Direction : integer range 0 to 15; signal Clk_Count1 : std_logic_vector(9 downto 0); —-产生0.5Hz时钟的分频计数器 signal Clk1Hz : std_logic; signal Dir_Flag : std_logic; --方向标志 begin process(Clk) begin if(Clk’event and Clk=’1’) then if(Clk_Count1<1000) then Clk_Count1<=Clk_Count1+1; else Clk_Count1<=”0000000001”; end if; end if; end process; Clk1Hz〈=Clk_Count1(9); process(Clk1Hz,Rst) begin if(Rst=’0') then SEC1〈=0; SEC10<=2; Dir_Flag〈='0’; elsif(Clk1Hz'event and Clk1Hz='1') then if(SEC1=0) then SEC1〈=9; if(SEC10=0) then SEC10<=1; else SEC10〈=SEC10-1; end if; else SEC1<=SEC1—1; end if; if(SEC1=0 and SEC10=0) then Dir_Flag〈=not Dir_Flag; end if; end if; end process; process(Clk1Hz,Rst) begin if(Rst='0') then R1<='1'; G1〈=’0'; R2〈='1’; G2<='0’; else ——正常运行 if(SEC10>0 or SEC1〉3) then if(Dir_Flag='0') then —-横向通行 R1<=’0’; G1<=’1'; R2〈='1'; G2<=’0’; else R1〈=’1'; G1〈='0’; R2<=’0'; G2〈='1’; end if; else if(Dir_Flag='0') then -—横向通行 R1<='0'; G1〈=’0'; R2<=’1'; G2<='0'; else R1<=’1’; G1〈=’0’; R2<=’0’; G2〈='0'; end if; end if; end if; end process; process(Clk1Hz) begin if(SEC10〉0 or SEC1>3) then Y1〈=’0'; Y2<='0’; elsif(Dir_Flag=’0’) then Y1<=Clk1Hz; Y2〈='0’; else Y1<=’0'; Y2<=Clk1Hz; end if; end process; process(Dir_Flag) begin if(Dir_Flag=’0’) then ——横向 Direction〈=10; else --纵向 Direction〈=11; end if; end process; process(SEG_SEL) begin case (SEG_SEL+1) is when ”000”=>Disp_Temp<=Direction; when "001"=〉Disp_Temp<=Direction; when ”010”=>Disp_Temp〈=SEC10; when "011"=〉Disp_Temp<=SEC1; when "100"=〉Disp_Temp<=Direction; when ”101"=>Disp_Temp〈=Direction; when "110”=>Disp_Temp〈=SEC10; when "111"=>Disp_Temp<=SEC1; end case; end process; process(Clk) begin if(Clk’event and Clk=’1') then —-扫描累加 SEG_SEL<=SEG_SEL+1; Display<=Disp_Decode; end if; end process; process(Disp_Temp) --显示转换 begin case Disp_Temp is when 0=〉Disp_Decode〈="00111111”; -—’0’ when 1=〉Disp_Decode<=”00000110"; --’1' when 2=>Disp_Decode<=”01011011”; --'2' when 3=〉Disp_Decode<=”01001111”; --’3' when 4=〉Disp_Decode<=”01100110”; -—'4' when 5=>Disp_Decode<="01101101”; --’5’ when 6=>Disp_Decode〈=”01111101”; ——'6' when 7=〉Disp_Decode<="00000111”; ——'7’ when 8=>Disp_Decode<=”01111111"; ——'8’ when 9=>Disp_Decode〈=”01101111”; --’9' when 10=>Disp_Decode〈=”01001000"; —-'=' when 11=〉Disp_Decode<=”00010100”; -—'||' when others=〉Disp_Decode〈=”00000000”; —-全灭 end case; end process; end behave;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 中考

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服