收藏 分享(赏)

交通灯控制论文.doc

上传人:kpmy5893 文档编号:9190212 上传时间:2019-07-29 格式:DOC 页数:18 大小:233KB
下载 相关 举报
交通灯控制论文.doc_第1页
第1页 / 共18页
交通灯控制论文.doc_第2页
第2页 / 共18页
交通灯控制论文.doc_第3页
第3页 / 共18页
交通灯控制论文.doc_第4页
第4页 / 共18页
交通灯控制论文.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、交通灯控制系统的设计张海军 陆吉银 钟犹洪(湖南 衡阳 南华大学 421001)指导老师:王 彦摘要 利用 VHDL 在 CPLD 上设计交通灯控制系统,取代常规的设计方法。采用 Xilinx 公司推出的 EDA 软件系统 Xilinx Foundation Series ISE 对系统进行 VHDL 语言编程、编译、综合和功能仿真,并将程序下载到 CPLD 器件中,程序主要包括秒脉冲电路、减计数器、状态控制器等模块的编写。利用清华同方的 TPG_FPGA 教学实验系统对设计的系统进行总体测试,经过实际电路测试运行效果良好,能很好实现设计要求。用 VHDL 设计交通灯控制系统是一个非常简单而且

2、十分不错的方案。关键词 VHDL CPLD 交通灯控制系统Design of Traffic Light Control SystemAbstract Instead of general design methods, design a traffic light control system utilizing VHDL based on CPLD. Using VHDL language to programme,、translate and edit、synthetize and functional simulate for the traffic light control sys

3、tem by utilizing EDA software(Xilinx Foundation Series ISE)of Xilinx company, then download to the CPLD. The program mainly conclude second pulse circuit、subtracting counter、state controller and so on To test the system, using the teaching experiment system of TPG_FPGA. We can found that the circula

4、tive effect is good and it satisfies the design requirement completely after the testing. In conclusion, the traffic light control system designed by using VHDL is easy and very good. Keywords VHDL , CPLD , Traffic light control system2目 录设计任务和设计要求3前 言3第 1章 系统设计 3第 2章 单元电路设计52.1秒脉冲电路的设计52.2减计数器的设计52

5、.3 状态控制器的设计52.4 三态门的设计62.5 功能扩展模块的设计7 第 3章 软件设计831ISE 介绍 832 程序设计流程图9第 4章 系统测试10第 5章 设计总结10附 录 10附录 1 程序清单 10参考文献 183设计任务和设计要求设计一个十字路口交通灯信号控制器,基本要求如下: 主、支干道交替通行,主干道绿灯亮 50 秒,支干道绿灯亮 20 秒。 每次绿灯变红灯时,先闪 6 秒黄灯(此时另一个干道的红灯不变) 。发挥部分要求如下: 晚上十点(22:00)到次日凌晨七点(07:00)主、支干道红、绿灯全灭,均只有黄灯闪烁。前 言随着社会、经济的快速发展,人民的生活水平也在不

6、断提高,随之而出现的是交通也日益发达和紧张起来。为了很好的控制各个城市主干道的交通,交通灯发挥了不可替代的作用,因此,设计一个交通灯控制系统是非常有用的,具有很高的实用价值。基于这一点,本设计利用 VHDL 来设计一个交通灯控制系统。下面介绍一下 VHDL。VHDL( Very High Speed Integrated Circuit Hardware Description Language)是超高速集成电路硬件描述语言的英文缩写。是美国国防部 20 世纪 80 年代后期开发的一种快速的电路设计工具,目前已成为 IEEE 的标准硬件描述语言之一。VHDL 具有多层次的描述系统硬件功能的能力

7、;支持自顶向下(Top to Down)和基于库( Library-Based)的设计方法;VHDL 对设计的描述具有相对独立性。因此,设计者可不必了解硬件结构,从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用 VHDL 对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的 CPLD 器件中去,从而实现可编程逻辑器件的专用集成电路(ASIC)设计。第 1章 系统设计要设计一个交通灯控制系统可以用几个方案来实现。常见的有用单片机设计、用数字电路直接设计和用 VHDL 来设计。各种方案的都有其优缺点,

