1、3)设计相应减法器的BCD码七段显示模块4) 设计总体状态转换器,完成各输入文件,并产生各模块后,再用原理图输入方式产生总图。四、设计流程图红绿灯交通管理器控制甲、乙两道的红、黄、绿三色灯,指挥车辆和行人安全。交通管理器示意图如下图(1)所示。图(1)中三个计时器分别确定甲道和乙道通行时间t3、t1以及公共的停车(黄灯燃亮)时间t2。C1、C2和C3分别是3个定时器工作信号,即当C1、C2或C3为1时,相应的定时器计数。W1、W2和W3为计数器的指示信号,计数器在计数过程中,相应的指示信号为0,计数结束时为1。交通管理器工作流程图如下图:五、实验内容1、秒加法计数器设计11设计一个30秒加法计
2、数器使计数器由“000011101”进行加法计数,当计数器工作计数信号(进位输出C)有“0”转为“1”时,表示计满。设30秒加法计数器的源程序: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count30 is port(en:in std_logic; clk: dout:out std_logic_vector(4 downto 0); c:out std_logic);end count30;architecture behavioral of count30 is sig
3、nal count:std_logic_vector(4 downto 0):=00000;begin dout=count; process(clk,en) begin if en=0then count c= elsif en=1 if rising_edge(clk) then If count=11101 else=count+1; end if; end process;end behavioral;对该计数器程序生成模块并进行编译对编译结果进行仿真,仿真波形如下图:12设计一个26秒加法计数器使计数器由“000011001”进行加法计数,当计数器工作计数信号(进位输出C)有“0”转
4、为“1”时,表示计满。26秒加法计数器的源程序:library ieee;entity count26 is port(en:end count26;architecture behavioral of count26 is signal count: if count=11001对该计数器程序生成模块并进行编译:13设计一个5秒加法计数器使计数器由“000100”进行加法计数,当计数器工作计数信号(进位输出C)有“0”转为“1”时,表示计满。5秒加法计数器的源程序:entity count05 isout std_logic_vector(2 downto 0);end count05;ar
5、chitecture behavioral of count05 is std_logic_vector(2 downto 0):0001002、秒减法计数器设计21设计一个30秒减法计数器当加法计数器计数时,整个减法器同时做倒计时,状态从“301”30秒减法器的源程序:entity de30 isport(clk,ld,en,reset: qh:out std_logic_vector(3 downto 0); ql:out std_logic_vector(3 downto 0);end de30;architecture behavioral of de30 is signal mh,m
6、l:std_logic_vector(3 downto 0); process(clk,ld) if(ld= or reset=)then mh0011 ml0000 elsif(clkevent and clk= if(en= if(ml0001 AND mh) then ml elsif(ml=0)then1001 if(mh=0)then else mh=mh-1; else ml=ml-1;end if;qh=mh;ql=ml;对该减法器程序生成模块并进行编译22设计一个26秒减法计数器当加法计数器计数时,整个减法器同时做倒计时,状态从“261”26秒减法器的源程序:use ieee.
7、std_logic_arith.all;entity de26 is port(clk,ld,en,reset:end de26;architecture behavioral of de26 is signal mh,ml: process(clk,reset)00100110 and mh else if(ml=0)thenend process;23设计一个5秒减法计数器当加法计数器计数时,整个减法器同时做倒计时,状态从“51”5秒减法器的源程序:entity de5 is q:end de5;architecture behavioral of de5 is signal m: m01
8、01 if(m= then m else m=m-1;q=m;3、交通控制器设计W1、W2、W3分别为30秒(红灯),5秒(黄灯)和26秒(绿灯)计数进位信号,RESET为控制清零的信号。时钟信号以1秒为一周期。g2,y2,r2分别为甲方向的红、黄、绿灯始能信号,g1,y1,r1分别为乙方向各信号灯的始能信号。交通控制器的源程序:entity trafficcontrol isport( c1,c2,c3:out std_logic; w1,w2,w3: r1,r2: y1,y2: g1,g2: reset:in std_logic);end trafficcontrol;architectu
9、re a of trafficcontrol is type state_space is(s0,s1,s2,s3); signal state:state_space; process(clk) if reset= then state if w1=s1; when s1= if w2=s2; when s2= if w3=s3; when s3= end case; c1 when state=s0 else c2 when state=s1 or state=s3 else c3 when state=s2 else r1 when state=s1 or state=s0 else y
10、1 when state=s3 else g1 r2 when state=s2 or state=s3 else y2 when state=s1 else g2end a;对该交通控制器程序生成模块并编译4、 设计BCD2LED七段显示器七段显示器在这里主要是用于各减法计数器的倒计时显示,输入信号各为减法计数器的BCD码输入。通过显示器内部转换最后以数字形式显示。BCD2LED七段显示器源程序:entity bcd2led is port(a3,a2,a1,a0: a,b,c,d,e,f,g:end bcd2led;architecture structural of bcd2led is
11、 signal bcd: signal led:std_logic_vector(6 downto 0); bcdled0000000 a=led(6); b=led(5);=led(4); d=led(3); e=led(2); f=led(1); g=led(0); end structural;将个该程序生成模块并编译六、总的原理图和仿真波形交通灯总体设计将各个模块连接起来,构成完整的红绿灯管理器。原理图中的de05,de26,de30分别为5秒,26秒,30秒减法计数器,count05,count26和count30分别为加法计数器。Trafficcontrol为交通灯控制器。图中的c
12、lk为总的时钟输入信号,reset分别作为各减法计数器的初始置数信号和控制器的清零信号。减法计数器qh输出信号表示高位输出信号,ql表示低位输出信号。总体输入信号为clk和reset,输出信号为各减法计数器的BCD码输出信号。设计总原理图:交通灯管理器总体仿真:七、学习小结 两天数字逻辑电路和PLD设计学习生活很快就结束了,但是就是这短暂的两天却让我学到了很多。在学习此课程之前,听说还是运用Quartus软件,鉴于我学习过CPLD实验,所以我是自信满满的,但是在听完老师的要求之后,我就明白其实这次任务还是很艰巨的,因为此次完全要我们自己独立设计出一个交通红绿灯控制器。经过努力,我终于自己设计完
13、成了一个十字路交通管理器,更加熟练使用了Quartus可编程逻辑器件开发软件,并且巩固了上学期在课堂上学到的关于VHDL语言的编程语言的课程。虽然上个学期学过VHDL语言描述数字电路,但是当时仅仅只是自己编程,并没有给我们这样一个实验平台,让我们看到自己编的程序,可以生成自己想要的效果。Quartus软件界面易懂,输入方式灵活多样,是一个十分常用的软件,而这次课程设计锻炼了我对这个软件的熟练程度,也已经为今后进行更复杂的设计打下了扎实的基础。这次的学习中,我遇到了很多小问题,但是通过同学们的帮助与自身的努力,我开始慢慢的找到了编程思路以及编程中要注意的一些小细节,增强了我的自信心、丰富了我的知识。两天的课程设计,我学会了怎么将自己所学的知识整合的到实际运用当中,加深了我对相关知识的理解和掌握。对数电所学知识的实际运用有了进一步的了解,特别是深入的学习了VHDL语言。这次的实践课程虽然已经结束,但对这个软件的学习以及对VHDL语言的学习并没有结束,我会在以后的学习中抓住机会加深对它们的理解,做到真正掌握这些技术。总之,每一次的实践课实习学习都是在给我们将来积累经验,锻炼了自主学习,独立思考,综合运用所学知识的能力,我们应该学会如何整理自己所学的知识为现实生活服务,同时开发了我们锻炼思维创新能力克服困难的决心。2010-7-6
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1