2022年基于SOPC交通灯的EDA课程设计.docx
-
资源ID:12908527
资源大小:349.22KB
全文页数:22页
- 资源格式: DOCX
下载积分:4.3金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
2022年基于SOPC交通灯的EDA课程设计.docx
精品学习资源信息工程学院EDA 课程设计报告书题目:十字路口交通灯地设计专 业: 电子信息科学与技术班 级:学 号: 同学姓名: 指导老师:2021 年 5 月 12 日欢迎下载精品学习资源信息工程学院课程设计任务书同学姓名学 号成绩设计题目十字路口交通灯地设计设1. 总体设计框图2. 系统功能说明3. 工作原理介绍4. 引脚说明5. 软件设计流程计内容设1. 东西方向红灯亮时,南北方向绿灯亮2. 东西方向红黄亮时,南北方向绿黄亮3. 东西方向红绿亮时,南北方向红灯亮4. 东西方向和南北方向地红灯亮地时间均为15s5.东西方向和南北方向地黄灯亮灭闪耀5s,且在最终3s 时,两个方向地黄灯每隔1s 亮计要6.当紧急情形到来时,东西和南北方向地红灯全亮,数码管停止计时,紧急情形过后,系统复原正常7.点阵上循环显示 “交通灯 ”三个字,且每个字地显示时间为0.5s求参考资料2021 年 5 月 12 日欢迎下载精品学习资源信息工程系课程设计成果评定表同学姓名: 杨波 学号: 030940910专业(班级):电子信息科学与技术课程设计题目:十字路口交通灯地设计成果:指导老师:袁海林2021 年 5 月 12 日欢迎下载精品学习资源摘要随着社会经济地进展,城市交通问题越来越引起人们地关注.人、车、路三者地和谐,已成为交通治理部门需要解决地重要问题之一,城市地交通掌握系统是用于城市交通数据监测、交通信号掌握与交通疏导地运算机综合治理系统,它是现代城市交通监控指挥系统地 重要组成部分 .同时,生活水平地提高,汽车地普及化,给交通带来了更大地挑战,道路地负载加重,带来地是交通事故越来越多.所以,如何采纳合适地方法,最大限度地利用好交通灯地掌握,缓解城市道路交通堵塞问题,降低交通事故发生率,成为人们共同关注地话题.本设计采纳 FPGA 技术,完成了一个简洁有用地十字路口交通灯地掌握系统.关键字: 掌握治理缓解目录1 主要技术指标和方案阐述61.1 主要技术指标6欢迎下载精品学习资源1.2 方案阐述61.3 工作原理62 具体电路设计72.1 主掌握器地设计72.2 紧急情形电路设计72.3 译码电路72.4 蜂鸣器模块82.5 东西方向模块82.5.1 红黄绿灯掌握模块92.5.2 计时模块92.6 南北方向模块92.6.1 红黄绿灯掌握模块92.6.2 计时模块102.7 点阵模块102.8 蜂鸣器模块122.9 时钟模块123 引脚安排12总结14参考文献14附录:源程序清单151 主要技术指标和方案阐述1.1 主要技术指标1. 东西方向红灯亮时,南北方向绿灯亮2. 东西方向红黄亮时,南北方向绿黄亮欢迎下载精品学习资源3. 东西方向红绿亮时,南北方向红灯亮4. 东西方向和南北方向地红灯亮地时间均为15s5. 东西方向和南北方向地黄灯亮5s,且在最终 3s 时,两个方向地黄灯每隔1s 亮灭闪耀6. 当紧急情形到来时,东西和南北方向地红灯全亮,数码管停止计时,紧急情形过后,系统复原正常7. 点阵上循环显示 “交通灯 ”三个字,且每个字地显示时间为0.5s1.2 方案阐述系统采纳现场可编程规律器件作为主掌握器,外加按键模块、数码管显示模块、译码器模块、点阵显示模块和蜂鸣模块构成.计时数据在数码管上显示出来,点阵上循环显示“交通灯 ”三个字 .蜂鸣器作为紧急情形使用.系统地基本框图如下:图 1-1 系统原理框图1.3 工作原理系统开头时,南北方向和东西方向正常工作,两个方向地红、黄、绿三灯交替亮灭, 当紧急情形到来,即按键S1 按下时,两个方向地数码管停止计时,而且两个方向地红灯全部点亮,蜂鸣器响起,说明此时南北和东西方向行人和一般车辆严禁通行. 当紧急情形过后,系统复原正常,依据紧急情形到来之前连续工作.两个方向地时间显示用两位数码管显 示.2 具体电路设计2.1 主掌握器地设计系统采纳altera 公司地 cyconeIII 系列芯片,封装为FBGA 贴片式封装,速度等级3,引脚个数 780 个.由于引脚个数较其他芯片多,因此,外部硬件资源比较多,而且性能很好,欢迎下载精品学习资源稳固,易于掌握 .2.2 紧急情形电路设计本设计地紧急情形用按键来模拟,当按键按下时,紧急情形到来,按键释放后,紧急情形消逝 .按键与主掌握器连接图如下图所示:图 2-1 按键与主控器连接图按键只有规律电平 “ 0和”“ 1两”种状态,当按下时,为规律电平0,当未按下时,为规律电 平 1.本设计中只用到了其中地一个按键S1,当 S1 按下时,紧急情形到来,当S1 未按下时,没有紧急情形发生.2.3 译码电路译码电路为 3-8 译码器,它常常用在数码管地动态扫描中,输出端接数码管地8 个位选,每次可以选中一个数码管,而输入端为000-111 地 8 种组合,每一种组合对应一个输出, Y0-Y7 对应输入地 8 种输出,即当输入为000 时, Y0 选通,依次类推 .由于 8 位一体地数码管不能够在同一时间全部显示,因此,要通过译码电路对8 位数码管进行译码,一次只让一个数码管亮,通过人眼地视觉暂态效应,当扫描时间在人眼视觉效应之内时,看起来就像是几个数码管同时被点亮.这样既能够节省端口资源,又能达到很好地成效.译码器与主掌握器地连接图如下图所示:图 2-2 3-8 译码器与掌握器地接口图74LS138 为一个 3-8 线译码器,低电平输出,其工作原理见下表格:欢迎下载精品学习资源表 2-1 74LS138 译码表输入输出ABCY0Y1Y2Y3Y4Y5Y6Y7LLLLHHHHHHHLLHHLHHHHHHLHLHHLHHHHHLHHHHHLHHHHHLLHHHHLHHHHLHHHHHHLHHHHLHHHHHHLHHHHHHHHHHHL从表中可以看出:每输入一种组合,输出端只有一端响应,这样可以通过输入端地组合,选中想要选中地数码管,让其工作.而 74LS138 地使能端已经接了有效电平,设计中不用再管使能端地电平 .2.4 蜂鸣器模块当输入信号地电平为高电平 1 时,蜂鸣器响起,当输入电平为低电平 0 时,蜂鸣器不响 .因此,当紧急情形到来时,让蜂鸣器地输入端地电平为高电平,那么蜂鸣器就会响起;紧急情形过后,让蜂鸣器地输入端电平为低电平常,蜂鸣器就不响 .2.5 东西方向模块东西方向包含红黄绿灯掌握模块和计时模块 .2.5.1 红黄绿灯掌握模块由于东西方向计时与灯地掌握相同,设计中在此方向只用了三个灯,即红、黄、绿灯 . 用到地是试验系统中第一、二、三个灯,即 LED1 、LED2 、 LED3 ,分别表示红、黄、绿三种颜色地灯 .LED 灯与掌握器地连接图如下图所示:图 2-3 LED 与掌握器地连接图2.5.2 计时模块设计中采纳 8 段数码管显示,七段数码管是电子开发过程中常用地输出显示设备.可以显示数字 0-9,东西方向用地是第一、二个数码管,计时时间为红灯15s,黄灯 5s,绿灯欢迎下载精品学习资源15s.在试验系统中使用地是两个四位一体、共阴极型七段数码管.其单个静态数码管如下图4-1 所示.abcdefgdp111111000011000001110110102111100103011001104101101105101111106111000007111111108111101109图 4-1 静态七段数码管由于七段数码管公共端连接到GND (共阴极型),当数码管地中地那一个段被输入高电平,就相应地这一段被点亮.反之就不亮 .四位一体地七段数码管在单个静态数码管地基础上加入了用于挑选哪一位数码管位置选信号端口.工作原理都相同,八个数码管地a、 b、c、d、e、f、g、h、dp 都连在了一起,共8 根段选引脚, 8 个数码管分别由各自位置选信号来掌握,被选通地数码管显示数据,其余关闭,共码管显示 0-9 字符数据如下表:8 根位选引脚,总共16 根引脚 .共阴极数表 2-2 数码管字符显示表输入段选显示字符从表可以看出,当选中第1、2 个数码管时,只要依据表中地输入组合送入段选,那么数码管就会显示相应地数字,从而达到结果.2.6 南北方向模块南北方向包含红黄绿灯掌握模块和计时模块.2.6.1 红黄绿灯掌握模块欢迎下载精品学习资源由于南、北方向计时以及灯地掌握都相同,设计中在此方向只用了三个灯,即红、黄、绿灯和两个数码管.用到地是试验系统中第一、二、三个灯,即LED10 、LED11 、LED12 ,分别表示红、黄、绿三种颜色地灯.LED 灯与掌握器地连接图如图2-3 所示 .2.6.2 计时模块计时模块与东西方向相同,只是南北方向地计时用到地是试验系统中地第7、 8 个数码管,工作原理与东西方向地完全相同.当选中第 7、 8 个数码管时,送入表2-2 中地段选,可以显示相应地数字 .2.7 点阵模块本设计主要是完成汉字在LED 上地显示, 16*16 扫描 LED 点阵地工作原理与8 位扫描数码管类似,也是用到了人眼地视觉暂态效应,只是显示地方式与结果不一样.16*16 点阵由 256 个 LED 通过排列组合而形成16 行*16 列地一个矩阵式地LED 阵列,俗称 16*16 点阵 .单个地 LED 地电路如下图 13-1 所示:图 13-1单个 LED 电路图由上图可知,对于单个LED 地电路图当 Rn 输入一个高电平,同时Cn 输入一个低电平常,电路形成一个回路,LED 发光.也就是 LED 点阵对应地这个点被点亮.16*16 点阵也就是由16 行和 16 列地 LED 组成,其中每一行地全部16 个 LED 地 Rn 端并联在一起,每一列地全部16 个 LED 地 Cn 端并联在一起 .通过给 Rn 输入一个高电平,也就相当 于给这一列全部LED 输入了一个高电平,这时只要某个LED 地 Cn 端输入一个低电平常,对应地 LED 就会被点亮 .具体地电路如下图13-2 所示:图 13-216*16 点阵电路原理图因此,在点阵上显示一个字,就是要让这个字在点阵上所掩盖区域地LED 灯点亮,而其他区域地LED 灯被熄灭,例如,在点阵上显示中文“汉 ”字地显示图如下图13-3 所示:欢迎下载精品学习资源图 13-3 字符在点阵上地显示在上图中,只要将被“汉”字所掩盖地区域地点点亮,就在点阵中就会显示一个“汉” 字.依据前面我们所介绍地点阵显示地原理.当我们选中第一列后,依据要显示汉字地第一列中所需要被点亮地点对应地Rn 置为高电平,就在第一列中需要被点亮地点就会被点亮.依此类推,显示其次列、第三列 第 N 列中需要被点亮地点 .然后依据人眼地视觉原理,将每一列显示地点地间隔时间设为肯定地值,那么我们就会感觉显示一个完整地不闪耀地汉字 .同时也可以依据这个原理来显示其它地汉字下图11-4 是一个汉字显示所需要地时序图:图 13-4 显示时序图在上图中,在系统时钟地作用下,第一选取其中地一列,将数据输入让这列地LED 显示其数据(当为高电平常LED 发光,否就不发光) .然后选取下一列来显示下一列地数据 .当完成一个 16*16 点阵地数据输入时,即列挑选计数到最终一列后,再从第一列开头输入相同地数据.这样只要第一次显示第一列地数据和其次次显示第一列地数据地时间足够短,那么人地眼睛就会看到第一列地数据总是显示地,而没有停顿现象.同样地道理其它列也是这样,直到显示下一个汉字.在实际地运用当中,一个汉字是由多个八位地数据来构成地,那么要显示多个汉字地时候,这些数据可以依据肯定地规章存放到存 储器中,当要显示这个汉字地时候只要将储备器中对应地数据取出显示即可.字库数据地格式如下图:图 13-5字库格式欢迎下载精品学习资源该模块与掌握器地连接图如下图所示:图 13-616*16 点阵电路图2.8 蜂鸣器模块本设计中采纳蜂鸣器是为了在紧急情形下报警.紧急情形过后蜂鸣器停止报警,系统复原正常 .2.9 时钟模块时钟是一个系统正常工作地重要保证,没有时钟,再优越地条件,系统都不能正常工 作由于 FPGA 掌握器外设中不含有晶振,即时钟模块,只有一个时钟输入,但是该时钟频率对于完成本设计是不够地,数码管以及点阵地动态显示都要用到时钟,而且两个地扫描地时钟频率不一样,这样,就要求对原有地时钟频率进行分频,得到所需要地时钟频率.时钟与掌握器地连接图如下图所示:图 3-2 数字时钟信号模块电模块名称信号名称FPGA I/O 管脚号功能说明时钟模块CLKPin_A14时钟信号紧急情形模块S1Pin_AF5按键 0LED1Pin_AE8东西方向红灯西方向掌握模块LED2Pin_J22东西方向黄灯LED3Pin_M24东西方向绿灯LED10Pin_F22南北方向红灯3 引脚安排本模块用到地模块与试验箱地引脚连接如下表所示:东欢迎下载精品学习资源南北方向掌握模块LED11Pin_E22南北方向黄灯LED12Pin_F21南北方向绿灯LEDAG0Pin_G16数码管A 段LEDAG1Pin_G17数码管B 段LEDAG2Pin_F18数码管C 段LEDAG3Pin_G18数码管D 段LEDAG4Pin_G15数码管E 段LEDAG5Pin_G14数码管F 段LEDAG6Pin_G12数码管G 段LEDAG7Pin_M21数码管 DP 段DEL0Pin_C223-8 译码器第一个输入端DEL1Pin_D223-8 译码器其次个输入端DEL2Pin_G93-8 译码器第三个输入端DOT_R0Pin_C17点阵第一行DOT_R1Pin_D15点阵其次行DOT_R2Pin_D14点阵第三行DOT_R3Pin_D13点阵第四行DOT_R4Pin_D12点阵第五行DOT_R5Pin_D10点阵第六行DOT_R6Pin_C10点阵第七行DOT_R7Pin_C9点阵第八行DOT_R8Pin_D21点阵第九行DOT_R9Pin_C21点阵第十行DOT_R10Pin_D20点阵第十一行DOT_R11Pin_D19点阵第十二行DOT_R12Pin_C19点阵第十三行DOT_R13Pin_D18点阵第十四行DOT_R14Pin_C18点阵第十五行DOT_R15Pin_D17点阵第十六行DOT_C0Pin_L54-16 转换第一个输入端DOT_C1Pin_H64-16 转换其次个输入端DOT_C2Pin_H74-16 转换第三个输入端DOT_C3Pin_H54-16 转换第四个输入端数码管显示模块点阵显示模块欢迎下载精品学习资源总结通过本次设计,初步明白了quartusII 软件地基本操作 .熟识了数码管、点阵地动态扫描方法和原理,明白了VHDL 语言地结构特点及编程思想,能够编写简洁地程序.在设计过程中,遇到了很多地问题,通过与同学和老师地沟通,以及自己在图书馆查找资料,最终完成了本设计 .设计能够依据预期地要求正常工作,但是,设计仍存在一些不足,东西方向和南北方向地红绿灯计时时间相同,不能够达到两个方向地时间不同步显示;点阵只能够现实一般地数字和汉字,仍不能够现实人形,在红灯亮时,人形不动,当绿灯亮时,人形行走,此功能仍不能实现.在接下来地时间里,会在这方面有所突破,完善本设计.参考文献1. 赵明富,李立军 . EDA 技术基础 M. 北京:北京高校出版社,2007.62. 孟庆海,张洲 .VHDL基础及经典实例开发 M. 西安:西安交通高校出版社,2021.43. 杨承恩,谭克俊,颜得文.VHDL编程实例(第四版)M.北京:电子工业出版社,2021.64. 詹仙宁 .VHDL 开发精解与实例剖析M. 北京:电子工业出版社,2021.9欢迎下载精品学习资源附录:源程序清单- 十字路口交通灯地设计- 学号 030940910- 姓名杨波 -library ieee ;- 库文件use ieee.std_logic_1164.all ;use ieee.std_logic_unsigned.all ;use ieee.std_logic_arith.all ;entity traffic isportclk : in std_logic ;- 时钟信号del : buffer std_logic_vector2 downto 0;-3-8 译码器输入seg : out std_logic_vector7 downto 0 ;-数码管段选 key : in std_logic ;- 按键 S1,紧急情形east_west_led_red: out std_logic ;- 东西方向红灯east_west_led_yellow: out std_logic ;- 东西方向黄灯east_west_led_green: out std_logic ;- 东西方向绿灯south_north_led_red: out std_logic ;- 南北方向红灯south_north_led_yellow : out std_logic;- 南北方向黄灯south_north_led_green: out std_logic ;- 南北方向绿灯hang: out std_logic_vector15 downto 0 ; - 点阵地行lie: out std_logic_vector3 downto 0-4-16转换输入;end traffic ;architecture behave of traffic issignal count_nanbei : integer range 0 to 45 ;signal count_dongxi : integer range 0 to 45 ;signal num_nanbei : integer range 0 to 25 ;signal num_dongxi : integer range 0 to 25 ;欢迎下载精品学习资源signal e_w_shiwei: integer range 0 to 9 ;signal e_w_gewei: integer range 0 to 9 ;signal s_n_shiwei: integer range 0 to 9 ;signal s_n_gewei: integer range 0 to 9 ;signal dis: std_logic_vector7 downto 0;signal display: integer range 0 to 10 ;signal clk_count: std_logic_vector13 downto 0;signal clk1HZ: std_logic ;signal cdount: std_logic_vector3 downto 0;signal dount: std_logic_vector8 downto 0;signal s: std_logic_vector2 downto 0 ;beginprocessclk- 分频beginif clk'event and clk='1' then ifclk_count<10000 thenclk_count<=clk_count+1 ;elseclk_count<="00000000000001" ;end if ;end if ;clk1HZ<=clk_count13;end process;processclk beginifclk'event and clk='1' thendel<=del+1 ;seg<=dis;end if ;end process;processclk1Hz-beginifclk1Hz'event and clk1Hz='1' then ifkey='0' then- 紧急情形到来count_nanbei<=count_nanbei ; - 南北方向停止计数else ifcount_nanbei=46 then count_nanbei<=0 ;elsecount_nanbei<=count_nanbei+1 ;end if ;end if ;欢迎下载精品学习资源end if ;end process;processclk1Hz beginifclk1Hz'event and clk1Hz='1' then ifkey='0' then- 紧急情形到来count_dongxi<=count_dongxi; - 东西方向停止计数else ifcount_dongxi=46 then count_dongxi<=0 ;elsecount_dongxi<=count_dongxi+1 ;end if ;end if ;end if ;end process;processclk1Hz,count_nanbei beginifkey='0' then- 紧急情形到来south_north_led_red<='1' ;-南北方向红灯亮south_north_led_green<='0' ;south_north_led_yellow<='0' ;east_west_led_red<='1';- 东西方向红灯亮east_west_led_green<='0';east_west_led_yellow<='0' ;else ifcount_nanbei<=20 then south_north_led_red<='1' ;- 南北红灯亮south_north_led_yellow<='0' ;south_north_led_green<='0' ;east_west_led_red<='0' ;east_west_led_yellow<='0' ;east_west_led_green<='1';- 东西绿灯亮else ifcount_nanbei<=25 thensouth_north_led_red<='0' ;south_north_led_yellow<='1' ;-南北黄灯亮south_north_led_green<='0' ;east_west_led_red<='0' ;east_west_led_yellow<='1' ;- 东西黄灯亮east_west_led_green<='0';else欢迎下载精品学习资源south_north_led_red<='0' ;south_north_led_yellow<='0' ;south_north_led_green<='1' ;-南北绿灯亮east_west_led_red<='1' ;- 东西红灯亮east_west_led_yellow<='0' ;east_west_led_green<='0';end if ;end if ;end if ;end process;processcount_nanbei,count_dongxi beginifcount_nanbei<=20then- 南北和东西方向倒计时20snum_nanbei<=20-count_nanbei ;num_dongxi<=20-count_dongxi;else ifcount_nanbei<=25then- 南北和东西方向倒计时5s num_nanbei<=25-count_nanbei ;num_dongxi<=25-count_dongxi;else- 南北和东西方向倒计时20s num_nanbei<=45-count_nanbei ;num_dongxi<=45-count_dongxi;end if ;end if ;end process;processnum_nanbei- 南北时间显示分位beginifnum_nanbei<10 then s_n_gewei<=num_nanbei ;s_n_shiwei<=0 ;else ifnum_nanbei>=10then s_n_shiwei<=num_nanbei/10 ;s_n_gewei<=num_nanbei mod 10 ;end if ;end if ;end process;processnum_dongxi- 东西时间显示分位beginifnum_dongxi<10 then e_w_gewei<=num_dongxi ;e_w_shiwei<=0 ;欢迎下载精品学习资源else ifnum_dongxi>=10 then e_w_shiwei<=num_dongxi/10 ;e_w_gewei<=num_dongxi mod 10 ;end if ;end if ;end process;processdel begincase del+1 is-位选扫描加 1when "000"=>display<=e_w_shiwei ; - 第一个数码管显示东西十位when "001"=>display<=e_w_gewei ; -其次个数码管显示东西个位when "010"=>display<=10 ; -灭when "011"=>display<=10 ; - 灭when "100"=>display<=10 ; -灭when "101"=>display<=10 ; -灭when "110"=>display<=s_n_shiwei ; - 第七个数码管显示南北十位when "111"=>display<=s_n_gewei ; -第八个数码管显示南北个位end case;end process;processdisplay begincase display iswhen 0=>dis<="00111111";-0when 1=>dis<="00000110";-1when 2=>dis<="01011011";-2when 3=>dis<="01001111";-3when 4=>dis<="01100110";-4when 5=>dis<="01101101";-5when 6=>dis<="01111101";-6when 7=>dis<="00000111";-7when 8=>dis<="01111111";-8when 9=>dis<="01101111";-9when others=>dis<="00000000" ; - 灭end case;end process;processclk- 分频beginifclk'event and clk='1'then dount<=dount+1 ;ifdount=255thenifs=7then欢迎下载精品学习资源s<="000" ;elses<=s+1 ;end if ;s<=s+1; elses<=s;end if ;ifcdount<15then cdount<=cdount+1 ;elsecdount<="0000" ;end if ;end if ;lie<=cdount ;end process;processcdount,s-交beginif s="00" then case cdount iswhen "0000"=>hang<="0001000000000001";when "0001"=>hang<="0001000010000001";when "0010"=>hang<="0001000100000010";when "0011"=>hang<="0001001000000010";when "0100"=>hang<="0001110100000100";when "0101"=>hang<="0001000010001000";when "0110"=>hang<="1001000001010000";when "0111"=>hang<="0111000000100000";when "1000"=>hang<="0001000001010000";when "1001"=>hang<="0001000010001000";when "1010"=>hang<="0001100100000100";when "1011"=>hang<="0001010000000100";when "1100"=>hang<="0001001000000010";when "1101"=>hang<="0011001100000011";when "1110"=>hang<="0001000000000010";when "1111"=>hang<="0000000000000000";end case;else if s="01" then - 通case cdount iswhen "0000"=>hang<="0000001000000000" ;when "0001"=>hang<="0100001010000010" ;when "0010"=>hang<="0010001000000100" ;欢迎下载精品学习资源when "0011"=>hang<="0011001111111000" ;when "0100"=>hang<="0000000000000100";when "0101"=>hang<="0000000000000010";when "0110"=>hang<="1000111111111101" ;when "0111"=>hang<="1000100100100001";when "1000"=>hang<="1010100100100001";when "1001"=>hang<="1001111111111101" ;when "1010"=>h