8、下面通过全面比较来最终确定完成本设计的方案。方案 1:用单片机设计一个交通灯控制系统主要是利用单片机最小系统的定时和中断功能块。当定时器定时到了之后,马上跳转到中断服务子程序,执行子程序的指令。子程序包括交通灯的各种状态,如主干道亮红灯,支干道亮绿灯等等。这样实现比较简单,但是考虑到单片机的一个最致命的缺点(即受外界干扰的影响很大) ,在选择方案时优先考虑采用其他受干扰影响小设计方案。方案 2:用数字电路直接设计的交通灯控制系统主要由秒脉冲发生器、状态控制器、定时系统和状态译码器等构成。状态控制器主要是用于记录十字路口交通灯的工作状态,通过状态译码器分别点亮相应的信号灯。秒脉冲发生器产生整个定

9、时系统的时基脉冲,通过减法计数器对秒脉冲减计数,达到控制每一种工作状态的持续时间。减法计数器的回零脉冲使状态控制器完成状态转换,同时状态译码器根据系统下一个工作状态决定计数器下一次减计数的初始值。在黄灯闪烁其间,状态译码器将秒脉冲引入黄灯灯控制电路,就可4使黄灯闪烁。这种设计方案也能很好的实现设计要求,但是由于采用大量模拟器件来组成整个电路系统,系统性能受元器件的影响明显增大,因此,在模拟器件的质量不高时会给整个系统带来较大偏差,这也是这种方案的一个不足之处。方案 3:用 VHDL 设计的交通灯控制系统的组成部分有:秒脉冲发生电路、减计数器、状态控制器、三态门控制电路等。用 VHDL 设计虽然

10、组成部分与用数字电路实现差不多,但是,由于用硬件描述语言来描述各电路模块的功能由 EDA 开发工具直接生成相应的门级逻辑电路的网表,下载到具体的 CPLD 器件中去,从而实现可编程逻辑器件的专用集成电路设计。这样减少了模拟器件的使用,使得整个系统的更加电路简单,降低了整个系统对器件性能和质量的依赖,从而提高了系统的稳定性。用 VHDL 设计的交通灯控制系统首先由秒脉冲发生电路输出一个秒脉冲,用它来作为减计数器的时钟输入信号。计数器输出的计数结果输入到状态控制器,由状态控制器来控制主干道、支干道的信号灯的亮与灭以及黄灯的闪烁。黄灯的闪烁是通过将秒脉冲信号经三态门输出给黄灯来实现的。综合考虑各个方

11、案的优缺点,在实现交通灯控制系统时采用第 3 个方案。其原理方框图如图 1.1 所示。 图 1.1 原理方框图第 2章 单元电路的设计21 秒脉冲电路的设计秒脉冲电路主要是由分频器构成。由于实验箱上的石英晶体振荡器产生的频率为32MHZ,因此要想得到一个秒脉冲信号必须要用到分频器。分频器有两个输入端(一个是时钟输入 CLK,另一个是使能输入 EN) ,一个输出端 CLK0(即秒脉冲信号输出) 。将输入频率为 32MHZ 的脉冲信号进行 32000000 分频就可以得到 1HZ 的秒脉冲信号。分频器的工作波形图如 2.1 所示。5图 2.1 分频器工作波形图2.2 减计数器的设计为了满足主干道绿

12、灯亮 50 秒,支干道绿灯亮 20 秒,绿灯变红灯时先亮 6 秒黄灯的要求,计数器的最大值应为 82,也就是说,减计数器要设计为一个 82 进制计数器。计数器的初值设为 81,依次递减一直减到 0 为止,然后又变为 81,一直这样循环计数。计数器的时钟输入信号由秒脉冲发生电路提供,这样,计数器每计一次数的时间为一秒,计数的周期就为 82 秒。输出的计数值送给状态控制器,通过状态控制器来实现各信号灯亮、灭的时间长短。82 进制减计数器的工作波形图如图 2.2 所示。图 2.1 82 进制减计数器的工作波形图2.3 状态控制器的设计状态控制器是整个系统的核心,各个信号灯的亮、灭均由它来控制。交通灯

13、控制系统的设计要求是要求主干道绿灯亮 50 秒,接着黄灯闪烁 6 秒,这段时间里支干道一直亮红灯,也即红灯亮 56 秒。主干道黄灯闪完后接着支干道亮 20 秒绿灯,绿灯灭后闪 6 秒黄灯,在这段时间里主干道亮 26 秒红灯,支干道黄灯灭后主干道又接着亮 50 秒绿灯一直循环下去。交通灯工作顺序流程图如图 2.3 所示。状态控制器就是用来控制各个状态的转换。6图 2.3 交通灯工作顺序流程图2.4 三态门的设计三态门有一个数据输入端、一个使能端和一个数据输出端。当使能输入端输入的信号为1时,数据从输入端传送到输出端;当使能信号为0时,输出呈高阻态,在 VHDL语言描述时将高阻态数据Z向输出端赋值

