收藏 分销(赏)

实验八-交通灯控制电路的设计.doc

上传人:快乐****生活 文档编号:2269654 上传时间:2024-05-24 格式:DOC 页数:12 大小:163.54KB 下载积分:8 金币
下载 相关 举报
实验八-交通灯控制电路的设计.doc_第1页
第1页 / 共12页
实验八-交通灯控制电路的设计.doc_第2页
第2页 / 共12页


点击查看更多>>
资源描述
实验八 交通灯控制电路的设计 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 2 个人收集整理 勿做商业用途 · 可编程逻辑设计 ——实验八报告 学院:物理与信息工程学院 专业:通信工程 年级:2007级 班级:二班 学号:110700221 姓名:林明明 指导老师:杨秀芝 实验八 交通灯控制电路的设计 一、实验目的: 进一步学习复杂数字电路的设计方法,提高利用硬件描述语言进行电路设计的技巧和熟练程度。 二、实验要求及原理: 1、 满足图1顺序工作流程。图中设南北方向的红、黄、绿灯分别为NSR、NSY、NSG,东西方向的红、黄、绿灯分别为EWR、EWY、EWG。它们的工作方式有些必须是并行进行的,即南北方向绿灯亮,东西方向红灯亮;南北方向黄灯亮,东西方向红灯亮;南北方向红灯亮,东西方向绿灯亮;南北方向红灯亮,东西方向黄红灯亮。 南北方向绿灯亮,东西方向红灯亮(5t) 南北方向黄灯亮,东西方向红灯亮(1t) 南北方向红灯亮,东西方向绿灯亮(5t) 南北方向红灯亮,东西方向黄灯亮(1t) 图1 交通灯顺序工作流程图 2、 应满足两个方向的工作时序:即东西方向亮红灯时间应等于南北方向亮黄、绿灯时间之和,南北方向亮红灯时间应等于东西方向亮黄、绿灯时间之和。时序流程图2所示。 图2中,假设每个单位时间为3秒,则南北、东西方向绿、黄、红灯亮时间分别15秒、3秒、18秒,一次循环为36秒。其中红灯亮的时间为绿灯、黄灯亮的时间之和。 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 5 6 NSG NSY NSR EWR EWG EWY t 5t 6t t 图2 交通灯时序工作流程图 3、 十字路口要有数字显示,作为时间提示,以便人们更直观地把握时间。具体为:当某方向红灯亮时,置显示器为某值,然后以每秒减1计数方式方式工作,直至减到数为“0”,十字路口红、绿灯交换,一次工作循环结束,进入下一步某方向地工作循环。 例如:当南北方向从黄灯转换成红灯时,置南北方向数字显示为24,并使数显计数器开始减“1”计数,当减到“0”,时,此时红灯灭,而南北方向的绿灯亮;同时,东西方向的红灯亮,并置东西方向的数显为24。 三、实验内容: 1、根据实验要求及原理1、2画出交通指示灯控制电路原理框图。 提示:两个方向的控制电路可以共用一个24进制计数器实现。 2、用VHDL硬件描述语言层次化设计方法进行顶层文件和各模块电路的设计。 3、用QuartusII对设计进行编译、综合、仿真,给出仿真波形和时序分析数据(不包括数码显示部分)。 4、通过QuartusII集成环境,将设计下载到实验电路上进行硬件测试。 管脚锁定: clk: clk1 43 clk1 start: PIO23 30 SW1 NSG PIO19 29 LED12 NSY PIO20 28 LED11 NSR PIO21 27 LED10 EWG PIO22 LED3 EWY PIO12 LED2 EWR LED1 5、画出完整的交通灯控制电路原理框图(含数码显示部分)。 6、修改上述内容2的设计,增加数码显示部分。 注意:两方向的计数要求分别显示在数码管1、2和数码管7、8上。 7、用MAX_plusⅡ对设计进行编译、综合、仿真,给出仿真波形和时序分析数据. 8、再次将设计下载到实验电路上进行硬件测试. 新增管脚锁定: A(6): PIO6 11 SEG g A(5): PIO5 10 SEG f A(4): PIO4 9 SEG e A(3): PIO3 8 SEG d A(2): PIO2 7 SEG c A(1): PIO1 6 SEG b A(0): PIO0 5 SEG a *S(2): 80 *S(1): 79 *S(0): 78 四、思考题: 1、控制电路除用有限状态机实现外,还可以采用什么方法实现? 2、如果增加夜间显示(即全部黄灯闪烁),电路该怎样设计? 实验结果: 交通灯控制电路原理框图: 顶层电路的VHDL描述: library ieee; use ieee.std_logic_1164。all; use ieee.std_logic_unsigned。all; entity traffic is port(clk,start:in std_logic; NSG,NSY,NSR,EWG,EWY,EWR:out std_logic; ledNS,ledEW:out std_logic_vector(7 downto 0) ); end; architecture behav of traffic is component NSEW port(clk,start:in std_logic; NSG,NSY,NSR,EWG,EWY,EWR:out std_logic ); end component; component led7s port(clock,start:in std_logic; ledns,ledew:out std_logic_vector(7 downto 0) ); end component; signal clk0,clk1,clk2,clknsr,clkewr:std_logic; begin u1:NSEW port map(clk=〉clk,start=>start, NSG=〉NSG,NSY=>NSY,NSR=〉NSR, EWG=〉EWG,EWY=>EWY,EWR=〉EWR); u2:led7s port map(clock=>clk,start=>start, ledns=〉ledNS,ledew=〉ledEW); end; 各模块电路的VHDL描述: 模块clock的VHDL描述—- library ieee; use ieee.std_logic_1164。all; use ieee。std_logic_unsigned.all; entity clock is port(clk,start:in std_logic; clk0,clk1,clk2:out std_logic ); end clock; architecture behav of clock is begin process(clk,start) variable cql:std_logic_vector(6 downto 0); begin if clk’event and clk=’1’ then if start=’1'then if cql<48 then cql:=cql+1; else cql:=(others=〉’0’); end if; if cql<24 then clk1〈=’1';else clk1〈='0’; end if; if cql〉23 and cql<48 then clk2〈='1’;else clk2<=’0’; end if; end if; end if; end process; end; 模块cnt10的VHDL描述—- LIBRARY IEEE; USE IEEE.STD_LOGIC_1164。ALL; USE IEEE。STD_LOGIC_UNSIGNED。ALL; ENTITY CNT10 IS PORT(CLK,EN,LD:IN STD_LOGIC; CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); D:IN STD_LOGIC_VECTOR(3 DOWNTO 0); COUT:OUT STD_LOGIC ); END CNT10; ARCHITECTURE BEHAV OF CNT10 IS BEGIN PROCESS(CLK,EN) VARIABLE CQI :STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF CLK’EVENT AND CLK=’1' THEN IF LD='1' THEN CQI:=D; IF EN=’1' THEN IF CQI〉0 THEN CQI:=CQI-1; ELSE CQI:="1001"; END IF; END IF; END IF; END IF; IF CQI=0 THEN COUT<=’1'; ELSE COUT〈=’0’; END IF; CQ〈=CQI; END PROCESS; END BEHAV; 模块NSG的VHDL描述—— library ieee; use ieee。std_logic_1164.all; use ieee。std_logic_unsigned.all; entity NSG is port(clk,start:in std_logic; cq:out std_logic_vector(3 downto 0); oout:out std_logic ); end; architecture one of NSG is begin process(clk,start) variable cqi:std_logic_vector(3 downto 0); begin if clk’event and clk=’1' then if start='1’ then if cqi〈11 then cqi:=cqi+1; else cqi:=(others=>’0'); end if; end if; if cqi<5 then oout〈='1’; else oout〈=’0’; end if; end if; cq〈=cqi; end process; end one; 模块NSR的VHDL描述-— library ieee; use ieee。std_logic_1164。all; use ieee.std_logic_unsigned.all; entity NSR is port(clk,start:in std_logic; cq:out std_logic_vector(3 downto 0); oout:out std_logic ); end; architecture one of NSR is begin process(clk,start) variable cqi:std_logic_vector(3 downto 0); begin if clk’event and clk=’1' then if start='1' then if cqi<11 then cqi:=cqi+1; else cqi:=(others=>'0'); end if; end if; if cqi<6 then oout<='0'; else oout〈='1'; end if; end if; cq<=cqi; end process; end one; 模块NSEW的VHDL描述—— library ieee; use ieee。std_logic_1164.all; use ieee。std_logic_unsigned.all; entity NSEW is port(clk,start:in std_logic; NSG,NSY,NSR,EWG,EWY,EWR:out std_logic ); end; architecture one of NSEW is begin process(clk,start) variable cqi:std_logic_vector(5 downto 0); begin if clk'event and clk='1’and start=’1' then if cqi〈47 then cqi:=cqi+1; else cqi:=(others=〉’0'); end if; if cqi<21 then NSG〈=’1'; else NSG<=’0'; end if; if cqi〉20 and cqi〈25 then NSY<='1'; else NSY<=’0’; end if; if cqi<25 then EWR〈=’1'; else EWR<='0’; end if; if cqi>24 and cqi<49 then NSR<='1'; else NSR〈='0’; end if; if cqi>24 AND cqi<45 then EWG<='1’; else EWG<='0'; end if; if cqi〉44 AND CQI〈49 then EWY<=’1'; else EWY〈='0’; end if; end if; end process; end one; 模块led7s的VHDL描述: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned。all; entity led7s is port(clock,start:in std_logic; ledns,ledew:out std_logic_vector(7 downto 0) ); end; architecture behav of led7s is signal cqi : std_logic_vector(7 downto 0); signal cql : std_logic_vector(7 downto 0); signal cnt6: std_logic_vector(7 downto 0); signal clk : std_logic; begin clk 〈= clock ; process(clk) begin if clk’event and clk=’1’ then if start='1’then if cnt6<47 then cnt6〈=cnt6+1; else cnt6〈="00000000”; end if; end if; end if; end process; process(clk) begin if clk'event and clk='1' then if start=’1’then if cqi>32 then cqi〈=cqi-1; elsif cqi=32 then cqi〈="00011001”; elsif cqi〉16 then cqi<=cqi—1; elsif cqi=16 then cqi〈=”00001001"; elsif cqi>0 then cqi<=cqi—1; elsif cqi=0 and cnt6=0 then cqi〈="00100100"; end if; if cql>32 then cql〈=cql-1; elsif cql=32 then cql<="00011001"; elsif cql>16 then cql<=cql—1; elsif cql=16 then cql<="00001001"; elsif cql>0 then cql〈=cql-1; elsif cql=0 and cnt6=24 then cql<=”00100100”; end if; end if; end if; end process; ledew〈=cqi; ledns〈=cql; end; 交通灯工作时序仿真波形: 测试结果及分析: (1)东西方向亮红灯时间应等于南北方向亮黄、绿灯时间之和,南北方向亮红灯时间应等于东西方向亮黄、绿灯时间之和。 (2)当某方向红灯亮时,置显示器为某值,然后以每秒减1计数方式方式工作,直至减到数为“0”,十字路口红、绿灯交换,一次工作循环结束,进入下一步某方向地工作循环。 例如:当东西方向从黄灯转换成红灯时,置东西方向数字显示为24,并使数显计数器开始减“1”计数,当减到“0”,时,此时红灯灭,而东西方向的绿灯亮;同时,南北方向的红灯亮,并置南北方向的数显为24。 【回答问题】 1、控制电路除用有限状态机实现外,还可以采用什么方法实现? 2、如果增加夜间显示(即全部黄灯闪烁),电路该怎样设计? 答: 1. 还可以用进程语句实现,用一个十二进制的计数器作为控制模块,则EWR、EWG、EWY、NSR、NSG、NSY在计数器不同输出的时候有相应的输出. 2. 把黄灯输出信号EWY、NSY作为使能端,接到一个锁存器上,锁存器的输入时一个频率较高的信号,输出接黄色LED。当EWY、NSY=1时,黄灯闪烁。 12
展开阅读全文

开通  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 

客服