首页 基于FPGA的交通灯控制电路设计毕业设计(论文)

基于FPGA的交通灯控制电路设计毕业设计(论文)

举报
开通vip

基于FPGA的交通灯控制电路设计毕业设计(论文)基于FPGA的交通灯控制电路设计毕业设计(论文) 毕业设计(论文) 设计(论文)题目: 基于FPGA的交通灯控制电路设计 I 摘 要 超高速硬件描述语言VHDL,是对数字系统进行抽象的行为与功能描述到具体的内部线路结构描述,利用EDA工具可以在电子设计的各个阶段、各个层系进行计算机模拟验证,保证设计过程的正确性,可大大降低设计成本,缩短设计周期。本文介绍基于FPGA的交通灯控制电路设计,利用基于VHDL的EDA设计工具,采用大规模可编程逻辑器件FPGA,通过设计芯片来实现系统功能。 交通灯控制系统可以实...

基于FPGA的交通灯控制电路设计毕业设计(论文)
基于FPGA的交通灯控制电路设计毕业设计(论文) 毕业设计(论文) 设计(论文)题目: 基于FPGA的交通灯控制电路设计 I 摘 要 超高速硬件描述语言VHDL,是对数字系统进行抽象的行为与功能描述到具体的内部线路结构描述,利用EDA工具可以在电子设计的各个阶段、各个层系进行计算机模拟验证,保证设计过程的正确性,可大大降低设计成本,缩短设计周期。本文介绍基于FPGA的交通灯控制电路设计,利用基于VHDL的EDA设计工具,采用大规模可编程逻辑器件FPGA,通过设计芯片来实现系统功能。 交通灯控制系统可以实现路口红绿灯的自动控制。基于FPGA设计的交通灯控制系统拥有电路简单、可靠性强、实时快速擦写、运算速度高、故障率低、可靠性高,而且体积小的特点。本设计采用Altera公司Cyclone系列的EP2C5Q208C8N芯片,在Quartus II软件平台上使用VHDL语言,采用自顶向下的设计 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 对系统进行了模块化设计和综合,并进行了仿真。该系统可实现十字路口红绿灯及左转弯控制和倒计时显示,根据仿真结果结果显示该系统能够自动控制交通灯转变。 【关键词】VHDL 交通灯 EDA II ABSTRACT With the development of the economy,microelectronic technology, computer technology and the automatic theory are developed rapidly. Its application is becoming more and more widely. But the traffic light as an important traffic,it also has developed quickly with the improving requirement of the people.On all the system of the traffic light,The system of traffic control which designed based on FPGA is accepted by more and more people. The system of traffic control can realize the automatic control of traffic light in a intersection. The system of traffic control which designed based on FPGA has many characteristics such as simple circuit,reliable operation,toerase function quickly with real-time applications,high speed,high reliability,low failure rate,and small volume. By using the platform of software design system Quartus II and the form of the VHDL language,we simulate the system by using EPlC3T1444C8 Mars device and the result show that the download system can automatically control the traffic lights. 【KEY WORDS】: VHDL traffic light EDA III 目 录 .......................................................................................................................1 前 言 第一章 绪论..............................................................................................................2 第一节 课题研究背景及意义 ...........................................................................2 一、课题研究背景.....................................................................................2 二、课题研究意义.....................................................................................3 国内外研究发展概述 ...........................................................................4 第二节 一、智能交通系统的发展历史与现状 ......................................................4 二、可编程逻辑器件的发展状况 .............................................................5 第三节 本文行文安排 ......................................................................................7 第四节 本章小结 ..............................................................................................7 第二章 FPGA的简介 ...............................................................................................8 第一节 FPGA的设计流程................................................................................8 一、设计输入 ............................................................................................9 二、功能仿真 ............................................................................................9 三、综合及时序仿真 .................................................................................9 四、实现 .................................................................................................. 10 五、加载配置与调试 ............................................................................... 10 第二节 FPGA的应用 ..................................................................................... 10 一、电路设计 .......................................................................................... 10 二、产品设计 .......................................................................................... 10 三、系统级应用 ...................................................................................... 10 第三节 本章小结 ............................................................................................ 10 第三章 VHDL硬件描述语言................................................................................. 12 第一节 VHDL程序基本结构 ......................................................................... 12 一、实体 .................................................................................................. 12 二、结构体 .............................................................................................. 13 三、库 ...................................................................................................... 14 第二节 VHDL语言 ........................................................................................ 12 一、VHDL文字规则 ............................................................................... 14 二、VHDL数据对象 ............................................................................... 14 三、VHDL数据类型 ............................................................................... 15 四、VHDL 顺序语句 .............................................................................. 15 IV 五、VHDL并行语句 ............................................................................... 15 第三节 本章小结 ............................................................................................ 16 第四章 系统设计与仿真 ........................................................................................ 17 第一节 系统介绍 ............................................................................................ 17 一、设计任务 .......................................................................................... 17 二、设计要求 .......................................................................................... 17 第二节 系统设计仿真 .................................................................................... 18 一、顶层框图的设计 ............................................................................... 18 二、时序状态图的设计 ........................................................................... 19 三、工程设计流程框图: ....................................................................... 20 第三节 各个模块的设计与仿真 ..................................................................... 20 一、 模块设计 ........................................................................................ 20 二、control模块设计 .............................................................................. 21 三、daojishi模块设计 ............................................................................. 22 四、Main模块设计 ................................................................................. 23 五、码模块设计 ...................................................................................... 24 六、译码显示模块设计 ........................................................................... 25 七、顶层文件设计................................................................................... 25 八、实现平台 .......................................................................................... 26 第四节 本章小结 ............................................................................................ 27 第五章 结论与展望 ................................................................................................ 28 第一节 结 论 .................................................................................................. 28 第二节 展 望 .................................................................................................. 28 致 谢 ....................................................................................................................... 30 参考文献 ................................................................................................................. 31 附录 ................................................................................................................. 32 一、英文原文 .................................................................................................. 32 二、英文翻译 .................................................................................................. 40 三、程序代码 .................................................................................................. 47 V 前 言 当今社会是数字化的社会,是数字集成电路广泛应用的社会。数字集成电路本身在不断进行更新换代,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。系统设计师更愿意自己设计专业集成电路(ASIC)芯片,而且希望设计周期尽可能短,最好在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程器件(FPLD)、现场可编程门阵列(FPGA),即属其中应用最广泛的一种。 随着电子技术的发展,特别是大规模集成电路和计算机技术的研制和发展,让电子产品设计有了更好的应用市场,实现方法也有了更多的选择,而电子电路的设计却变得越来越复杂,使用“语言”进行电子设计已成为一种趋势。现代电子系统设计方法是设计师自己设计芯片来实现电子系统的功能,将传统的固件选用及电路板设计工作放在芯片设计中进行。在这些专业化软件中,EDA(Electronic Design Automation)具有一定的代表性,EDA技术是一种基于芯片的现代电子系统设计方法。基于EDA技术的现场可编程门阵列(FPGA)电路,在数字系统设计和控制电路中越来越受到重视。VHDL语言是电子设计的主流硬件描述语言,它更适合进行行为描述,这种方式使得设计者专注于电路功能的设计,而不必过多地考虑具体的硬件结构。基于EDA技术的现场可编程门阵列(FPGA)电路,提出现场可编程门阵列(FPGA)是近年来迅速发展的大规模可编程专用集成电路(ASIC),在数字系统设计和控制电路中越来越受到重视。VHDL语言是电子设计的主流硬件描述语言,它更适合进行行为描述,这种方式使得设计者专注于电路功能的设计,而不必过多地考虑具体的硬件结构。 1 第一章 绪论 第一节 课题研究背景及意义 一、课题研究背景 交通信号灯在人们的日常生活中起着至关重要的作用。但是随着国民经济的快速发展,城市化建设规模的不断扩大,人们对交通信号灯在协调交通、管理交通等方面的能力,提出了更高的要求。尤其是在当今社会,城市交通拥堵,城市交通基础设施滞后,常见的交通信号灯不能很好的处理人、车、路三者之间的协 [1]调关系,由此带来了很多问题。常见的问题有以下几个方面: ?交通事故发生频率居高不下,人民生命财产损失严重。根据统计研究表明:在全世界范围内,每年都有将近一百一十四万人死于交通事故,这个人数可以与战争当中的死亡人数相比。20世纪,由于交通事故,全世界共死亡的人数有两千五百八十五万人,该数字比第一次世界大战中死亡的人数还要多。在长达十年的战争中,美军共死亡五万人,这个数字相当于20世纪70年代美国一年的交通事故死亡人数。而且,20世纪一共生产了大约二十二亿多辆机动车,也就是说,每一百辆机动车平均夺走1.2人的生命。 ?交通拥堵状况日益严重,能源与经济损失惨重,交通问题是困扰城市经济社会发展的诸多原因之一。在世界许多大城市,如纽约、巴黎,其市中心高峰时车速仅在16公里/小时时左右,公共汽车速度更低;在日本东京市内,早晚高峰时车速仅为9公里/小时左右,最低时只有4公里/小时左右,出现了乘车比步行还慢的情况。我国许多城市市区,早晚高峰时车速也仅为10公里/小时。交通问题也给全世界带来了不小的经济损失。根据统计研究表明:在英国一个大约有一百个平面交叉路口的城市内,每年由于车辆的延误而造成的经济损失就达400万英镑。在东京,通过268个主要平面交叉路口的低效率交通流引起的年经济损失约为2亿美元;在巴黎,每天由于交通拥挤引起的损失时间相当于一座拥有十万人口的城市的一个工作日。 ?交通问题引起的空气污染和噪声污染日益加剧,汽车尾气排放以及噪声都是严重的环境污染源。在城市的日常生活当中,由于交通问题所带来的空气污染和噪声污染尤为严重。对于城市中有限的土地资源和能源来说,交通问题还间接的造成了资源的使用率低下,公共运输系统的吸引力降低,运行效率下降,严重影响了人们生活的质量。由这些问题我们可以清楚的认识到,交通控制的意义显 2 得尤为重要。随着计算机技术、通信技术、信息技术、控制技术等一些列高新技术的发展,给智能交通系统的发展带来了突破性的进展,同时也给交通灯控制系统的发展,这一智能交通系统的重要组成部分带来了新的曙光。 本课题的研究背景涉及以下几个方面:其一是智能交通系统的研究与应用,其二是EDA技术的研究与实践,第三是可编程逻辑技术的研究与应用。交通控制系统是智能交通系统的重要组成部分。目前,智能交通系统是我国交通运输领域的前沿研究课题。所研究的核心问题是针对日益严重的交通需求以及交通资源压力,采用信息技术、通信技术、计算机技术等,对传统的交通运输系统进行深入的改造,以提高系统资源的使用效率和提升交通企业的服务和管理水平。 二、课题研究意义 在城市道路中,交通信号控制是至关重要的,尤其是交叉路口的。因为在不同时刻,交叉路口的机动车流量是不确定和复杂的,而固定时间控制方法的使用常常会导致出现空等现象的产生,使道路有效利用时间被白白浪费,严重影响了道路的通畅。这不仅让司机乘客抱怨,更重要的是这会对人力和物力资源造成极大的浪费。在人多、车多道路少的道路交通拥堵状况已经很明显的情况下,采用有效的方法控制交通信号势在必行。 [2]在数字集成电路设计中,交通信号控制系统的设计一直是热点研究问题。但是若采用专用集成电路(Application Specific Integrated Circuit,ASIC)进行定制生产不仅成本高昂,而且开发周期长,无法迅速开发出产品投入市场。而现场可编程门阵列(Field-Programmable Gate Array,FPGA)作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。相对于ASIC设计开发,FPGA的设计开发周期短,定制成本低,FPGA设计流程避免了复杂又耗时的布局和布线、时序分析、掩模以及项目的re-spin等阶段,这是因为设计逻辑已经被综合到特定的,经过验证的FPGA器件上来。在以前FPGA多用于速度、复杂度和容量都比较低的设计中,但是随着技术的进步,现在的FPGA可以轻松突破500MHz的性能障碍,这使得FPGA能够以更高的性价比实现更大的逻辑密度和其它的很多特性(例如嵌入式CPU、DSP模块和高速串行),当今FPGA已经成为绝大多数设计 [3-4]项目,特别是需要快速投放市场并且支持远程升级的小型设计项目的首选。 本文就是在这样的背景下研究基于FPGA的交通灯实时控制系统的设计与实现。在EDA技术的基础上,以FPGA为开发平台,采用Verilog HDL硬件描述语言,设计为了解决上述问题,多年来各国政府都采取了各种手段解决,主要有加强交通规划,加大交通基础设施建设投入,使用行政手段改变交通运行规律。 3 但面对迅猛增长的机动车保有量,这些方法都不能长远地解决问题。而随着环保意识的增强,人们越来越多地从节约能源,谋求社会可持续发展的角度来考虑问题。为此,在长期的摸索解决问题后,随着电子技术,计算机技术以及信息技术的高速发展,将人、车、路三者综合起来,通过系统工程的观点思考,并把计算机,电子,通信以及控制技术的智能交通系统(Intelligent Transportation system, [5]简称ITs)就自然诞生了,并且迅速在世界各国推进。交通信号控制系统作为智能交通系统的重要组成部分,对于保证机动车辆的安全运行,维持城市道路的顺畅起到了重要作用,所以交通信号控制系统也成为当前研究发展热点。 第二节 国内外研究发展概述 一、智能交通系统的发展历史与现状 智能交通系统是将先进的计算机处理技术、信息技术、数据通信传输技术、自动控制技术、人工智能及电子技术等有效地综合运用于交通运输管理体系统中,建立一种在大范围内、全方位发挥作用的准时、准确、高效的交道运输管理体系。 早期的智能交通研究工作,可以追溯到1970年,当时美国开发出了ERGS电子道路诱导系统(Electronic Route Guidance system)。随后,日本在1973年,开发出了eATes汽车交通综合控制系统(emprehensive Automobile afficeontrol system)。与此同时,德国也在七十年代开发出了ALI驾驶员引导和公路信息系统(Autofahrer Leitund hiformation System)。但是,智能交通系统这一概念的正式提出,应该从1990年美国智能交通学会(当时称美国智能车辆公路学会,HvTS)开始的。对智能交通系统研究和实施的大力开展也是从这个时候步入了飞速发展的阶段。经过了十几年的研究、试行和发展。现已证明,解决目前经济发展所带来交通问题的最理想 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 便是智能交通系统。智能交通系统是将信息处理、通讯、计算机和电子技术集成到一起的一项新技术领域。智能交通系统能最佳利用现有宏观交通设施(道路、桥梁、隧道等),有效地缓解交通堵塞,减少交通事故,建立舒适安全的交通环境。迄今为止,在世界范围内都己经有了成功应用的范例。 美国于1992年制定了《美国智能交通系统战咯规划》,规划中将智能交通系统划分为先进交通管理系统(ATMS)、先进出行信息系统(ATIS)、先进车辆控制与安全系统(AVcsS)、车辆操作系统(Cvo)、先进公共交通系统(APTS)、农区交通系统(RTS)等研究开发领域。 4 与此同时,大规模的智能交通试验项目在美国地方政府、企业和有关院校的支持下迅速展开。美国在以下几个方面的应用与实践中取得了丰富的经验,比如城市交通监控与管理、智能化交通指挥、交通信息诱导、电子收费、无人管理城市停车、商务车辆的智能化管理与调度、智慧卡与预付卡在公共交通中的应用、505急救电话以及系统互联等等。这些系统的应用面积已经覆盖了美国80%以上的国土。欧洲和日本等一些发达国家,在智能交通系统的研究与应用中也取得了不错的成效。与美国不同的是,日本对于智能交通系统的研究更加侧重于城市交通管理和交通信息系统,取得了很多重要成就,比如都市交通监控与智能交通信号控制、高速公路监控系统、实用城市停车系统、出行信息系统、车辆导航系统、车辆定位系统、公共汽车定位与到站预报系统、电子收费系统、隧道监视及事故检测系统、数字地图系统等等。 我国的智能交通系统还处于起步阶段,还没有制定统一的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 。但是智能交通系统的出现给我国的交通运输行业带来了巨大的机遇和挑战,交通设施、交通管理以及交通工具都会发生巨大的变革。交通灯控制系统是城市交通控制系统的重要组成部分,也是智能交通系统的重要组成部分。 二、可编程逻辑器件的发展状况 [6] 早期的可编程逻辑器件只有可编程只读存贮器(PROM)、紫外线可擦除只 读存贮器(EPROM)和电可擦除只读存贮器(EEPROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。之后,出现的一类可编程芯片在结构上稍微复杂一些,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的PLD由一个“或”门和一个“与”门阵列组成,而任意一个组合逻辑都可以用“与一或”表达式来描述,所以PLD能以乘积和的形式完成大量的组合逻辑功能。 这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。 PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和EEPROM技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。PLA器件既有现场可编程的,也有掩膜可编程的。在PAL的基础上,又发展了一种通用阵列逻辑GAL(Generic Array Logic),如GAL16V8,GAL22V10 等。它采用了EEPROM工艺,实现了电可按除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电 5 路。 为了弥补这一缺陷,上世纪八十年代中期,Xilinx和Altera分别推出了类似于PAL结构的扩展型CPLD(Complex Programmab1e Logic Dvice)和与标准门阵列类似的FPGA(Field Programmable Gate Array),它们都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。与门阵列等其它ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在10000件以下)之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。 经过25年的发展,制造工艺不断进步,FPGA和CPLD器件受到越来越多的电子系统设计师的关注,其优越性也渐渐显现,主要表现在以下几方面: ?FPGA的可编程性是与生俱来的,它导致了电子设计的软硬件协调和并行,极大地提高了设计效率并减少了资源占用。 ?由于掩膜成本、工具成本和开发成本(人年数)居高不下,ASIC设计的NRE(一次性工程费用)又变得难以接受(45纳米工艺ASIC的投片成功率理论上为50%),相反FPGA比ASIC的开发时间平均少55%,所以近3年来电子系统用ASIC的设计下降了50%。 ?从1990年到2010年,FPGA的价格下降到原来的1/2500,集成度提高了1000倍,功耗降低到原来的1/250,速度提高了200倍。 ?从只用于原型设计,到代替定制芯片,FPGA市场迅速扩展到ASIC的传统市场,将来很多系统会以FPGA为中心来设计。 随着国家的重视,目前国内研究和开发FPGA的机构逐渐增多,包括学校、科研院所及公司,但真正在市场上能够卖的产品并不多。中国作为一个大国,站在国家的战略层面上看,FPGA是必须发展的,即使没有自主创新的技术,但至少也要做到自主可控。因为FPGA代表了集成电路非常重要的方向,今后有可能像CPU一样。当国内企业的水平离那些发达国家很远的时候,还能够购买到一些产品。但随着国内企业技术水平的逐渐提高,以至于和其越来越接近,这时候,发达国家对核心器件的控制就会很严格,核心技术和产品便不能轻易得到。国内FPGA最有可能突破的领域主要是以下两个:第一是应用在国家核心安全部门的FPGA,如军事及航空航天领域,这些领域会比较强地体现国家意志;第二是用量比较大的嵌入式应用,就是把FPGA嵌入到SoC的电路中。在可编程器件生产及应用方面,国内企业虽然起步晚,但在由中国制造模式转变为中国创造模式 6 的发展趋势下,中国自己的FPGA企业必有崭露头角的一天。 第三节 本文行文安排 本文行文安排如下: 第一章主要论述本课题的研究意义及背景,表明了本课题研究的重要性。然后回顾了国内外智能交通系统与可编程逻辑器件的发展历史与现状,并对本文做了安排,给读者一个清晰的论文框架。 第二章对FPGA做了系统描述,其中主要包括FPGA的概述、应用,为下文奠定了理论基础。 第三章主要详细描述了VHDL语言程序基本结构,包括实体、结构体、库,接着论述了VHDL的文字规则、数据对象、数据类型、顺序语句、并行语句,给了读者清晰的概念,为下文的程序设计奠定了基础。 第四章主要叙述了本课题的系统介绍,包括设计任务和要求,然后主要介绍了系统设计仿真,包括顶层框图的设计、时序状态图的设计、工程设计流程框图、芯片的选择、最后是各个模块的设计与仿真,基本完成了实验的各部分设计,实现了系统要求。 第五章总结了全文所做的研究,并对未来的研究做出了展望。 第四节 本章小结 本章对论文的研究意义及研究背景进行了阐述,明确了论文的工作重点。回顾了国内外智能交通系统以及可编程逻辑器件的发展历史与现状,最后讲述了论文的基本框架,明确了每个章节的主要内容和重点,对论文的主要工作有个清楚的认识。 7 第二章 FPGA的简介 [7]FPGA(Field Programmable Gates Array,现场可编程门阵列)是可编程逻辑器件,他们的规模比较大,适合于时序、组合等逻辑电路的应用。它可以替代几十甚至上百块通用IC芯片。这种芯片具有可编程和实现方案容易改动等特点。由于芯片内部硬件连接关系的描述可以存放在磁盘、ROM、PROM或E2PROM中,因而在可编程门阵列芯片及外围电路保持不动的情况下,换一块EPROM芯片,就能实现一种新的功能。它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此可广泛应用于产品的原型设计和产品生产之中。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。 目前以硬件描述语言所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。 第一节 FPGA的设计流程 FPGA的设计流程就是利用EDA开发软件和编程工具对FPGA芯片进行开发的过程,开发流程图如图所示: 制定 设计方案 关于薪酬设计方案通用技术作品设计方案停车场设计方案多媒体教室设计方案农贸市场设计方案 设计输入 功能仿真 综合优化实现 (翻译,映射, 布局布线) 图2.1 FPGA开发一般流程示意图 8 时序仿真验证 在载配置在线 调试 FPGA的设计流程一般包括以下几个步骤:电路功能设计、设计输入、功能 [8]仿真、综合及时序分析、实现、加载配置和测试几个阶段,开发流程图如上图所示。各个阶段都可以用不同的方法和工具实现,论文主要介绍一些最基本的流程,其他流程只是根据实际的项目作了少量的修改,在本质上没有变化。FPGA设计的最基本流程包括:设计输入、编写VHDL语言和仿真、综合及时序分析、实现、加载配置和调试。以下对每一步作简要的解释。 一、设计输入 设计输入就是将所设计的系统或者电路以开发软件要求的某种形式表示出来,并输入给EDA工具的过程。常用的输入方法有硬件描述语言(verilog或者VHDL等)、原理图输入方式以及波形图输入方式。由于采用硬件描述语言具有可移植性好、易维护、效率高等特点,目前大部分设计都采用这种方式。硬件描述语言输入的方式在实质上可以理解为编写具有RTL风格的代码,把所要实现的电路描述出来。 二、功能仿真 代码编写完成以后就进入了功能仿真阶段,这一阶段的主要任务就是Quartus II仿真。Quartus II 是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。Quartus II提供了完全集成且与电路结构无关的开发包环境,具有数字逻辑设计的全部特性,包括:可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑。功能强大的逻辑综合工具;完备的电路功能仿真与时序逻辑仿真工具等。 三、综合及时序仿真 综合是这样一个过程,将较高级抽象层次的描述转化为较低层次的描述。即将设计输入编译成由与门、或门、非门、RAM、触发器等基本门逻辑单元组成的逻辑连接网表,并非是真是的门级电路。真实的门级电路需要利用FPGA制造商的布局布线功能,根据综合后生成的标准门级结构网表来产生。 9 四、实现 实现是将综合生成的逻辑网表配置到具体的FPGA芯片当中。综合工具输 但是FPGA内部并不出的网表包括了各种基本门电路以及它们之间的连接关系, 存在这些门电路的物理结构,只有查找表、触发器等物理单元,因此需要把综合输出的网表配置到FPGA上,这个过程就是实现。FPGA的实现具体包含了翻译、映射以及布局布线这三个步骤。实现之后,有的清况下需要进行后仿真(也可以叫做功能仿真),具体验证实现后的逻辑是否正确,延时会不会导致功能错误等等。 五、加载配置与调试 布局布线完成以后,将生成的配置文件通过集成开发环境配置到FPGA当中,就可以实际测试了。如果期间出现了问题,可以使用逻辑分析仪、在线逻辑分析仪或者示波器等工具进行调试。 第二节 FPGA的应用 FPGA的应用可分为三个层面:电路设计、产品设计、系统设计。 一、电路设计 连接逻辑,控制逻辑是FPGA早期发挥作用比较大的领域也是FPGA应用的基石。事实上在电路设计中应用FPGA要求开发者要具备相应的硬件知识(电路知识)和软件应用能力(开发工具)。 二、产品设计 把相对成熟的技术应用到某些特定领域开发出满足行业需要并能被行业客户接受的产品。这方面主要是FPGA技术和专业技术的结合问题,重点在性能, FPGA技术在这个领域是一个实现手段,FPGA因为具备接口,控制,功能IP,内嵌CPU等特点有条件实现一个构造简单,固化程度高,功能全面的系统产品设计。 三、系统级应用 系统级的应用是FPGA与传统的计算机技术结合,实现一种FPGA版的计算 10 机系统如用Xilinx V-4,V-5系列的FPGA,实现内嵌POWER PC CPU,然后再配合各种外围功能,这个平台上跑LINIX等系统这个系统也就支持各种标准外设和功能接口了,这对于快速构成FPGA大型系统来讲是很有帮助的。 第三节 本章小结 本章主要简要介绍了FPGA,其中主要包括FPGA的概述、应用,为下文奠定了理论基础。 11 第三章 VHDL硬件描述语言 第一节 VHDL程序基本结构 在一个比较完整的VHDL程序基本上包括五部分:实体、配置、结构体、库 [9]和程序包。程序模板如下: LIBRARY library name; USE library name.package name.all; ENTITY entity name IS GENERIC ( parameter name :string:=default value; parameter name :integer:=default value); PORT ( input name,input name: IN STD-LOGIC; Input vector name:IN STD_LOGIC_VECTOR( high DOWNTO low); output name,output name:OUT STD_LOGIC); END entity name; ARCHITECTURE a OF entity name IS SIGNAL signal name:STD_LOGIC; BEGIN --process statement (optional): --generate statement (optional) END a; 一、实体 VHDL实体是一个设计实体(独立的电路功能结构)的结构之一,它的作用是对这个设计实体与外部电路进行接口描述。实体是设计实体的表层设计单元,实体说明部分规定了设计单元的输入输出接口信号或引脚,它是设计实体对外的一个通信界面。端口名是赋予每个系统引脚的名称。一个实体通常有一个或多个端口,端口类似于原理图部件符合上的管脚。实体与外界交流的信息必须通过端口通道流入或流出。VHDL要求只有相同的数据类型的端口信号和操作数才能相 12 互作用。 二、结构体 图2.1 结构体构造图 在这里块语句是一连串平行语句组成的组合体,它的作用是把结构体中的并行语句组成一个或着多个子模块;进程语句:定义顺序语句模块,用于将从外面 [10]获取的信号值或内部演算数据向其余的信号进行赋值;信号赋值语句:将设计的实体内的处理结果向之前定义的信号或界面端口进行赋值;子程序调用语句:用以调用过程或函数,并将获得的结果赋值与信号;元件例化语句:就是将提前设定好的设计实体作为一个元件,然后运用映射语句把该元件与另外的一个设计实体中的指定端口,继而实现层次化的设计。 结构体是实体所定义的设计实体中一个构成部分。结构体描述的设计实体的内部结构和外部设计实体端口间的逻辑关系。结构体的组成部分是:对数据类型 [11]的、常数、信号、子程序和元件等元素的说明部分。描述实体逻辑行为的,以各种不同的描述风格表达的功能描述语句。以例化语句为特征的外部元件端口间的连接。 每个实体可以拥有多个结构体,但是综合器只能够接受一个结构体。并且每 13 个结构体对应的实体不同的结构和算法实现方案,其间的各结构体的位置是平等的。 三、库 库是可以看成是一种用来储存预先完成的程序包、数据集合体和元件的仓库。一般的,库中放置不同的程序包、而程序包中又可以放置不同数量的子程序;子程序中又含有函数、过程、设计实体(元件)等基础设计单元。 VHDL语言的库分为两类:一类是设计库,如在具体设计项目中用户设定的文件目录所对应的work库;另一类是资源库,资源库是常规元件盒标准模块存放的库。VHDL程序设计中常用的库有IEEE库,STD库,WORK库及VITAL库。在平时的FPGA/CPLD的实验和开发,IEEE库中的四个程序包STD-LOGIC-ARITH、STD-LOGIC-1164、STD-LOGIC-SIGNED和STD-LOGIC-UNSIGNED 足够工程师使用。但是也要注意在使用库之前,一定要进行库说明,库的说明总是放在设计单元的前面。 第二节 VHDL语言 一、VHDL文字规则 VHDL文字主要有数值型文字和字符串型文字以及标识符。数值型文字主要整数(十进制),实数(十进制,小数点),数制(进制基数#数值#指数,各部全为十进制)同时指数为零可以省略,物理数字。字符串型文字包括文字字符串以及数字字符串。标识符:用于常变量、信号、端口、子程序或参数的名字;有效字符;必须以英文字母开头;下划线必须单一,前后必须有字母或数字;不区别字母大小写。 二、VHDL数据对象 在VHDL中,数据对象相当于传递信息的载体,根据不同的数据类型 赋予不同的值。在VHDL数据对象的中包含三中类型:常量,变量,信号。 常量:顾名思义是规定的值,不能在程序中被改变。变量:用于对暂时数据 的局部储存,变量值是在进程内部是可实现的,没有物理意义。它只能在 Process和Function中定义,必须在进程和子程序的说明性区域说明,并只 在其内部有效。信号是描述硬件系统的基本数据对象,代表连接线,Port 14 也是一种信号。 三、VHDL数据类型 VHDL对运算关系与赋值关系中各量(操作数)的数据类型有严格的要求,一个新的数据类型必须先建立一个类型说明。类型说明规定说明部分、结构体说明部分、子程序说明部分和进程说明部分中都中允许有类型说明。VHDL 的基本类型有:bit(位)、bit-Vector(位矢量)、Boolean、time、character、string、integer 、 real。 四、VHDL 顺序语句 VHDL有包括六类基本顺序语句 :赋值语句、返回语句、等待语句、流程控制语句、子程序调用语句、空操作语句。 赋值语句有两种赋值语句:信号赋值语句以及变量赋值语句。流程控制语句共有五种:IF语句、CASE语句、LOOP语句、NEXT语句、EXIT语句。 根据if语句判断顺序语句的对或者错,当条件满足时,执行顺序语句A;当当条件不成立是,执行顺序语句B;在用VHDL语言进行逻辑设计时,有些操作室根据某表达式的值来进行的,这时常常会用到case语句。 在满足的条件下用case 语句直接选择多项顺序语句中的某一项进行执行。其中空操作语句不进行任何操作,它通常出现在CASE语句中,利用它来表示剩下的无效条件下的操作行为——满足所有可能的条件。但是必须注意: ?条件句中的选择值必在表达式的取值范围内。 ?除非所有条件句中的选择值能完全覆盖CASE语句中表达式的取值,否则最末一个条件句中的选择必须用“OTHER”表示。 ?CASE语句中每一条件句的选择值只能出现一次,不能有相同选择值的条件语句出现。 ?CSAE语句执行中必须选中且只能选中所列条件语句中的一条。 五、VHDL并行语句 在VHDL中,并行语句有多种语句结构格式,各种并行语句在结构体中的执行时同步执行的。更严格的说,并行语句在执行顺序的地位上是平等的,在执行顺序与书写的顺序无关。在执行中,并行语句之间可以有信息往来,也可以是互为独立,互不相关。每一并行语句内部的语句运行方式可以有两种不同的方式,即并行执行方式和顺序执行方式。在结构体中的可综合的并行语句主要有七种: 15 并行信号赋值语句;进程语句;快语句;条件信号赋值语句;元件例化语句;生成语句;并行语句在结构体中的使用格式。 第三节 本章小结 本章主要详细描述了VHDL语言程序基本结构,包括实体、结构体、库,接着论述了VHDL的文字规则,数据对象,数据类型,顺序语句,并行语句,给了读者清晰的概念,为下文的程序设计奠定了基础。 16 第四章 系统设计与仿真 第一节 系统介绍 在复杂的十字路口的交通环境,通过交通的控制电路设计可以有效的实现全自动的控制十字路口的交通灯和倒计时器,从而保障了行人和社会车辆的安全通行。 一、设计任务 在一个十字路口,我们设计一个交通灯控制器,分别安置在东南西北的各个方向。在东南西北的各个方向的交通灯上都有四盏灯分别是红黄绿三种颜色的灯以及左转向灯,我们可以设定东西交通灯的状态是一样的,南北方向上的交通灯的状态时一样的。这样我们要求南北方向的交通灯亮成红色的时候,表示东西方向的车辆可以直行和左转。同理,当东西方向的交通灯的颜色变成红色的时候,表示南北方向的车辆可以直行和左转。当左转向灯量的时候,这是表明该方向的车辆可以进行左转。黄灯闪烁表示对于左转以及直行的车辆马上就要禁止;当然我们也要用到显示器来显示车辆通行的时间和禁止通行的时间。 二、设计要求 在十字路口东西方向以及在南北方向各设一组交通灯;交通灯显示的顺序如下图所示: 绿灯黄灯红灯 左转灯 图4.1 交通灯显示顺序图 东南西北各自设立一个倒计时器。倒计时只显示对应方向上的红灯倒计时和绿灯倒计时。其余的状态不显示倒计时,到黄灯的时候只是闪烁。左转灯、红灯、绿灯和黄灯亮的时间分别是15秒、80秒、45秒、5秒。状态表如表4-1所示: 17 表4-1 交通灯状态转换表 状态 S0 S1 S2 S3 S4 S5 东 西 红 红 红 红 绿 黄 方 向 左转 亮 灯 15 45 5 15 45 5 南 北 红 绿 黄 红 红 红 方 向 左转 亮灯 15 45 5 15 45 5 交通灯状态转换如图4.2所示: 南北红灯南北左南北绿南北黄东西绿东西黄东西红东西左转转灯15s灯45s灯5s灯45s灯5s灯灯15s 东西红灯时南北红灯时 图4.2 交通信号灯状态转换图 第二节 系统设计仿真 对于交通灯控制器,可基于Quartus II 软件,采用层次化混合输入方式进行设计,即顶层采用原理图设计,底层采用VHDL语言设计。 一、顶层框图的设计 顶层原理图设计可以依据系统框图进行,有分频模块、控制模块、倒计时模块、红绿灯显示模块、译码模块、译码显示模块6六部分组成,如图4.4所示: 图4.4 顶层原理图系统框图 18 二、时序状态图的设计 图3-2 交通灯时序状态图 图图3.2 顶层原理图系统框图 图4.4 交通灯时序状态图 时序状态的设计实现十字路口的交通车流控制,如下图4.5所示: 北 西东 南 图4.5交通路线示意图 从图4.5中我们可以看出,当东西的红灯亮时,此时南北左转向灯亮起,向左的车辆通行15s的时间,过后左转向灯变红。然后南北直线行驶的绿灯亮起,而且此时的行人开始穿行过马路,当时间要到之时黄灯开始闪烁5s,从而完成路口的车辆控制。同理当南北方向红灯时,其东西方向的车辆控制跟南北方向的车辆控制情形一样。 19 三、工程设计流程框图: 新建工程 新建原理图文件 或VHDL文件 输入程序或 编辑原理图 编译,若有错,修 改程序,直至无错 建立波形文件, 导入管脚 编译波形文件,查看 仿真结果,保存 图4.6 工程设计流程框图 第三节 各个模块的设计与仿真 一、 模块设计 该模块可将频率为1KHZ的脉冲波,经过分频变为频率为1HZ的脉冲波, 这样我们就得到了周期为1s的脉冲波。利用一下程序我们可以实现这个功能: if clk 1khz’event and clk1khz='1' then if q=512 then r:=not r; q:=0; else q:=q+1; end if; 根据该程序,我们可以通过仿真可以得到时序波形,分频器程序仿真结果如图4.7所示: 20 图4.7 分频器程序仿真结果图 我们可以看出在分频器程序仿真结果图中,clk1khz 为输入脉冲信号,频率 为1khz;clk1hz为输出脉冲信号,频率为1hz。从图中,我们可以看出clk1hz 的周期为1s。这表明程序的确把1khz的信号分频成1hz的信号。 二、control模块设计 control模块可根据clk的脉冲信号输出S的值,下层模块根据S的值来决定红绿 [13]灯的状态。同时对倒计时的信号赋初值。利用以下程序进行各个灯的状态控 制: if clk'event and clk='1' then loadat<='0';loadbt<='0'; if t=0 then s<="000"; at<=80; loadat<='1'; elsif t=15 then s<="001"; bt<=45; loadbt<='1'; elsif t=60 then s<="010"; elsif t=65 then s<="011"; bt<=80; loadbt<='1'; elsif t=80 then s<="100"; at<=45; loadat<='1'; elsif t=125 then s<="101"; end if; t<=t+1; end if; if t=130 then t<=0; end if; control模块程序仿真结果如图4.8所示: 图4.8 control模块程序仿真结果图 在control模块程序仿真结果图中,只有一个输入信号clk,它是一个频率为 21 1hz的时钟脉冲信号,输出信号有3个分别是s、at、bt。程序中,通过变量t的值来确定输出信号s的值,并由此确定将要赋得倒计时的初值,然后赋给at,bt。在每次给at,bt赋值时,都会使另一个输出信号loadat,loadbt变成高电平,从而可以触发下一模块的装载。 三、atdaojishi和btdaojishi模块设计 该模块用来接收control模块的输出作为初值,并进行减一操作,最后把减一得结果输出。程序里每检测到一个脉冲clk,就进行一次减一操作atdaojishi模块程序仿真结果如图4.9所示: 图4.9 atdaojishi模块程序仿真结果图 在atdaojishi模块程序仿真结果图中,clk为1hz的输入信号,loadat为at计数器的装载信号,当loadat为高电平时,将输入信号atin的值装载到计数器中,开始执行减一操作,每接受一次clk,执行一次,并将结果输出。 btdaojishi 模块程序仿真结果如图4.10所示: 图4.10 btdaojishi 模块仿真程序仿真结果图 在模块设计中的程序 if loadbt='1' then countbt<=btin; else countbt<=countbt-1; 实现了倒计时的进行。 在btdaojishi模块程序仿真结果图中,clk为1hz的输入信号,loadbt为bt 22 计数器的装载信号,当loadbt为高电平时,将输入信号btin的值装载到计数器中, 开始执行减一操作,每接受一次clk,执行一次,并将结果输出。 四、Main模块设计 library ieee; end a; main: use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity main is port ( s:in std_logic_vector(2 downto 0); lrgy:out std_logic_vector(7 downto 0)); end main; architecture a of main is begin process(s) variable b:std_logic_vector(7 downto 0); begin case s is when "000" => b:="01001100"; when "001" => b:="01000010"; when "010" => b:="01000001"; when "011" => b:="11000100"; when "100" => b:="00100100"; when "101" => b:="00010100"; when others => b:="00000000"; end case; lrgy<=b; end process; 23 模块程序仿真图如4.11所示: 图4.11 main模块程序仿真结果图 Main模块可根据输入的S信号,输出对应的红绿灯信号。直接改变并驱动红绿灯的亮和灭。 在main模块程序仿真结果图中,S为输入信号,用来表明整个红绿灯的状态(一共6个状态:S0~S5); lrgy为输出信号,代表整个红绿灯的亮和灭的情况,灯的排序从高位到低位排列,方向上是先东西方向,后南北方向。也就是说,序列为:东西方向左转灯、红灯、绿灯、黄灯,然后南北方向左转灯、红灯、绿灯、黄灯。从图中我们可以看出S的状态从“000”到“101”,共六个状态,每一个状态都对应相应的红绿灯亮灭的状态,仿真结果完全正确,符合预期。 五、译码模块设计 译码程序将输入的用来显示的两位倒计时数值,分解成四个整形的数值,以 [14]供后面的译码显示模块继续译码显示。 译码程序仿真结果如图4.12所示: 图4.12 译码程序仿真结果图 在译码程序仿真结果图中,at,bt为输入信号,at,bt的范围为0~80。这包含了所有倒计时的范围;aout1,aout2,bout1,bout2为输出信号,值的范围为0~9,涵盖了数码管显示数字的范围。图中at,bt的值不断变化,而aout1,aout2都能将at的值分解成个位和十位,其中aout1代表十位,aout2代表个位;bout1,bout2都能将bt的值分解成个位和十位,其中bout1代表十位,bout2代表个位。仿真结果完全正确,符合预期。 24 六、译码显示模块设计 译码显示模块将上一个模块输出四个一位数译码成相对应的七位数码管段码,完成倒计时的译码和显示。 译码显示仿真结果如图4.13所示: 图4.13 译码显示模块仿真结果图 在译码显示模块仿真结果图中,at1,at2,bt1,bt2为输入信号,它们的值的范围为0~9;aout1,aout2,bout1,bout2为输出信号,它们的范围为数字0~9对应的七位数码管显示段码的值。图中,输出信号的值随着输入信号的变化而相应的变化。仿真完全正确,符合预期。 七、顶层文件设计 交通灯的顶层文件是一个原理图文件,它包含7个元件,每一个元件均是由一个模块程序生成。7个元件分别为:fenpinqi模块、control模块、main模块、atdaojishi模块、btdaojishi模块、yima模块和yimaxianshi模块。这些模块均经过设计、编译、仿真,结果正确。最后生成可视化元件。然后将各个模块用具有电气性质的导线连接起来,这样原理图文件就建好了。保存编译。在建立一个.vwf [15]波形文件,保存并仿真。原理图如图4.14所示:仿真结果如图4.15所示:实验证明,仿真结果正确,符合预期。 图4.14 顶层文件设计原理图 25 图4.15 顶层文件波形仿真结果图 [16]在顶层文件波形仿真结果图中,有一个频率为1khz输入信号clk1khz,它是外部的信号对整个系统设计的输入端口。作为一个脉冲,经过分频变成频率为1hz的脉冲,由于1hz的脉冲的周期是1s,所以我们可以用它来控制整个系统的步调,而这个步调与现实生活中交通灯的步调是一致的。1hz的信号经过control模块的处理,通过计数使s变化为不同的值,s代表的是交通灯时序图的状态,一共有6个状态(s0——s5)。同时对应不同的s的状态赋不同的初值给at,bt。at,bt分别是东西方向和南北方向的倒计时初值。Control模块还有一个功能是提供倒计时模块的置数的触发脉冲。接下来,main模块直接接受s的值来输出相应的红绿灯亮灭状态。例如:lrgy的值为01000010,这表明交通灯的亮灭情况为:东西左转灯灭,东西红灯亮,东西绿灯灭,东西黄灯灭,南北左转灯灭,南北红灯灭,南北绿灯亮,南北黄灯灭。即一一对应。倒计时部分分为两个模块:atdaojishi和btdaojishi。两个模块分别倒计时东西方向和南北方向。每个倒计时模块都有相似的端口:clk、loadat、atin、atout和clk、loadbt、btin、btout。我们只举其中一个为例子:clk为倒计时的时钟脉冲,当loadat为高电平时,将atin传递给atout,clk的上升沿每来一次,atout减一次。此前,时间的值都是整形的,要想将倒计时实时显示出来,就需要将两位的整数分解成个位和十位,yima模块就是这样的。将一个倒计时分解成两个一位数,例如将54分解成5和4。然后经过yimaxianshi模块将对应的数字译成相应的段码,例如将5和4译码为01101101和01100110。在这个系统设计中,所有的数码管和二极管均为共阴极显示。 八、实现平台 在这次毕业设计中,我们选用的FPGA开发板作为该实验的实验平台,采用睿智FPGA的开发板,该开发板集成程度高,以低廉的价格实现了更多的资源利用除此之外精心设计分配的IO资源,除SDRAM外的所有IO引出,方便自行定制开发验证~使用3个扩展接口插座,通用2.54mm间距:带大容量SDRAM,可做SOPC、NIOS开发~使用大量去耦电容,PLL电源采用PI型滤波;请参考核心板背面图片。市面上很多核心板或开发板,为节省成本和减小复 26 杂度,省掉了很多电容,这样的系统能稳定吗,同时采用大功率LDO电源管理芯片1085-3.3V,最大支持3A的3.3V电压输出,而非使用1117-3.3低成本小电流电源,当您的外设挂载较多或是所消耗电流较大时,大功率电源的优势就显现出了。 带自锁按键电源开关、红色电源指示灯、IN5819高速肖特基二极管,防止电源反接,每个扩展插座均设有5V及3.3V接口,非常方便~我们选用的FPGA [12]芯片是Altera公司的Cyclone(飓风)系列的芯片,型号为:EP2C5Q208C8N。它是基于1.5V的,采用0.13um全铜SRAM工艺、TQFP封装,有5980个逻辑单元,2个锁相环,20个M4K RAM块,其中每个RAM为4kbit,可以另加一位奇偶校验位。实验平台如图4.16所示: 图4.16 FPGA开发板 第四节 本章小结 本章主要讲述了本课程的系统介绍,包括设计任务和要求,然后主要介绍了系统设计仿真,包括顶层框图的设计、时序状态图的设计、工程设计流程框图、芯片的选择、最后是各个模块的设计与仿真,基本完成了实验的各部分设计,实现了系统要求。 27 第五章 结论与展望 第一节 结 论 论文以EDA技术作为该实验的基础,以FPGA为平台,利用该软件的集成功能实现了交通灯的控制电路设计的实现和验证。经过验证,该交通灯控制系能够在一定程度上改善车辆量的控制和同行时间,也能够在到一定程度上解决交通堵塞的问题。 利用FPGA设计的交通灯控制系统也有很多优势。一方面,与PLC或者单片机相比,省去了很多器件以及器件间的连线"逻辑器件的功能都可以通过硬件描述语言来编写完成"这样在一定程度上提高了系统的可靠性和抗干扰能力。另一方面,由于PLC内存容量有限,在工业控制中,PLC程序通常不能超过中央处理器内存大小的60%。一旦系统逻辑比较复杂时,往往不能满足该标准。PLC处理器将会长期处于大功率和超负荷的临界工作状态,客观上限制了程序的更新和升级换代。 FPGA不仅内存容量大了很多,而且1/0端口的数量也很多,处理器也十分优越,且FPGA纯逻辑的控制方式在控制领域具有天然优势。在EDA基础上,还可以根据其他路段的实际交通运行状况,设计出具有针对性的交通灯。FPGA开发周期短,投入成本低。芯片的价格也在不断下降,FPGA已经越来越受到人们的重视,成为EDA设计的首选。 在这次毕业设计中,认识到了不是所用的事情都不是我们想象中的那么困难,只要在我们手上的事情踏踏实实的做下去,总会有一个好的结果,同时通过这次毕业设计我们,我也有更大信心去面对以后未知的困难,将对以后的工作打下坚实的基础。 第二节 展 望 智能交通灯控制系统是智能交通系统的一个组成部分,智能交通系统在我国的发展还很落后,处于刚起步阶段,还有很多的问题有待解决。本文所作的工作也很有限,许多具体问题和实际情况没有考虑,还有待开展进一步的研究工作。 论文设计的交通灯控制系统和实际交通灯控制系统相比,在执行起来基本一 28 致,做到了接近的程度,但是由于本人精力和实验室条件的限制,依然有一些问题没有涉足。比如,自动检测车辆脉冲的计数结果,统计车流量,依据统计结果自动调节各个方向的绿灯及红灯的时间长度。可以采用“规模分档”的时长智能控制原则,即把东西方向或者南北方向的车辆按数量规模进行分档,同时东西方向或者南北方向的交通灯时长也按一定的规模分档,这样可以实现按照车流量规模给定交通灯的时长,达到最大限度的车辆放行。简单的说,就是通行时间要与车流量成正比。论文所设计的交通灯控制系统绿灯通行时间相对固定,只是保证主干道通行时间长于副干道。如果在车辆计数的自动检测方面进一步进行设计,就能够更加有效的减少十字路口的车辆滞留,缓解交通拥挤,实现最优控制,从而提高交通控制系统的效率。 另外,FPGA的功能十分强大,在最后的分析报告中,可以看出此次设计的交通灯控制系统的资源占用率仅为1%,还有相当多的资源可以利用,比如FPGA应用广泛的图像处理等领域。在论文设计的交通灯控制系统的基础上,还可开发出相应的视频监控系统,车牌照识别系统等配套系统,使交通灯控制系统在指挥交通,管理交通方面的作用发挥到最大。 交通控制理论正在不断的向前发展,关于控制决策、控制理论等方面也都有了一些新的想法。比如基于遗传算法的城市交通信号控制的优化,利用现代控制理论及优化方法对城市交通网络控制信号进行优化,可以达到改善城市交通系统的通行状况、提高城市交通网络的通行能力的目的。 29 致 谢 本次毕业设计的完成很大程度上归功于导师杨虹教授的悉心指导和严格要求。杨虹老师是一位专业知识丰富、治学严谨和教学态度认真的老师,这是我在未来的工作和学习上追求的目标。在毕业设计中,杨虹老师提供给我很多具有针对性的意见,通过这短短几个月的毕业设计环节的不断学习,无论在基础理论知识、软件操作技能、硬件实践动手能力,还是独立思考问题能力等方面我都有了很大的进步。在杨虹老师的指导下以及在同学的帮助下,我对FPGA从最开始的陌生到慢慢熟悉,继而可以利用FPGA做出一点小东西。本次毕业设计从选题、编程设计到 毕业论文 毕业论文答辩ppt模板下载毕业论文ppt模板下载毕业论文ppt下载关于药学专业毕业论文临床本科毕业论文下载 整个过程都倾注了杨虹老师的心血,在此,我要向杨虹老师致以我最诚挚的敬意和真心的感谢~ 当然,在毕业设计过程中,少不了师长师姐与用同学们的帮助,在我遇到疑惑时,都伸出援助之手,为我解疑答惑。在这里,我表示衷心的感谢。 同时要感谢我的学校,让我愉快而有意义的度过这四年的大学时光,让我学会专业知识的同时,也学会了很多做人的道理。 感谢我的家人和朋友对我生活上的关心,学习和工作的支持,这些使得我能够安心的完成我的毕业设计。 最后,对评阅该论文的所有老师们表示最崇高的敬意和真挚的感谢~ 30 参考文献 [1] 王炜,杨新苗,陈学武.城市公共交通系统[M].北京: 科学出版社,2002. [2] 孙辉.基于FPGA 的实时交通灯控制系统的设计与实现[D].华中科技大学, 2011. [3] 刘志勇.智能交通控制系统及其应用[M].北京:科学出版社,2008: 33-41. [4] 段进宇,缪立新,江见鲸. 面向中国城市的先进交通控制系统的设计规划[J]. 清华大学学报 (自然科学版),2001,6: 029. [5] 沈晟.基于 FPGA 的交通灯控制系统的设计与实现[D].昆明: 昆明理工大学,2010. [6] 杨贵.郑善贤. 基于FPGA 的交通灯控制器实现[J]. 中国仪器仪表,2003 (9): 41-43. [7] 许文建,陈洪波,李晓.利用Verilog HDL实现基于 FPGA 的分频方法[J]. 2007. [8] 赵东.基于FPGA的可穿戴医护系统的接口设计与研究[D].西北大学,2010. [9] 刘韬.FPGA 数字电子系统设计与开发实例导航[M]. 人民邮电出版社,2005. [10] 徐志军,徐光辉.CPLD/FPGA 的开发与应用[M]. 电子工业出版社,2002. [11] 杨贵,郑善贤. 基于FPGA 的交通灯控制器实现[J]. 中国仪器仪表,2003 (9): 41-43. [12] 李泽军. 基于AHDL/CPLD 的乒乓球模拟游戏的设计[J]. 2008. [13] 黄智伟. 全国大学生电子设计竞赛电路设计[M].北京: 北京航空航天大学出版社,2006. [14] 潘松,王国栋.VHDL实用教程[M].成都: 电子科技大学出版社,1999.12. . 基于FPGA 的多种形式分频的设计与实现[J].今日电子, 2004 (5): [15] 高培军 30-31. [16] 潘新民.微型计算机控制技术实用教程[J].北京: 电子工业出版社,2007. 31 附录 一、英文原文 The Design of Physical Layer Controller on Baseband Chip 12TIAN Fei YANG Hong ( ChongQing University of Posts and Telecommunications, 400065, china) Abstract: The Physical Layer Controller (L1C) schemes on the multi-cores chip are discussed, and proposed a Physical Layer Control scheme on GSM baseband chip, and designed a based clock unit according the frame structure of GSM, and established the physical layer scheduling sequence, initially completed the scheduling and controlling of multi-cores on SOC. Key Words: GSM;Physical Layer Controller;SoC;scheduling 0 引言 Current mobile phones as baseband processor core, its main function such as implementing protocol processing, human interface and simple applications and so on. GSM is the world's most widely used wireless, because the most largest group of user and network investment,in the future,GSM will be existing long time .there are many options realize baseband chip,nowadays the most of baseband chip are made of multi_core integrated design framework,from the system structure dipartition point of view,the baseband processor can be divided into the following subsystems: CPU subsystem, voice codec subsystem DSP channel codec subsystem and peripherals on-chip bus subsystems, CPU subsystem generally complete the entire mobile station control and management, including timing control, digital control system, radio control, human-machine interface control. Thus ,it’s essential for software use in the physical layer control, For the different system architectures and different physical layer protocols. The control programs have different with capability. So therefore ,the it’s very important for the physical layer control research. 1 Design basis 1.1 Universal chip architecture [1] Used in this article is a generic architecture baseband chip , shown in Figure 1, the upper and lower rows were used a DSP, to complete the physical layer signal processing, due to the complexity of the task and the algorithm downlink higher than upstream, extra piece of hardware co-processors, CPU subsystem using a piece of open-source RISC processors, protocol stack software running on a ARM7 processor, between the physical layer and protocol stack with a dual-port SRAM connection. 32 BC Coprocessor RF excuse Figure 1 Figure baseband chip architecture 1.2 Physical layer frame structure GSM system adopt the FDD mode ,the frame structure is as follows: a TDMA frame as a unit, one multiframe (multiframe is divided into 26 and 52 multiframe) is equal to 26 or 52 multiframes, a superframe is equal to 1326 TDMA frame, an ultra frame is equivalent to 2048 superframe (2,715,648 TDMA frames), and each TDMA frame is divided into eight time slots, each slot duration 0.577 milliseconds and a bit time slot is equal to 156.25. For control physical layer signal processing, the base clocks are provided to the frame number ,and the slot number to achieve every parts synchronous execution. 1.3 Baseband data current [2] Following a full rate speech channel as example , tasking into the baseband data processing and task shine upon a specific processor.shown in the picture 2. 33 DSP1 13Kbit/sSpeech codingSpeech decoding Packet decodingCoprocessor Packet coding Convolution decoding Convolution coding InterweaveRemove intertwined DSP0Let go of burst burst formingforming ModulationDemodulation Figure 2 voice channel process 2 Control Strategy 2.1 Static and dynamic scheduling Control scheme for physical layer task scheduling like real-time operating system task scheduling ,which can be classify static and dynamic scheduling.the dynamic task scheduling depend on the priority tasks that dynamically allocated,you can use the preemptive and non-preemptive.the goal of static scheduling is assigning tasks to each hardware processor,and each processor giving the static timing what the tasks running need,it’s very simple for the scheduling algorithm,and the less overhead.As mobile communication processing sequence baseband chip is based on the physical layer protocol, timing controllable and less outbreak,which can speeding less time to finish the timing allocation and task mapping,therefore,this task adopted 34 static task scheduling,it will task mapped directly to a particular processor unit and divided the the storage space resources,there is no parallelism task trying best to map on the same processor unit. 2.2 Centralized control and master-slave control Physical layer control module controls the physical layer module depend on the task state transitions,According to the system each processing unit in the number of tasks, complexity, and processing delay as a consideration, to determine the use of centralized control or master-slave control. the master-slave control scheme,the main control system is responsible for the entire baseband processor chip management,including receiving high-level commands, running internal control with logic processing, transmission control commands to the auxiliary control system;Slave control systems mandate a single processor of the control unit ,includes a command receiving host system ,reads the configuration parameters, associated with logical computing, called sub-tasks performing the ingress.Between the main control system and auxiliary control systems, and auxiliary control systems and auxiliary control system interfaces to interact through the task, the task interface includes a software interface and hardware interfaces, software interfaces refers to the data message interface, hardware interface refers to the signal port. Centralized control, all control task throughout the entire baseband to RISC processor (equivalent to an operating system),DSP no longer maintain their own separate task queue, and no longer has the task of interactive interfaces between multiple DSP, only retain data transmission,RISC for all peripheral interrupt prioritization and response, considering the control scheme described in this article centralized control, thereby greatly reducing the consumption of various DSP processors. 8. control scheme Most of the time the mobile terminal is in IDLE mode, and may be in a discontinuous reception (DRX) state, only required to a broadcast channel and a specific paging group PCH for monitoring ,So can be shut off in specific time frame system of the high speed clock, reduce the power consumption of the system. 3.1 base clock design SOC chip described in this article individually designed base clock unit,Figure 3,Consisting of the following components, such as system reference clock REF timer, uplink transmit clock TX timer, downlink reception clock RX timer, interrupt generation unit and the time frame calibration unit, the module hang on the APB bus system, providing the system with accurate TDMA frame clock. 35 Figure 3 base clock unit block 3.1.1 Frame Interrupt As shown, the system includes three frame interrupt control unit, timeslot_int, frame_int, multiframe_int, a standard frame length of GSM TDMA is defined as [3]120,000 cycles value of MHz, in order to simplify the description, the following Verilog code is Always @ (*) begin //Slot interrupt if(cnt0 == 15000) timeslot_int <= 1; cnt0 <= 0; else timeslot_int< = 0; cnt0 <= cnt0 +1; //Frame Interrupt if((cnt1 == 8) && timeslot) frame_int <= 1; cnt1 <= 0; else frame_int<=0; cnt1<=cnt1+timeslot_int; //The counting multiframe process is slightly out。 end 3.1.2 Reference Clock Calibration This system under a low-power clock is 32 KHz, sampling clock is 26MHz,defining respectively in the two clock domains counter as cnt_32k and cnt_26M,under the driven of the clock enable signal calibration calib_flag ,two counter clock enter calibration status and start counting from 0 at the same time , when cnt_32k counter completed 16 counts, it is out of calibration status, then cnt_26M just count to calib_value, this value will be used as the calibration value after waking up. The reason why we use 16 as a calibration cycle is that it is easy for digital circuits implement an integer multiple of the division base 2. The sleep time was under 32K is sleep_32K_counter (usually an integer multiple 36 of TDMA frame period), the multiplier the sleep time under 26MHz clock is calculated by the multiplier as sleep_26M_counter = (calib_value * sleep_32K_counter) >> 4 (right 4) ,calculating the reference counter value after waking up as REF_timer (wake-up time) = REF_timer (sleep time) + sleep_26M_counter, to complete calibration. Of system reference clock after from sleep to wake up. 3.1.3 Uplink and downlink transmission and reception timing Unit RX_timer and TX_timer from the base transceiver clock Provide uplink and downlink transmission and reception timing for physical layer. After receiving the uplink , according to the frame number and the TA ,physical layer calculates the value of the uplink transmission uplink transmission timing TX_ timer, and writes the upstream RF interface and send task lists, the uplink tasks need to advance an frame configuration; physical layer according to the downstream channel configuration determines reception time RX_timer (starting position of a downstream frame) of the downlink burst, and configures a receiving task list of the downstream RF interface. By configuring length and time of sending and receiving data of the RF transceiver interfaces, you can send and receive up and down data, up and down line sending and receiving real-time clock can be updated according to the system reference clock. 3.2 Scheduling system flowchart Because baseband physical layer control is a fairly complex process, in the current out of considering complex scenes in the physical layer process GSM ,such as cell selection, power control and link failure detection and so on, and scheduling processes yet to consider the cached data. In accordance with the completion of the first down line voice services to indicate the entire scheduling process, scheduling and data processing needs to be completed in one frame, shown in Figure 4, all peripheral interrupt give interrupt control register PICSR [31:0] of the interrupt controller to OpenRISC by the interrupt controller , the physical layer control software deal with it in focus by interrupt priority. RF interface DSP1U pstream Receive MAC data Frame InterruptRF_UL_TCH3 upstream task Interrupt,move it task completion to MACSendcompletion to DSP1interruptinterruptTAComplete Upstream FNRF interface DSP0Downstream interrupt tasking downstream Data nn+1tasks complete downlink complete task interrupinterruptdecoder interrupt to completion t to MACRF_DL_TCH3 coprocessorMACinterruptreceive Figure 4 Physical layer scheduling timing diagram 3.3 Software Design Software design is shown in Figure 5, after power software program is loaded [7]from an external MEM into MEM OpenRISC of QMEM, and then the program begins execution. First it enters the main function, completing interrupt registration、 the initial configuration of the physical layer parameters and initializing peripheral interface and hardware modules. Upon the completion of the initialization operation, function enters into an infinite loop waiting for an interrupt , starting a continuous detection of external interrupt, the interrupt registration system all external interrupts are divided into 37 interrupt priority when the interrupt are regsisted in system , after detecting the interruption, use the interrupt to query function , querying corresponding bit of the interrupt controller and clearing it away in order to avoid executing the interruption in the loop ,then entering into the interrupt service routine and conducting to determine the current state of the physical layer in the interrupt service routine, and configurating hardware, jumping after the configuration is complete. CycleThe interrSystem Wait Query Clear upt Main Initiafor interrInterrservicEndFunction lizatiinterruptupte entryonuptroutin eINT Figure 5 physical layer software flow control 4.The simulation results 【】9In the Linux environment, it can compile 、link 、program loading for complete physical layer control software through the GCC cross-compiler tool chain, and complete hardware and software debugging on synopysys's VCS simulation tool, currently it is only test whether the control software focus control the system, shown in Figure 6, shown in blue highlighted part of the OpenRISC is interrupt control register,in the time frame, the physical layer control software can response interrupt of the various hardware interrupt module in system by priority and complete the appropriate configuration task. Figure 6 System Simulation results 5.Conclusion 38 Based on GSM physical layer protocol, and a universal baseband chip architecture, the paper divided the baseband physical layer signal processing , came up with a new physical layer control scheme, designed based clock circuit ,established the uplink and downlink scheduling timing, and finally, complete the software design and coding, on RTL-level SoC system we completed a preliminary test schedule, due to the flexibility of the physical layer algorithms and hardware architectures and the performance of each processor, the physical layer control software will do a lot of adjustment and optimization according to the actual demand, it will be constantly go to practice and improve in subsequent. [References] [1] Hudong Wei, Liang Hongming Studies, Chen Jie mobile terminal baseband chip architecture [J]. Mobile communication, April 2009. [2] Chen Chong GSM phone baseband chip SoC system design [D] Institute of Computing Technology: June 2003 :8-20. [3] Cheng Zeng, Marin. Baseband chip for GSM hardware precision Sleep Timer [J]. Microcomputer Information, 2011 Volume 27 12. [4] Yang Bin. GSM baseband design techniques [J]. Mobile communication, 1999 4. [5] Han Binjie GSM network theory and optimization [M] Beijing: Mechanical Industry Press, 2001. [6] DAMJAN Lampret OpenRISC 1200 IP Core Specification [M] OpenCores:. 2011 January 2011. About the author: Fei Tian, male, born in 1987, Baoji, Shaanxi, Master. Research directions for Microelectronics and Solid State Electronics. 39 二、英文翻译 基带芯片物理层控制方案的设计 12田 飞 杨 虹 ,重庆邮电大学,重庆 400065, 摘要: 对多核基带芯片物理层控制方案进行了简单的讨论,提出了一种用于GSM移动终端基带芯片物理层控制(L1C)的方案,根据GSM的帧结构设计了基时钟电路,并以物理层信号处理流程为依据,建立了物理层上下行的调度时序,初步完成了基带芯片SOC系统多核之间的任务调度和时序控制。 关键词:GSM;物理层控制;SoC;调度 中图分类号:TN914.3 文献标识号:A 文章编号: The Design of Physical Layer Controller on Baseband Chip 12TIAN Fei YANG Hong ( ChongQing University of Posts and Telecommunications~ 400065~ china) Abstract: The Physical Layer Controller (L1C) schemes on the multi-cores chip are discussed, and proposed a Physical Layer Control scheme on GSM baseband chip, and designed a based clock unit according the frame structure of GSM, and established the physical layer scheduling sequence, initially completed the scheduling and controlling of multi-cores on SOC. Key Words: GSM;Physical Layer Controller;SoC;scheduling 0 引 言 当前的移动电话以基带处理器为核心,其主要完成协议处理、人机接口和简单的应用功能。GSM是当今世界上应用最广泛的无线通信协议,因庞大的用户群和网络投入,GSM网络在未来很长时间内任将存在。基带芯片的实现也有很多种方案,现今,大多基带芯片均采用多核集成的设计架构,从系统结构划分来看,基带处理器可以分为以下几个子系统:CPU子系统、语音编解码子系统、DSP信道编解码子系统、片上总线及外设子系统,CPU子系统一般完成对整个移动台的控制和管理,包括定时控制,数字系统控制,射频控制,人机接口控制。因此,物理层控制软件的设计是必不可少,对于不同的系统架构、不同的物理层协议而言,控制方案和性能又会有本质的不同,因此,对于物理层控制方案的研究尤为重要。 3 设计依据 40 3.1 通用芯片架构 本文用到的是一款通用架构的基带芯片[1],如图1所示,上下行分别采用一块DSP,来完成物理层信号处理,由于下行链路任务及算法的复杂度高于上行,额外加一块硬件协处理器,CPU子系统采用一块开源的RISC处理器,协议栈软件运行在一块ARM7处理器上,物理层与协议栈之间用一块双端口SRAM连接。 基时钟I2CURATGPIOINT_CTRL APB RX协处理器DSP0RISCDATA射频SDRAMAHB ARM7接口 CTRLTXDMADSP1MEM 图1 基带芯片架构图 3.2 物理层帧结构 GSM 系统采用FDD模式,其帧结构如下:以TDMA 帧为单位,一个复帧(分为26 帧复帧和52 帧复帧)等于26 帧复帧或52 帧复帧,一个超帧等于1326 TDMA 帧,一个超高帧等于2048 超帧(2715648 个TDMA 帧),而每个TDMA 帧分为8个时隙,每个时隙持续0.577 毫秒,一个时隙等于156.25比特。对物理层的信号处理过程的控制,都是以基时钟提供的帧号、时隙号来实现各部分的同步执行。 3.3 基带数据流 [2]DSP1下面以一个全速率语音信道为例,划分基带的数据处理流程并将任务映射到具体的处理器中,如图2所示。 13Kbit/s语音编码语音解码 分组解码协处分组编码理器卷积解码 卷积编码 交织去交织 DSP0burst成型去burst成型 调制解调 图2 语音信道处理过程 41 4 控制策略 4.1 静态和动态调度 控制方案对物理层任务的调度类似于实时操作系统中的任务调度,可分为静态调度和动态调度。动态任务调度即依赖于任务的优先级来进行动态分配,可以采用抢占式或非抢占式。静态调度的目标是把任务分配到各个硬件处理器,并对每个处理器给出所要运行的任务的静态时序,其调度算法实现简单,且额外开销少。由于移动通信基带芯片的处理时序是基于物理层协议,时序可控并且突发任务少,可以预先完成时序划分及任务映射,因此本文的方案设计采用静态任务调度,将任务直接映射到特定处理器单元,并且划分资源存储空间,没有并行度的任务尽可能的映射到相同的处理器单元。 4.2 集中式控制和主从式控制 物理层控制模块依靠任务状态转换进行物理层模块的控制,可根据系统各个处理单元中任务数、复杂度、及处理时延作为考量,来判断采用集中式控制或者主从式控制。 主从式控制方案,主控制系统负责整个基带处理芯片的调度,包括接收高层命令、进行内部控制逻辑的处理、传递控制命令到辅控制系统;辅控制系统负责单个处理器单元的任务控制,包括接收主控系统的命令、读取配置参数、进行相关的逻辑计算、调用子任务的执行入口。主控系统和辅控系统之间以及辅控系统和辅控系统之间通过任务接口进行交互,任务接口包括软件接口和硬件接口,软件接口指数据消息接口,硬件接口指信号端口。 集中式控制,即整个基带的所有控制任务全部交给RISC处理器进行(相当于一个操作系统),DSP不再单独维护自身的任务队列,而且多个DSP之间不再有任务交互接口,只保留数据的传输,RISC对所有的外设中断进行优先级划分并响应,综合考虑本文所描述的控制方案采用集中式控制,这样大大减轻了各DSP处理器的消耗。 5 控制方案 移动终端大多时候处于IDLE模式下,并且可处于非连续接收(DRX)状态,只需要对系统广播信道BCCH及特定的寻呼组PCH进行监听,因此可在特定的时间段内关断系统的高速时钟,降低系统功耗。 5.1 基时钟设计 本文所述SOC芯片中,单独设计了基时钟单元,如图3所示,主要由以下部分组成,系统参考时钟REF timer,上行发送时钟TX timer,下行接收时钟RX timer,帧中断产生单元以及时间校准单元,该模块挂在系统APB总线上,为系 42 统提供精准的TDMA帧时钟。 TX timerREF timerRX timerCalibration Sleep_counterTimeslot_intFrame_intMultiframe_int 图3 基时钟单元框图 5.1.1 帧中断 如图所示,系统包括三种帧中断控制单元,timeslot_int,frame_int,multiframe_int,GSM一个标准的TDMA帧长度定义为120000个26 MHz的周期值[3],为了简化描述,其Verilog代码如下, Always @ (*) begin //时隙中断 if(cnt0 == 15000) timeslot_int <= 1; cnt0 <= 0; else timeslot_int< = 0; cnt0 <= cnt0 +1; //帧中断 if((cnt1 == 8) && timeslot) frame_int <= 1; cnt1 <= 0; else frame_int<=0; cnt1<=cnt1+timeslot_int; //此处略掉复帧的计数过程。 end 5.1.2 参考时钟校准 该系统低功耗下为32 KHz时钟,采样时钟为26MHz,设分别在两个时钟域下的计数器cnt_32k和cnt_26M,在时钟校准使能信号calib_flag的驱动下,这两个计数器进入时钟校准状态并同时从0开始计数,当cnt_32k计数器完成16次计数后,跳出校准状态,此时设cnt_26M恰好计数到calib_value,这个值将作为每次睡眠唤醒后的校准值。采用16作为校准周期,是由于数字电路容易实现以2为基数的整数倍除法。 设在32K下的睡眠时间为sleep_32K_counter(一般为TDMA帧周期的整数倍),则通过乘法器可以算出在26MHz时钟下的睡眠时间为sleep_26M_counter = (calib_value*sleep_32K_counter)>>4(右移4位),从而计算出唤醒后的参考计 43 数器的值为REF_timer(唤醒时刻)=REF_timer(睡眠时刻)+sleep_26M_counter,以完成从睡眠到唤醒后的系统参考时钟的校准。 5.1.3 上下行收发定时 由基时钟单元中的RX_timer和TX_timer,为物理层提供上下行收发定时。物理层在收到上行任务后,根据上行发送的帧号及TA值来计算上行发送时刻TX_ timer,并写入上行射频接口发送任务列表,上行任务需要提前一个帧配置;物理层根据下行信道配置,确定下行burst的接收时刻RX_timer(某个下行帧的起始位置),并配置下行射频接口接收任务列表。通过配置射频接口的收发数据长度和收发时刻,可完成上下行数据的收发,上下行收发时钟可根据系统参考时钟进行实时地更新。 5.2 系统调度流程图 由于基带物理层控制是一个相当复杂的过程,当前暂未考虑GSM物理层过程中的小区选择、功率控制及链路故障检测等复杂场景,而且调度流程暂未考虑数据的缓存。现根据完成一次上下行语音业务来示意整个调度流程,上下行任务调度及数据处理需要在一个帧内完成,如图4所示,所有外设中断经过中断控制器后给OpenRISC处理器的中断控制寄存器PICSR[31:0],物理层控制软件按中断优先级对其进行集中处理。 图4 物理层调度时序图 5.3 软件设计 [7]软件设计如图5所示,上电后软件程序从外部MEM加载进OpenRISC的QMEM中,然后程序开始执行。首先进入main函数,完成中断注册、物理层参数的初始配置,然后初始化外设接口及硬件模块等。 完成初始化操作后,函数进入等待中断的死循环,开始持续检测外部中断,在中断注册时对系统所有外部中断划分了中断优先级,在检测到中断后,利用中断查询函数,查询中断控制器的对应位,并将该中断清掉以避免循环执行该中断,然后进入中断服务程序,在中断服务程序中进行当前物理层状态的判断,并对硬件进行配置,配置完成后跳出。 44 图5 物理层控制软件流程图 6 仿真结果 在Linux环境下,通过GCC交叉编译工具链,完成对物理层控制软件的编 [9]译、链接及程序的装载,并在synopysys公司的VCS仿真工具上完成软硬件的调试,当前只对控制软件是否能对系统进行集中式控制进行了测试,如图6所示,图中蓝色高亮部分为OpenRISC中断控制寄存器,在一个帧的时间内,物理层控制软件能够按中断优先级响应系统各个硬件模块的中断,并完成相应任务的配置。 图6 系统仿真结果图 7 结语 本文在基于GSM物理层协议,以及通用基带芯片架构的基础上,对基带物理层信号处理流程进行划分,提出了一种物理层控制方案,并设计基时钟电路,建立上下行调度时序,最后,完成软件的设计及代码编写,在RTL级的SoC系统上完成了初步的调度测试,由于物理层算法的灵活性以及硬件架构和各处理器的性能,物理层控制软件也会根据实际的需求做大量的调整及优化,这将是在后续的研究中不断去实践和改进的。 45 [参 考 文 献] [1] 胡东伟,梁宏明,陈杰.移动终端基带芯片架构概论[J].移动通信,2009年4月. [2] 陈志冲.GSM手机基带芯片SoC系统设计[D].中国科学院计算技术研究所:2003年6月:8-20. [3] 程曾,马林.用于基带芯片的GSM硬件高精度休眠定时器[J].微计算机信息,2011年第27卷第12期. .GSM基带设计技术[J].移动通信,1999年第4期. [4] 杨彬 [5] 韩斌杰.GSM网络原理及其优化[M].北京:机械工业出版社,2001. [6] DAMJAN Lampret. OpenRISC 1200 IP Core Specification[M].OpenCores: . 2011年1月 [7] ICS:33.060.050:GSM 05.08[S]. [8] 俞甲子,石凡,潘爱民.程序员的自我修养[M].北京:电子工业出版社,2011年12月. [9] 王宽仁,孟涛,侯传教.基于SoC单片机的嵌入式时序控制单元设计与实现[J].微计算机信息,2010年第26卷第9期. [10] 陈炳成,唐芳福,蒋晓华,颜军.S698P4 SoC芯片多时钟及多核调度机制的研究[J].微型机与应用,2011年第30卷第21期. 46 三、程序代码 1、分频器程序清单如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fenpinqi is port ( clk1khz:in std_logic; clk1hz:out std_logic); end fenpinqi; architecture a of fenpinqi is begin process( clk1khz ) variable q: integer:=0; variable r:std_logic:='0'; begin if clk 1khz’event and clk1khz='1' then if q=512 then r:=not r; q:=0; else q:=q+1; end if; clk1hz<=r; end if; end process; end a; 2、control模块程序清单: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity control is port( clk:in std_logic; s:out std_logic_vector(2 downto 0); loadat,loadbt:out std_logic; 47 at,bt:out integer range 0 to 80); end control; architecture a of control is signal t:integer; begin process(clk) begin if clk'event and clk='1' then loadat<='0';loadbt<='0'; if t=0 then s<="000"; at<=80; loadat<='1'; elsif t=15 then s<="001"; bt<=45; loadbt<='1'; elsif t=60 then s<="010"; elsif t=65 then s<="011"; bt<=80; loadbt<='1'; elsif t=80 then s<="100"; at<=45; loadat<='1'; elsif t=125 then s<="101"; end if; t<=t+1; end if; if t=130 then t<=0; end if; end process; end a; 3、daojishi模块程序清单: ?library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity atdaojishi is port ( clk,loadat:in std_logic; atin:in integer range 0 to 80; atout:out integer range 0 to 80); end atdaojishi; architecture a of atdaojishi is signal countat:integer range 0 to 80; begin process 48 begin wait until rising_edge(clk); if loadat='1' then countat<=atin; else countat<=countat-1; end if; end process; atout<=countat; end a; ?library ieee; end a; library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity btdaojishi is port ( clk,loadbt:in std_logic; btin:in integer range 0 to 80; btout:out integer range 0 to 80); end btdaojishi; architecture a of btdaojishi is signal countbt:integer range 0 to 80; begin process begin wait until rising_edge(clk); if loadbt='1' then countbt<=btin; else countbt<=countbt-1; end if; end process; btout<=countbt; end a; 4、Main模块设计 main: use ieee.std_logic_1164.all; 49 use ieee.std_logic_unsigned.all; entity main is port ( s:in std_logic_vector(2 downto 0); lrgy:out std_logic_vector(7 downto 0)); end main; architecture a of main is begin process(s) variable b:std_logic_vector(7 downto 0); begin case s is when "000" => b:="01001100"; when "001" => b:="01000010"; when "010" => b:="01000001"; when "011" => b:="11000100"; when "100" => b:="00100100"; when "101" => b:="00010100"; when others => b:="00000000"; end case; lrgy<=b; end process; 5、译码程序清单如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity to8421bcd is port( at,bt:in integer range 0 to 80; aout1,aout2,bout1,bout2:out integer range 0 to 9); end to8421bcd; architecture a of to8421bcd is begin process (at,bt) begin if at>=70 then 50 aout1<=7; aout2<=at-70; elsif at>=60 then aout1<=6; aout2<=at-60; elsif at>=50 then aout1<=5; aout2<=at-50; elsif at>=40 then aout1<=4; aout2<=at-40; elsif at>=30 then aout1<=3; aout2<=at-30; elsif at>=20 then aout1<=2; aout2<=at-20; elsif at>=10 then aout1<=1; aout2<=at-10; elsif at>=0 then aout1<=0; aout2<=at; end if; if bt>=70 then bout1<=7; bout2<=bt-70; elsif bt>=60 then bout1<=6; bout2<=bt-60; elsif bt>=50 then bout1<=5; bout2<=bt-50; elsif bt>=40 then 51 bout1<=4; bout2<=bt-40; elsif bt>=30 then bout1<=3; bout2<=bt-30; elsif bt>=20 then bout1<=2; bout2<=bt-20; elsif bt>=10 then bout1<=1; bout2<=bt-10; elsif bt>=0 then bout1<=0; bout2<=bt; end if; end process; end a; 6、译码显示程序清单如下: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity yimaxianshi is port ( at1,at2,bt1,bt2:in integer range 0 to 9; aout1,aout2,bout1,bout2:out std_logic_vector(7 downto 0)); end yimaxianshi; architecture a of yimaxianshi is begin process(at1,at2,bt1,bt2) begin case at1 is when 0 => aout1<="00111111" ; when 1 => aout1<="00000110" ; when 2 => aout1<="01011011" ; when 3 => aout1<="01001111" ; 52 when 4 => aout1<="01100110" ; when 5 => aout1<="01101101" ; when 6 => aout1<="01111101" ; when 7 => aout1<="00000111" ; when 8 => aout1<="01111111" ; when 9 => aout1<="01101111" ; when others => aout1<="00000000" ; end case; case at2 is when 0 => aout2<="00111111" ; when 1 => aout2<="00000110" ; when 2 => aout2<="01011011" ; when 3 => aout2<="01001111" ; when 4 => aout2<="01100110" ; when 5 => aout2<="01101101" ; when 6 => aout2<="01111101" ; when 7 => aout2<="00000111" ; when 8 => aout2<="01111111" ; when 9 => aout2<="01101111" ; when others => aout2<="00000000" ; end case; case bt1 is when 0 => bout1<="00111111" ; when 1=> bout1<="00000110" ; when 2 => bout1<="01011011" ; when 3 => bout1<="01001111" ; when 4 => bout1<="01100110" ; when 5 => bout1<="01101101" ; when 6 => bout1<="01111101" ; when 7 => bout1<="00000111" ; when 8 => bout1<="01111111" ; when 9 => bout1<="01101111" ; when others => bout1<="00000000" ; end case; 53 case bt2 is when 0 => bout2<="00111111" ; when 1 => bout2<="00000110" ; when 2 => bout2<="01011011" ; when 3 => bout2<="01001111" ; when 4 => bout2<="01100110" ; when 5 => bout2<="01101101" ; when 6 => bout2<="01111101" ; when 7 => bout2<="00000111" ; when 8 => bout2<="01111111" ; when 9 => bout2<="01101111" ; when others => bout2<="00000000" ; end case; end process; end a; 54
本文档为【基于FPGA的交通灯控制电路设计毕业设计&#40;论文&#41;】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_633423
暂无简介~
格式:doc
大小:380KB
软件:Word
页数:0
分类:生活休闲
上传时间:2017-10-06
浏览量:129