14、。在本设计中,三态门的输入数据为秒脉冲信号,输出的数据用来控制信号灯黄灯的闪烁。三态控制门的电路如图 2.4.1 所示,工作波形图如图 2.4.2 所示。在设计中由于有两路黄灯且闪烁的时刻不同,因此设计时用到了两个三态控制门电路,分别控制主干道和支干道的黄灯。图 2.4.1 三态控制门电路图图 2.4.2 三态门工作波形图交通灯控制系统的总电路图如图 2.4.3 所示。图 2.4.3 系统总电路图2.5 功能扩展模块的设计为了实现发挥部分的设计要求,特增加功能扩展模块。功能扩展模块主要是由一个定时系统组成。当时间达到晚上十点(即 22:00)时,定时系统发出一个信号去控制信号灯,使得红绿灯熄灭

15、,黄灯闪烁,这种状态一直持续到次日早上七点(即 07:00) 。该模块的7总电路图如图 2.5.1 所示。图 2.5.1 扩展模块的总电路图系统总的仿真波形图如图 2.1 所示。图 2.1 系统总的仿真波形图第 3章 软件设计31 ISE 的介绍本设计中采用可编程逻辑设计环境 Xilinx Foundation Series ISE 4.2i 进行设计。ISE 是Xilinx 公司推出的 EDA 软件系统。该系统是一个集成化环境,由项目导航工具(Project Navigator) 、设计输入工具(Design entry tools) 、逻辑综合工具( Design Synthesis) 、

16、设计实现工具(Design Implementation tools) 、设计约束图形编辑接口(Design constraints Graphic User Interfaces)等组成的一个的软件平台。Xilinx Foundation Series ISE 4.2i 软件系统的基本工具箱介绍。8(一)软件启动:正确安装 Xilinx Foundation Series ISE 4.2i 后,从 Windows 的 Start 菜单中选择 Programs,选择其下的 Foundation Series ISE 4.2i,再在 Foundation Series ISE 4.2i菜单下选择

17、 Project Navigator,启动 Foundation Series ISE 4.2i 软件系统。(二)项目管理:项目管理工具 Project Navigator 是 Xilinx Foundation Series ISE 4.2i 软件系统的主管窗口,管理整个设计进程和相应工具,可以通过 Project Navigator 启动设计输入工具(Design entry tools) 、综合工具、设计实现工具、可编程逻辑器件编程工具、设计校验工具(包括行为仿真工具和定时分析)等。(三)设计输入:设计输入工具包括 HDL Editor、ECS Schematic Editor、Symb

18、ol Editor、 StateCAD and StateBench 等。(四)逻辑综合:Xilinx Foundation Series ISE 4.2i 提供两种综合工具:Xilinx Synthesis Tools(XST)和 FPGA Express。两种工具都支持同样的设计输入,生成需要的输出文件用于布局布线。两种设计工具的唯一区别是,XST 只能对全是 VHDL 或者全是 Verilog HDL 描述的设计进行逻辑综合;而 FPGA Express 允许设计是 VHDL 和 Verilog HDL 语言的混合描述。(五)设计约束:在设计实现工具中,设计者可以加上设计约束控制设计实现

19、。设计约束主要有两类;一类是位置约束,另一类是时间约束。位置约束控制逻辑块在可编程器件中实现的映射方式和布局位置,其中最主要的约束是压焊点的位置约束。这种约束用于锁定设计管脚,将器件的 I/O 分配给指定的管脚,在设计过程中不受优化调整的影响。时间约束告诉软件系统设计的关键路径,以指导布局布线工具在布局布线时考虑逻辑块的放置位置。(六)功能仿真:功能仿真用于综合前检查设计的逻辑功能是否符合设计要求。仿真过程中可以通过观察检测设计的输入信号、输出信号以及内部信号以检测设计的逻辑功能。可以用 VHDL 的测试向量或 Verilog HDL 测试向量作为电路测试的输入激励,并且比较电路的输出是否和期

