您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 设计及方案 > pld交通灯实验报告含源程序
一、实验目的1.设计一个简易交通灯控制器,并在实验装置上验证所设计的电路;2.学习层次化设计方法。二、实验要求位于十字路口的交通灯,在A方向和B方向各有红、黄、绿三盏灯,亮灭顺序如表所示,1表示亮,0表示灭,假设灯亮灭时间均为1S。本实验设计输入方法、验证器件不限,最终需建立一个元件符号。A方向B方向红灯黄灯绿灯红灯黄灯绿灯100001100010010010010100001100010100010010100010思考题:如何实现各灯亮灭时间可调?三、模块电路设计拟采用层次化设计方法完成各个模块的设计,即底层电路用VHDL语句实现功能,顶层电路把各个模块连接起来,构成整个交通灯控制。1、分频器1.1、10M的分频器底层电路VHDL程序如下:libraryieee;--库useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;--程序包entitydiv_10Mis--实体port(clk:instd_logic;--输入频率端口clkdivout:outstd_logic);end;architecturef1ofdiv_10Mis--结构体signalcnt:std_logic_vector(23downto0);signalclk_temp:std_logic;constantm:integer:=4999999;beginprocess(clk)--进程的敏感信号为输入频率clkbeginifclk'eventandclk='1'then--如果检测到clk的上升沿嵌套if语句ifcnt=mthenclk_temp=notclk_temp;--如果cnt=m,则cnt归零cnt=(others='0');elsecnt=cnt+1;--否则cnt=cnt+1endif;endif;divout=clk_temp;endprocess;endf1;1.2、10M的分频器顶层模块如下:2、计数器2.1、设计一个8进制计数器底层VHDL语句如下:LIBRARYieee;--库USEieee.std_logic_1164.ALL;USEieee.std_logic_unsigned.ALL;--程序包ENTITYcount_8IS--实体PORT(clk:INstd_logic;q:OUTstd_logic_vector(2DOWNTO0));END;ARCHITECTUREoneOFcount_8IS--定义此实体count_8的结构体名是onesignalq1:std_logic_vector(2DOWNTO0);BEGINPROCESS(clk)BEGINifclk'eventandclk='1'thenq1=q1+1;ENDIF;ENDPROCESS;q=q1;END;2.2、8进制计数器顶层模块:2.3、计数器仿真结果如下:增计数器从0计数到7然后循环输出3个二进制数从000到110。3、译码器3.1、3-6译码器底层VHDL语句如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitygate3_6isport(a:instd_logic_vector(2downto0);y:outstd_logic_vector(5downto0));endgate3_6;architectureg1ofgate3_6isbeginwithaselecty=100001when000,——a=000时将100001赋给y,以下各条语义雷同100010when001,010010when010,010100when011,001100when100,010100when101,010010when110,100010when111;endg1;3.2、3-6译码器顶层模块:3.3、3-6译码器仿真结果如下:三、顶层整体电路:四、管脚分配五、实验现象A方向红灯亮时,B方向绿灯亮;间隔1sB方向绿灯灭黄灯亮;再间隔1SA方向的黄灯亮,B分方向黄灯亮,1S之后B方向红灯亮;1S后A方向绿灯亮,B方向黄灯亮;1S后A方向黄灯亮,B方向红灯亮,之后1S黄灯亮;1S后A方向红灯亮,B方向黄灯亮。循环闪烁,形成十字路口的交通灯闪烁。
本文标题:pld交通灯实验报告含源程序
链接地址:https://www.777doc.com/doc-2851400 .html