




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
综合电子实践Quartus ii 课程设计报告 姓名: XXX学号:22011XXX报告日期:2013/9/6目录A交通控制灯设计.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 Quartus 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设计.413.3 RTL视图.42D 设计心得.42设计报告说明:所有程序均在Quartus ii 9.0环境下运行,打开时可能会存在软件版本问题A 交通控制灯设计1. 系统设计要求(1) 在十字路口的两个方向上各设一组红、绿、黄灯,显示顺序为其中一个方向是(东西方向)是绿灯、黄灯、红灯;另一方向(南北方向)是红灯、绿灯、黄灯。(2) 设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间。其中绿灯、黄灯、红灯的持续时间分别是20s、5s和25s。(3) 当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其他需要优先放行的车辆通过时,各方向上均是红灯,倒计时停止,且显示数字在闪烁。当特殊运行状态结束时,控制器恢复原来状态,继续正常运行。2. 系统设计方案2.1 系统设计思路(1) 本系统设计中均采用混合设计的方法,将整体方案划分成若干个模块进行设计。采用VHDL硬件描述语言和原理图描述相结合的方式,对多种应用电路进行设计,其中底层电路(即模块电路)采用VHDL硬件描述语言方式实现,顶层电路采用原理图描述方式实现。(2) 系统设计流程提出系统设计要求需求分析模块化方案设计底层电路设计-VHDL模块电路设计顶层电路设计-原理图描述+各模块连接FPGA整体方案设计实现FPGA整体方案编译仿真时序仿真功能仿真硬件搭接和运行FPGA整体方案设计完成图1 系统设计流程2.2 系统设计方案分析根据任务要求,计数器的值和交通灯亮灭关系如图1所示。显然,此任务设计的核心是一个技术范围为050s的计数器和一个根据计数值作出规定反应的控制器。假设现有晶振为20MHz,因此还需要分频电路来得到10Hz和1Hz的时钟,最后要驱动七段数码管,还需要一个译码电路。红灯亮绿灯亮黄灯亮计数值504525200红灯亮绿灯亮黄灯亮图2 计数值和交通灯亮灭关系根据上面的分析,交通控制灯系统框图如图3所示;HoldReset计数器红、黄、绿发光二极管控制器倒计时数字及“闪烁控制信号”Clk 1Hz分频电路20MHz分位译码电路Clk 10HzCPLD/FPGA七段数码管七段数码管驱动电路图3 交通控制等系统框图3.交通控制灯各模块电路设计3.1 控制模块 controller(1)控制模块的作用是根据计数器的数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的分位译码电路。计数范围为050。计数到50后,下一个时钟沿回复到0,开始下一计数。此外当检测到特殊情况(hold=”1”)发生时,计数器暂停计数,无条件点亮红色的发光二极管。而系统复位信号reset则使计数器异步清零。控制模块controller外部端口如图4所示。图4控制模块controller外部端口(2)控制模块的VHDL程序 程序说明:控制模块描述了功能键hold和reset的功能;同时对频率为1Hz的时钟进行计数,通过计数值,对各个时间段内交通灯信号进行描述;此外,模块还给出了下一步用于倒计时的信号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_logic; 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 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 numa=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仿真验证l 初始状态l 整体功能验证l reset键功能验证-将状态恢复至初始状态,计数器显示初始值,绿灯greena和红灯redb亮l 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_logic_unsigned.all;entity frequency10hz isport(clk20m:in std_logic; clk10hz:out std_logic);end;architecture count of frequency10hz issignal tout:integer range 0 to ;signal clk:std_logic;begin process(clk20m) begin if rising_edge(clk20m) then if tout= then tout=0; clk= not clk; else tout=tout+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 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; 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_logic; 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(timeoutdisplaydisplaydisplaydisplaydisplaydisplaydisplaydisplaydisplaydisplaydisplay=; end case; else display=; end if; end if; end process;end;(3)七段数码驱动显示模块display仿真验证 4.交通控制灯顶层电路设计4.1 原理说明交通顶层电路图如图8所示。图8中有3个输入信号clk20m、reset和hold。clk20m为系统输入时钟,它通过分频器可分别得到1Hz和10Hz频率信号,分别用来向controller模块和display模块提供时钟脉冲。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 端口设计说明l clk20m:系统输入时钟,来自于石英振荡器。l hold:输入,功能键,保持:按hold键能实现特殊的功能:显示倒计时的两组数码管闪烁;计数器停止计数并保持在原有的状态;东西,南北路口均显示红灯状态;特殊状态接触后可以继续计数。l reset:输入,功能键,复位。l flash:输出,转换期间的闪烁信号。l redb:输出,B路口显示红灯信号,高电平有效。l greenb:输出,B路口显示绿灯信号,高电平有效。l yellowb:输出,B路口显示黄灯信号,高电平有效。l reda:输出,A路口显示红灯信号,高电平有效。l greena:输出,A路口显示绿灯信号,高电平有效。l yellowab:输出,A路口显示黄灯信号,高电平有效。l displaya:A路口倒数时间显示十位数l displayb:A路口倒数时间显示个位数l displayc:B路口倒数时间显示十位数l displayd:B路口倒数时间显示个位数4.3 Quartus ii 仿真与结果分析交通灯控制系统的时序仿真波形如图9图11所示。可见,图9中reset设置为高电平“1”时显示初始值,为低电平“0”时显示器开始倒计时。图9 交通灯控制系统的时序仿真波形1 图10是仿真结果的细节部分。当A路口绿灯亮。displaya和displayb从20s倒计时,同时B路口灯亮,displayc和displayd从25s倒计时。当A路口绿灯倒计时结束时,让黄灯亮,倒计时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.1 学习并掌握Quartus ii软件,掌握用自顶向下的设计方法,使用VHDL语言来实现跑马灯的设计,并在此基础上熟悉可编程逻辑器件的使用。1.2 基础功能要求:实现8个红色LED的亮、灭、交错显示等,其显示如下 (1)复位时,8个灯全灭;(2)从左到右第一个开始亮,依次亮到最后一个;(3)从右到左第一个开始亮,依次亮到最后一个;(4)从中间亮到两边;(5)从两边亮到中间; 1.3 扩展功能要求:随着彩灯显示图案的变化,发出不同的音响声。2 方案设计框架2.1 这次的跑马灯设计采用模块化方法设计,整体方案包括分频器模块、计数器模块、选择器模块和彩灯控制器模块。其中彩灯控制器是用来输出不同的图案和音响声,彩灯控制器的输出则是用一个32进制的计数器来控制。扬声器的输出用不同的频率来控制,因此用了一个集成分频器来使输入的频率被分为几种不同的频率。不同频率的选择性的输出则是用一个4选一的选择器来控制。LED输出32进制计数器跑马灯控制器图3.1跑马灯的输出原理方框图提供控制端4进制计数器扬声器输出四选一的选择器提供脉冲分频器提供选择端 图3.2 扬声器输出原理方框图3.硬件电路的设计与软件设计3.1集成分频器模块1)设计要求显示不同的跑马灯的时候要伴随不同的音乐,所以设计分频器来用不同的频率控制不同的音乐输出。模块说明:Rst:输入信号,复位信号,用来复位集成分频器的输出使输出为“0”,及没有音乐输出。Clk:输入信号,即为分频输入的频率信号。Clk_4、clk_6、clk_8、clk_10:输出信号 即为分频模块对输入信号clk的分频,分别为1/4分频输出、1/6分频输出、1/8分频输出、1/10分频输出。 图3.1 集成分频器2)分频器VHDL程序编写及仿真结果LIBRARY ieee;USE ieee.std_logic_1164.all; - IEEE库使用声明ENTITY fenpinqi IS - 实体端口声明PORT(clk,rst: IN std_logic; - 类型的输入端口clk_10,clk_4,clk_6,clk_8: OUT std_logic); - 输出口END fenpinqi;ARCHITECTURE cd OF fenpinqi IS -结构体功能描述语句beginp1:process(clk,rst) -进程语句 variable a:integer range 0 to 20; begin if rst=1 then clk_4=3 then a:=0; -当a大于等于3时,则a等于0 clk_4=1; else a:=a+1; -否则a等于a加1 clk_4=0; end if; end if; end if;end process p1;p2:process(clk,rst) variable b:integer range 0 to 20; begin if rst=1 then clk_6=5 then b:=0; clk_6=1; else b:=b+1; clk_6=0; end if; end if; end if;end process p2;p3:process(clk,rst) variable c:integer range 0 to 20;begin if rst=1 then clk_8=7 then c:=0; clk_8=1; else c:=c+1; clk_8=0; end if; end if; end if;end process p3; -关闭进程p4:process(clk,rst) -开启另外一个进程variable d:integer range 0 to 20; -定义d为变量 begin if rst=1 then clk_10=9 then d:=0; clk_10=1; else d:=d+1; clk_10=0; end if; end if; end if;end process p4; end cd;图3.2 集成分频器仿真波形3.2 32进制计数器模块1) 32进制模块用来控制彩灯输出模块,即确定跑马灯控制器的不同的输出。Rst:输入信号 复位信号 用来复位32进制使其输出为“00000”。Clk:输入信号 用来给模块提供工作频率。Count_out4.0:输出信号 即为32进制计数器的输出。 图3.2 32进制计数器2)32进制计数器VHDL程序编写及其仿真结果library ieee;use ieee.std_logic_1164.all; - IEEE库使用声明entity counter_32 is -实体端口声明port(clk,rst: in std_logic; -声明clk,clr是标准逻辑位类型的输入端口count_out: out integer range 0 to 31);end counter_32;architecture a of counter_32 isbeginprocess (rst,clk) variable temp:integer range 0 to 32; -定义temp为变量beginif rst=1 then -条件选择语句 temp:=0;elsif (clkevent and clk=1) then temp:=temp+1; if(temp=32) then temp:=0; end if; end if; count_out=temp; end process;end a; 图3.4 32进制计数器仿真波形 3.3彩灯控制模块1) 彩灯控制模块用来直接控制跑马灯的输出,使彩灯表现出不同的花样。Rst:输入信号 使彩灯控制模块的输出为“”,即让彩灯无输出。Input4.0:输入信号 不同的输入使彩灯控制模块有不同的输出即彩灯显示出不同的花样。Output7.0:输出信号 直接与彩灯相连来控制彩灯 图3.5 彩灯控制模块 2) 彩灯控制模块VHDL程序编写及仿真LIBRARY ieee;USE ieee.std_logic_1164.all; - IEEE库使用声明ENTITY caideng IS - 实体端口声明 PORT(input: ININTEGER RANGE 0 TO 31; rst:in std_logic; output: OUT std_logic_vector(7 downto 0); sm :out std_logic_vector(6 downto 0);END caideng;ARCHITECTURE a OF caideng IS -结构体功能描述语句BEGIN PROCESS (input,rst) BEGIN if rst=1 then output=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smoutput=;smnull;-当sm为时,灯从右边亮到左边end case; end if; end process; end a;图3 .6 .跑马灯控制模块仿真波形3.4 4选1选择器模块1) Rst:输入信号 复位信号 使选择器的输出为“0”。In1、in2、in3、in4:输入信号 接分频器的输出。Inp1.0:输入信号 接4进制计数器的输出用来控制选择器的选择不同的输入选择不同的输出。Output:输出信号 直接接扬声器即输出的是不同的频率来控制扬声器播放音乐。 图4.7 4选1选择器2) 4选1选择器模块VHDL程序编写及仿真Library ieee;use ieee.std_logic_1164.all; - IEEE库使用声明entity mux41 is - 实体端口声明port( rst:in std_logic; s:in std_logic_vector(1 downto 0);a,b,c,d: in std_logic;y: out std_logic);end mux41;architecture a of mux41 is -结构体功能描述语句beginprocess (rst,s,a,b,c,d)begin if(rst=1) then yyyyynull; end case; end if; end process;end a;图4.8 4选1选择器仿真波形3.5 4进制计数器模块1) 4进制计数器作为选择器的输入来控制选择器选择不同的频率作为输出控制扬声器工作。Clk:输入信号 来为计数器提供工作频率。Rst:输入信号 复位信号 使计数器的输出为“00”。 图4.9 4进制计数器2) 4进制计数器模块VHDL程序编写及仿真Library IEEE;use ieee.std_logic_1164.all; - IEEE库使用声明entity counter_4 is - 实体端口声明port(clk,rst: in std_logic; - 声明clk,clr是标准逻辑位count_out: out integer range 0 to 3);end counter_4;architecture a of counter_4 isbeginprocess(rst,clk) variable temp:integer range 0 to 4;begin if rst=1then -如果rst为1,变量temp:为0,否则temp:=temp+1;temp:=0;elsif (clkevent and clk=1) then temp:=temp+1; if(temp=4) then temp:=0; end if;end if; count_out=temp; -把temp赋值给count_out end process;end a;图4.10 4进制计数器仿真波形5 系统结构及仿真 整个系统就是各个分模块组成来实现最后的彩灯控制功能,系统又两个时钟来控制一个是控制32进制计数器即控制彩灯控制模块来实现彩灯的不同输出,另一个时钟为分频器的输入来进行分频处理,最后用来控制扬声器发出不同的音乐,具体分频处理的时钟的频率比实现彩灯控制的时钟频率要高。 图 5.1 系统功能模块图 5.2 系统功能仿真波形C 数字钟设计1.系统设计要求(1)设计一个数字钟,要求可以显示小时和分钟(2)数字钟中采用同步时钟控制(3)为了增加设计难度和更深刻地理解数字钟的设计原理,系统设计师要求采用74161(16进制计数器)设计完成,不得使用74160(10进制计数器)2.系统设计和仿真验证2.1 整体方案设计图1 数字钟整体方案设计2.2 端口设计说明l VCC:电源,接+5V,对整个系统供电。l EN:使能端,当EN=1时,数字钟系统开始运行;当EN=0时,系统暂停计数。l GND:接地端l QHH0,QHH1,QHH2,QHH3:时钟输出小时显示高位l QHL0,QHL1,QHL2,QHL3:时钟输出小时显示低位l QMH0,QMH1,QMH2,QMH3:时钟输出分钟显示高位l QML0,QML1,QML2,QML3:时钟输出分钟显示低位2.3 功能仿真图2 EN使能端功能验证图3 数字钟功能仿真验证3. VHDL设计和RT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物业酬金制服务合同范本
- 高档消费品买卖合同范本
- 高龄员工家属免责协议书
- 煤矿托管合同协议书范本
- 自动生鲜车购买合同范本
- 烘焙店加盟合同协议范本
- 深圳市拆迁协议合同模板
- 银行解除合同协议书范本
- 网店服装合伙人合同协议
- 煤矿股权出让协议书范本
- 阳江市阳东区区内选调教师笔试真题2024
- 2025年滁州市来安县招聘社区专职工作者考试笔试试题(含答案)
- 2025年湖南省株洲市石峰区事业单位教师招聘考试《教育基础知识》真题(附答案)
- 注册安全工程师课件辅导
- 校级名师示范课活动方案
- 支气管肺炎的说课
- 设备技改异动管理制度
- 徐州市教师业务能力测试题库(数学)
- 管道支架重量计算表(计算支架)
- 党支部委员会书记选票
- 义务教育数学课程标准(2011年版)
评论
0/150
提交评论