20、望的输出一致。Xilinx Foundation Series ISE 4.2i 支持寄存器传输级仿真和行为仿真。(七)设计实现:逻辑综合以后,设计实现工具将综合结果映射到目标器件,进行布局布线(对面向 CPLD 的设计实现为试配) ,生成可编程逻辑器件编程用的输入文件。(八)报告文件:由设计实现工具产生的报告文件包含了逻辑时序、逻辑优化、时间约束和 I/O 管脚分配等信息,在 Project Window 中双击相关报告文件就可以将其打开。(九)时序仿真:Xilinx Foundation Series ISE 4.2i 时序仿真是门级仿真,其中包含了目标可编程逻辑器件详细的延时信息。门级仿

21、真是在逻辑综合和布局布线后带延时的仿真,这与综合前不带延时信息的行为仿真有很大差别。时序仿真的测试文件可以有 HDL Bencher 图形界面生成,也可以由 VHDL 或 Verilog HDL 的测试平台产生。(十)器件编程:器件编程是设计在可编程逻辑器件(CPLD 或者 FPGA)中最终实现的步骤。VHDL 的设计流程:设计工作首先是用 VHDL 描述设计概念,利用 VHDL 仿真与调试工具分析设计概念的“行为” ,检查是否满足初始要求。这一部分的情形与普通编程语言如PASCAL、C 语言的编译、运行、调试是类似的。这时的仿真速度要大大快于门级仿真的速度。高层设计的验证、纠错,有利于早期发

22、现设计方案中的错误。设计概念验证后,把VHDL 设计输入 VHDL 综合工具,VHDL 综合工具利用集成电路厂商或电子自动化厂商提供的被充分验证过的工艺库,以面积、功能和速度等为目标进行优化,将电路映射为选定工艺的网表。得到了门级电路后,我们还要进行逻辑仿真,来验证门级电路的行为和时序特性。接下来的是物理设计,得到最后可供生产的文件。物理设计完成后,一般还要进行延时分析、故障分析、热分析等等,保证最终确实能稳定工作,满足设计标准。932 程序设计流程图程序设计流程图如图 3. 1 所示。NYNYNYNY图 3. 1 程序设计流程图第四章 系统测试开 始产生秒脉冲信号从 81 开始减计数器计数=

23、31? 主干道亮绿灯支干道亮红灯主干道黄灯闪 支干道红灯继续亮=25?主干道红灯亮 支干道绿灯亮=5?主干道红灯继续亮 支干道黄灯闪=0?10本设计要求实现交通灯的控制,具体要求为主干道通行 50 秒,支干道通行 20 秒,每次绿灯变为红灯时先让黄灯闪烁 6 秒(此时另一干道上的红灯不变) ,功能扩展为使得晚上十点到早上七点只有黄灯闪烁。为了检测所设计的控制系统是否能很好的完成设计要求,因此在使用该系统之前要进行系统测试,以便发现不足之处加以改进。测试该系统用的仪器主要是清华同方制作的 TPG_FPGA 教学实验系统,该实验系统上有晶体振荡电路、Xilinx芯片、显示电路、输入输出电路等。测试

24、时先将编写好的 VHDL 描述程序写入到 Xilinx Foundation Series ISE 4.2i 的文本编辑窗口中,并进行编译、综合、适配。然后进行引脚锁定,将 VHDL 描述的模块的输入输出端子与实验系统上的输入输出端一一对应起来。引脚锁定好后,用数据线将程序下载到实验系统上的 Xilinx 芯片中,并让其进入运行状态。实验系统中有模拟的交通信号灯,所以在测试时只要观察该信号灯是否按照设计的要求转换即可测定该系统是否可行。第五章 设计总结通过测试该交通灯控制系统,得出结论是该系统能很好的完成设计要求,在 TPG_FPGA教学实验系统上测试能达到预定目标。测试的结果是计数值从 81

