1、东南大学综合电子实践Quartus ii课程设计报告综合电子实践Quartus ii 课程设计报告 姓名: XXX学号:22011XXX报告日期:2013/9/6A交通控制灯设计.31.系统设计要求.32.系统设计方案32.1 系统设计思路32.2 系统设计方案分析.53.交通控制灯各模块电路设计63.1控制模块 controller63.2时钟分频模块frequency10Hz和frequency103.3分位电路模块fenwei.123.4带闪烁功能的七段数码驱动显示模块display.144. 交通控制灯顶层电路设计.164.1原理说明.164.2 端口设计说明.164.3 Quartu
2、s ii 仿真与结果分析.17B 跑马灯设计191.设计要求.192.方案设计框架.193.硬件电路的设计与软件设计.203.1 集成分频器模块.203.2 32进制计数器模块243.3 彩灯控制模块.253.4 4选1选择器模块.283.5 4进制计数器模块.294.系统结构及仿真.31C 数字钟设计321.系统设计要求.322.系统设计和仿真验证332.1整体方案设计.332.2 端口设计说明.342.3 功能仿真 .343.VHDL设计和RTL视图.353.1 对应的的顶层VHDL设计.353.2 底部元件74161_0,74161_1,74161_2和74161_3 VHDL设计.41
3、3.3 RTL视图.42D 设计心得.42设计报告说明:所有程序均在Quartus ii 9.0环境下运行,打开时可能会存在软件版本问题A 交通控制灯设计1. 系统设计要求(1) 在十字路口的两个方向上各设一组红、绿、黄灯,显示顺序为其中一个方向是(东西方向)是绿灯、黄灯、红灯;另一方向(南北方向)是红灯、绿灯、黄灯。(2) 设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间。其中绿灯、黄灯、红灯的持续时间分别是20s、5s和25s。(3) 当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其他需要优先放行的车辆通过时,各方向上均是红灯,倒计时停止,且显示数字在闪烁。当特殊运行状
4、态结束时,控制器恢复原来状态,继续正常运行。2. 系统设计方案2.1 系统设计思路(1) 本系统设计中均采用混合设计的方法,将整体方案划分成若干个模块进行设计。采用VHDL硬件描述语言和原理图描述相结合的方式,对多种应用电路进行设计,其中底层电路(即模块电路)采用VHDL硬件描述语言方式实现,顶层电路采用原理图描述方式实现。(2) 系统设计流程提出系统设计要求需求分析模块化方案设计底层电路设计-VHDL模块电路设计顶层电路设计-原理图描述+各模块连接FPGA整体方案设计实现FPGA整体方案编译仿真时序仿真功能仿真硬件搭接和运行FPGA整体方案设计完成图1 系统设计流程2.2 系统设计方案分析根
5、据任务要求,计数器的值和交通灯亮灭关系如图1所示。显然,此任务设计的核心是一个技术范围为050s的计数器和一个根据计数值作出规定反应的控制器。假设现有晶振为20MHz,因此还需要分频电路来得到10Hz和1Hz的时钟,最后要驱动七段数码管,还需要一个译码电路。红灯亮绿灯亮黄灯亮计数值504525200红灯亮绿灯亮黄灯亮图2 计数值和交通灯亮灭关系根据上面的分析,交通控制灯系统框图如图3所示;HoldReset计数器红、黄、绿发光二极管控制器倒计时数字及“闪烁控制信号”Clk 1Hz分频电路20MHz分位译码电路Clk 10HzCPLD/FPGA七段数码管七段数码管驱动电路图3 交通控制等系统框图
6、3.交通控制灯各模块电路设计3.1 控制模块 controller(1)控制模块的作用是根据计数器的数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的分位译码电路。计数范围为050。计数到50后,下一个时钟沿回复到0,开始下一计数。此外当检测到特殊情况(hold=”1”)发生时,计数器暂停计数,无条件点亮红色的发光二极管。而系统复位信号reset则使计数器异步清零。控制模块controller外部端口如图4所示。图4控制模块controller外部端口(2)控制模块的VHDL程序 程序说明:控制模块描述了功能键hold和reset的功能;同时对频率为1Hz的时钟进行计数,通过计数值,
7、对各个时间段内交通灯信号进行描述;此外,模块还给出了下一步用于倒计时的信号numa4.0和numb4.0。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity controller isport(clock:in std_logic; reset:in std_logic; hold:in std_logic; flash:out std_logic; numa,numb:out integer range 0 to 25; reda,greena,yellowa:out std_logi
8、c; redb,greenb,yellowb:out std_logic );end;architecture control of controller issignal countnum:integer range 0 to 50;begin process(clock)beginif reset=1 then countnum=0;elsif rising_edge(clock) then if hold=1 then flash=1; else flash=0; if countnum=47 then countnum=0; else countnum=countnum+1; end
9、if; end if; end if;end process;process(clock)beginif rising_edge(clock) then if hold=1 then reda=1; redb=1; greena=0; greenb=0; yellowa=0; yellowb=0; else if countnum=17 then numa=20-countnum; reda=0; greena=1; yellowa=0; elsif (countnum=24) then numa=25-countnum; reda=0; greena=0; yellowa=1; else n
10、uma=50-countnum; reda=1; greena=0; yellowa=0; end if; if countnum=24 then numb=25-countnum; redb=1; greenb=0; yellowb=0; elsif countnum=44 then numb=45-countnum; redb=0; greenb=1; yellowb=0; else numb=50-countnum; redb=0; greenb=0; yellowb=1; end if; end if; end if; end process;end; (3)控制模块的VHDL仿真验证
11、 初始状态 整体功能验证 reset键功能验证-将状态恢复至初始状态,计数器显示初始值,绿灯greena和红灯redb亮 hold键功能验证-保持计数值不变,红灯reda和redb同时亮,flash闪烁输出为高电平3.2 时钟分频模块frequency10Hz和frequency(1)时钟分频模块是对系统时钟(设为20MHz)进行分频,得到10Hz和1Hz的时钟。时钟分频模块的外部端口如图5所示。图5 时钟分频模块的外部端口(2)时钟分频模块frequency 10Hz的VHDL程序library ieee;use ieee.std_logic_1164.all;use ieee.std_lo
12、gic_unsigned.all;entity frequency10hz isport(clk20m:in std_logic; clk10hz:out std_logic);end;architecture count of frequency10hz issignal tout:integer range 0 to 999999;signal clk:std_logic;begin process(clk20m) begin if rising_edge(clk20m) then if tout=999999 then tout=0; clk= not clk; else tout=to
13、ut+1; end if; end if;end process;clk10hz=clk;end; (3)时钟分频模块frequency10Hz仿真验证(4)时钟分频模块frequency的VHDL程序程序说明:通过一级分频得到10Hz的时钟,对其再次分频得到1Hz时钟。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity frequency isport(clk10hz:in std_logic; clk1hz:out std_logic);end;architecture count
14、of frequency issignal tout:integer range 0 to 4;signal clk:std_logic;begin process(clk10hz) begin if rising_edge(clk10hz) then if tout=4 then tout=0; clk= not clk; else tout=tout+1; end if; end if;end process;clk1hz=20 then numa=2; numb=10 then numa=1; numb=numin-10; else numa=0; numb=numin; end if;
15、 end if; end process;end;(3)分位电路模块fenwei仿真验证3.4 带闪烁功能的七段数码驱动显示模块display(1)七段数码驱动显示模块对输入信号进行译码得到七段数码显示器的驱动信号,其外部端口如图7所示。图7 七段数码驱动显示模块display外部端口(2)七段数码驱动显示模块display的VHDL程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity display isport(clock:in std_logic; flash:in std_lo
16、gic; qin:in std_logic_vector(3 downto 0); display:out std_logic_vector(0 to 6);end;architecture light of display issignal timeout:integer range 0 to 11; beginprocess(clock)beginif rising_edge(clock) then if (flash=0) then timeout=0; else if (timeout=11) then timeout=timeout+1; end if; end if; if(tim
17、eoutdisplaydisplaydisplaydisplaydisplaydisplaydisplaydisplaydisplaydisplaydisplay=0000000; end case; else display=0000000; end if; end if; end process;end;(3)七段数码驱动显示模块display仿真验证 4.交通控制灯顶层电路设计4.1 原理说明交通顶层电路图如图8所示。图8中有3个输入信号clk20m、reset和hold。clk20m为系统输入时钟,它通过分频器可分别得到1Hz和10Hz频率信号,分别用来向controller模块和di
18、splay模块提供时钟脉冲。controller模块根据时钟脉冲上升沿开始计数,将数据传输到numa40和numb40两个端口,并对reda、greena、yellowa和redb、greenb、yellowb两组红、黄、绿灯开始控制。fenwei模块时钟由系统输入时钟clk20m控制,将controller模块输出端口numa40和numb40传输过来的数据分为十位数和个位数分别存到numina、numinb、numinc和numind两组两位数组里,然后分别送到display模块输入端口numina、numinb、numinc和numind进行数据显示。图8 交通控制灯顶层设计原理图4.2
19、 端口设计说明 clk20m:系统输入时钟,来自于石英振荡器。 hold:输入,功能键,保持:按hold键能实现特殊的功能:显示倒计时的两组数码管闪烁;计数器停止计数并保持在原有的状态;东西,南北路口均显示红灯状态;特殊状态接触后可以继续计数。 reset:输入,功能键,复位。 flash:输出,转换期间的闪烁信号。 redb:输出,B路口显示红灯信号,高电平有效。 greenb:输出,B路口显示绿灯信号,高电平有效。 yellowb:输出,B路口显示黄灯信号,高电平有效。 reda:输出,A路口显示红灯信号,高电平有效。 greena:输出,A路口显示绿灯信号,高电平有效。 yellowab
20、:输出,A路口显示黄灯信号,高电平有效。 displaya:A路口倒数时间显示十位数 displayb:A路口倒数时间显示个位数 displayc:B路口倒数时间显示十位数 displayd:B路口倒数时间显示个位数4.3 Quartus ii 仿真与结果分析交通灯控制系统的时序仿真波形如图9图11所示。可见,图9中reset设置为高电平“1”时显示初始值,为低电平“0”时显示器开始倒计时。图9 交通灯控制系统的时序仿真波形1 图10是仿真结果的细节部分。当A路口绿灯亮。displaya和displayb从20s倒计时,同时B路口灯亮,displayc和displayd从25s倒计时。当A路口
21、绿灯倒计时结束时,让黄灯亮,倒计时5s为转换信号,当黄灯倒计时结束时红灯亮,displaya和displayb从25s倒计时。B路口绿灯亮,displayc和displayd从20s倒计时,A路口红灯亮,displaya和displayb从25s倒计时,这时B路口重复A路口的上一次动作,如此循环下去。图10 交通灯控制系统的时序仿真波形2图11 交通灯控制系统的时序仿真波形3从图11可以看出交通灯控制系统中hold键的功能。当hold设置为高电平“1”时显示器保持原有数字不变,且无条件点亮红色的发光二极管reda=1。当hold设置为低电平“0”时,显示器继续计数。B 跑马灯设计1.设计要求1
22、.1 学习并掌握Quartus ii软件,掌握用自顶向下的设计方法,使用VHDL语言来实现跑马灯的设计,并在此基础上熟悉可编程逻辑器件的使用。1.2 基础功能要求:实现8个红色LED的亮、灭、交错显示等,其显示如下 (1)复位时,8个灯全灭;(2)从左到右第一个开始亮,依次亮到最后一个;(3)从右到左第一个开始亮,依次亮到最后一个;(4)从中间亮到两边;(5)从两边亮到中间; 1.3 扩展功能要求:随着彩灯显示图案的变化,发出不同的音响声。2 方案设计框架2.1 这次的跑马灯设计采用模块化方法设计,整体方案包括分频器模块、计数器模块、选择器模块和彩灯控制器模块。其中彩灯控制器是用来输出不同的图案和音响声,彩灯控制器的输出则是用一个32进制的计数器来控制。扬声器的输出用不同的频率来控制,因此用了一个集成分频器来使输入的频率被分为几种不同的频率。不同频率的选择性的输出则是用一个4选一的选择器
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1