25、 到 32 主干道亮绿灯支干道亮红灯,31 到 26 主干道黄灯闪烁支干道亮红灯,25 到 6 支干道亮绿灯主干道亮红灯,5 到 0 支干道黄灯闪烁主干道亮红灯,然后又从 81 开始,一直循环下去。并且到了晚上十点只有黄灯闪烁,一直闪到早上七点。这一结果完全符合预定目标。因此该设计方案是一个很好的方案。附 录附录 1:程序清单library IEEE;-顶层程序use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity topjt isPort (clock2,s

26、z:in std_logic;yelloweast,yellowwest:out std_logic;yellowsouth,yellownorth:out std_logic;greeneast,greenwest:out std_logic;greennorth,greensouth:out std_logic;redeast,redwest:out std_logic;rednorth,redsouth:out std_logic;h1 : in std_logic_vector(3 downto 0);h0 : in std_logic_vector(3 downto 0);m1 :

27、in std_logic_vector(3 downto 0);m0 : in std_logic_vector(3 downto 0);s1 : in std_logic_vector(3 downto 0);s0 : in std_logic_vector(3 downto 0);hour1 : out std_logic_vector(6 downto 0);hour0 : out std_logic_vector(6 downto 0);min1 : out std_logic_vector(6 downto 0);min0 : out std_logic_vector(6 downt

28、o 0);sec1 : out std_logic_vector(6 downto 0); sec0 : out std_logic_vector(6 downto 0);end topjt;architecture Behavioral of topjt iscomponent miao isPort (clk,en:in std_logic;clk0:out std_logic);end component;component counter82 is11Port (clk,en,rst:in std_logic;y:out integer);end component;component

29、 controller isPort (a:in integer;en:in std_logic;u1,u2,u3,u4,u5,u6:out std_logic;u7,u8,u10,u11:out std_logic);end component;component notgate isPort ( inn:in std_logic;outt:out std_logic);end component;component tri_states isPort (enable:in std_logic;datain:in std_logic;dataout:out std_logic);end co

30、mponent;component convert isPort (a:in std_logic;b,c:out std_logic);end component;component counter10Port ( set : in std_logic;clk : in std_logic;x : in std_logic_vector(3 downto 0);y : out std_logic_vector(3 downto 0);c : out std_logic);end component;component counter104Port ( set,rd : in std_logic

31、;clk : in std_logic;x : in std_logic_vector(3 downto 0);y : out std_logic_vector(3 downto 0);c,k : out std_logic);end component;component counter2Port ( set,rd : in std_logic;clk : in std_logic;x : in std_logic_vector(3 downto 0);y : out std_logic_vector(3 downto 0);c : out std_logic);end component;

32、component counter6Port ( set : in std_logic;clk : in std_logic;x : in std_logic_vector(3 downto 0);y : out std_logic_vector(3 downto 0);c : out std_logic);end component;component decoderPort (seg:in std_logic_vector(3 downto 0 );q3:out std_logic_vector(6 downto 0);end component;component pulsePort (

33、 clock,en:in std_logic;clk:out std_logic );end component;component and21Port ( a : in std_logic;b : in std_logic;c : out std_logic);end component;component adder port(reset1:in std_logic;clina1:in std_logic_vector(3 downto 0);clinb1:in std_logic_vector(3 downto 0);mina1:in std_logic_vector(3 downto

34、0);minb1:in std_logic_vector(3 downto 0);sina1:in std_logic_vector(3 downto 0);sinb1:in std_logic_vector(3 downto 0);zout1:out integer);end component;component flashingport(flash:out std_logic;clock2:in std_logic;dclk2:in integer;reset2:in std_logic);end component;component orgatePort (p,q:in std_lo

35、gic;w:out std_logic);end component;signal second, ring, ye,yel,t1,t2,t3,t4,cr,cr1:std_logic;12signal xy, sign1:integer;signal sh1,sh0,sm1,sm0,ss1,ss0:std_logic_vector(3 downto 0);signal ca,cb,cc,cd,ce,cf,ch,ci,sand1,ff,tt,sand2,sign2:std_logic;beginu1:miao port map(clk=clock2,en=sz,clk0=second);u2:c

36、ounter82 port map(clk=second,en=sz,rst=cr1,y=xy);u3:controller port map(a=xy,en=ff,u3=t1,u6=t2,u1=greeneast,u7=greenwest,u2=rednorth,u8=redsouth,u4=redwest,u10=redeast,u5=greennorth,u11=greensouth);u4:tri_states port map(datain=second,enable=t3,dataout=ye);u5:tri_states port map(datain=second,enable

37、=t4,dataout=yel);u6:notgate port map(inn=sz,outt=cr);u7:convert port map(a=ye,b=yelloweast,c=yellowwest);u8:convert port map(a=yel,b=yellownorth,c=yellowsouth);u9:pulse port map(clock=clock2,en=sz,clk=ca);u10:counter10 port map(clk=ca,set=sz,x=s0,y=ss0,c=cb);u11:counter6 port map(clk=cb,set=sz,x=s1,

38、y=ss1,c=cc);u12:counter10 port map(clk=cc,set=sz,x=m0,y=sm0,c=cd);u13:counter6 port map(clk=cd,set=sz,x=m1,y=sm1,c=ce);u14:counter104 port map(clk=ce,set=sz,x=h0,y=sh0,c=cf,rd=ci,k=sand1);u15:counter2 port map(clk=cf,set=sz,x=h1,y=sh1,c=sand2,rd=ci);u16:and21 port map(a=sand1,b=sand2,c=ci);u17:decod

39、er port map(seg=ss0,q3=sec0);u18:decoder port map(seg=ss1,q3=sec1);u19:decoder port map(seg=sm0,q3=min0);u20:decoder port map(seg=sm1,q3=min1);u21:decoder port map(seg=sh0,q3=hour0);u22:decoder port map(seg=sh1,q3=hour1);u23:adder port map(reset1=sz,clina1=h0,clinb1=h1,mina1=m0,minb1=m1,sina1=s0,sin

40、b1=s1,zout1=sign1);u24:flashing port map(reset2=sz,clock2=sign2,dclk2=sign1,flash=ringg);u25:pulse port map(clock=clock2,en=sz,clk=sign2);u26:orgate port map(p=t1,q=ringg,w=t3);u27:orgate port map(p=t2,q=ringg,w=t4);u28:notgate port map(inn=ringg,outt=tt);u29:and21 port map(a=sz,b=tt,c=ff);u30:orgat

41、e port map(p=cr,q=ringg,w=cr1);end Behavioral;library IEEE;-加法器use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;13use IEEE.STD_LOGIC_UNSIGNED.ALL;entity adder isPort (reset1:in std_logic;clina1:in std_logic_vector(3 downto 0);clinb1:in std_logic_vector(3 downto 0);mina1:in std_logic_vector(3

42、 downto 0);minb1:in std_logic_vector(3 downto 0);sina1:in std_logic_vector(3 downto 0);sinb1:in std_logic_vector(3 downto 0);zout1:out integer );end adder;architecture Behavioral of adder isbeginprocess(reset1,clina1,clinb1,mina1,minb1,sina1,sinb1)variable bzout,bzout1,bzout2:integer;beginif reset1=

43、0 thenbzout1:=conv_integer(clina1)*3600+conv_integer(mina1)*60+conv_integer(sina1);bzout2:=conv_integer(clinb1)*36000+conv_integer(minb1)*600+conv_integer(sinb1)*10;bzout:=bzout1+bzout2;elsebzout:=0;end if;zout1abababababbcbcbc q3q3q3q3q3q3q3q3q3q3q3flashflashflash=0;end case;17end if;end process;en

44、d Behavioral;library IEEE;-秒脉冲发生器use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity miao isPort (clk,en:in std_logic;clk0:out std_logic);end miao;architecture Behavioral of miao isbeginprocess(clk,en)variable cnt:integer;variable clk1:std_logic;beginif en

45、=0 then cnt:=0;clk1:=0;elsif clkevent and clk=1 thencnt:=cnt+1;if cnt=16000000 then clk1:=1;elsif cnt=32000000 then clk1:=0; cnt:=0;end if;end if;clk0=clk1;end process;end Behavioral;library IEEE;-非门use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity notga

46、te isPort ( inn:in std_logic;outt:out std_logic);end notgate;architecture Behavioral of notgate isbeginoutt=not inn;end Behavioral;library IEEE;-或门use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity orgate isPort (p,q:in std_logic;w:out std_logic);end orga

47、te;architecture Behavioral of orgate isbeginw=p or q;end Behavioral;library IEEE;-分频器use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity pulse isPort ( clock,en:in std_logic;clk:out std_logic);end pulse;architecture Behavioral of pulse isbegincounter: proc

48、ess(clock,en)variable count2: integer;variable clk0: std_logic;beginif en=0 thencount2:=0;clk0:=0;elsif clockevent and clock=1 thencount2:=count2+1;if count2=16000000 thenclk0:=1;elsif count2=32000000 thencount2:=0;clk0:=0;end if;18end if;clk=clk0;end process counter;end Behavioral;library IEEE;-三态控制门use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报