已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
可编程逻辑器件电路设计课程设计报告出租车计费器的FPGA实现姓 名: 潘 慕,黄德龙,蔡伟龙 班 级: 08电信3 学 号: 200830020218 200830500106 200830580301 指导老师: 陈楚、吴敏、孙道宗 日期: 2010.12.202010.12.27 华南农业大学工程学院摘 要随着公共交通的发展和社会经济科技的进步,越来越多人会选择出租车作为出行工具,出租车行业得到快速的发展。这无形中创造了巨大的出租车计费器市场,但是用户对出租车计费器的要求也越来越高。特别是要求计费器性能的稳定,计费的准确,和易操作性和可靠性。这就要求着一个性能优秀,稳定可靠的数字电路。而基于FPGA的使用VHDL语言进行设计的EDA技术恰好符合这这一庞大的市场需求。EDA(电子设计自动化)技术作为现代电子设计技术的核心,它依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言为系统逻辑描述手段完成的设计文件,自动地完成逻辑简化、逻辑分割、逻辑综合(布局布线),以及逻辑优化和仿真等多项功能,直至实现既定性能的电子线路系统功能。EDA技术使得设计者的工作几乎仅限于利用软件的方式,即利用硬件描述语言HDL和EDA软件来完成对系统硬件功能的实现。FPGA(现场可编程门阵列)是实现专用集成电路目标的主流器件。它的特点是直接面向用户,具有极大的灵活性和通用性,使用方便,硬件测试和实现快捷,开发效率高,成本低,上市时间短,技术维护简单,工作可靠性好等。VHDL(甚高速集成电路硬件描述语言)是由美国国防部发起创建。发展至今,它已成为了电子设计主流硬件描述语言之一。1本设计基于FPGA开发平台,在Quartus和Maxplus电子设计软件开发平台上,完成了出租车计费电路的VHDL文本输入方式的设计和硬件功能的实现。本报告首先就不同的设计实现方案进行了对比选取;然后就把系统划分为不同的模块,从底层文件开始,对每一个实现的模块进行端口介绍和功能分析,并且给出电脑仿真的分析结果;再而,分析顶层文件,并给出系统最终综合和仿真的结果,以顶层设计方法分析顶层层文件的功能。最后,作出硬件验证结果的分析。关键词:出租车计费器 计程器 FPGA VHDL EDA目录1.方案比较与选择41.1出租车计费器的设计目标41.2基本设计方案思想41.2.1方案一41.2.2方案二61.2.3方案的选择72底层文件的仿真与分析82.1计程模块82.1.1功能介绍82.1.2端口介绍82.1.3综合电路图92.1.4仿真波形图102.1.5仿真分析102.2状态机控制模块112.2.1功能介绍112.2.2端口介绍112.2.3综合电路图122.2.4仿真波形图132.2.5仿真分析132.3计费模块132.3.1功能介绍132.3.2端口介绍142.3.3综合电路图152.3.4仿真波形图162.3.5仿真分析162.4译码模块172.4.1功能介绍172.4.2端口介绍172.4.3综合电路图182.4.4仿真波形图192.4.5仿真分析192.5溢出处理模块202.5.1功能介绍202.5.2端口介绍202.5.3综合电路图202.5.4仿真波形图212.5.5仿真分析213顶层文件仿真与分析223.1计数器模块顶层文件223.1.1功能分析223.1.2端口介绍223.1.3综合电路图233.1.4仿真波形图233.1.5仿真分析243.2总体顶层文件仿真与分析253.2.1功能介绍253.2.2端口介绍253.2.3综合电路图263.2.4仿真波形图263.2.5仿真分析264硬件验证分析274.1总述274.2引脚分配274.3硬件验证过程与现象285课程设计心得295.1蔡伟龙的心得295.2潘慕的心得295.3黄德龙的心得306 The FPGA Realization of a Taxi Meter317参考文献338附录348.1方案一实现代码348.1.1计程模块distance_counter.vhd348.1.2状态机模块state_machine.vhd358.1.3计费模块counter_fare.vhd368.1.4计数器顶层模块counter.vhd388.1.5译码显示模块counter_display.vhd398.1.6溢出处理模块overflow.vhd428.1.7总体顶层模块counter_of_taxi_fare.vhd438.2方案二实现过程简介与代码448.2.1系统的构成448.2.2VHDL实现源代码471.方案比较与选择1.1出租车计费器的设计目标实际中出租车的计费主要是按照路程的远近分成3段区间收费:1 车的起步开始计费。首先显示起步价(本次设计起步费为7.00元),车在行驶3km以内,只收起步价7.00元。2 车行驶超过3km后,按每公里2.2元计费(在7.00元基础上每行驶1km车费加2.2元),车费依次累加。3 行驶路程达到或超过9km后(车费达到20元),每公里加收50%的车费,车费变成按每公里3.3元开始计费。车暂时停止(行驶中遇红灯或中途暂时停车)不计费,车费保持不变。若停止则车费清零,等待下一次计费的开始。1.2基本设计方案思想1.2.1方案一1 设计思路a. 根据出租车计费器的计费工作原理,首先设计出一个具有4个状态的有限状态机,分别对应停止和暂停、行驶路程为03km、行驶路程为39km、行驶路程大于9km,4个状态。每个状态的转向通过由路程计数器模块输出的路程数据在主控组合进程里实现。利用每个状态对外的输出值,来实现对计费控制器对费用累加值的控制(判断是以2.2元/km或者是以3.3元/km单位来计费)。b. 设计计程模块。一共有16位二进制输出数据,分别对应4个路程显示的数码管的数据,每4位二进制数码可看作一位10进制数并对应着一个数码管,是以4位二进制数码为单位进行10进制计数,显示单位表示为00.00公里。c. 设计计费模块。一共有16位二进制输出数据,分别对应4个计费显示的数码管数据,每4位二进制数码可看作一位10进制数并对应着一个数码管,是以4位二进制数码为单位进行10进制计数,显示单位表示为00.00元。本设计中是以100米作为计费路程单位,而计费的里程单价是根据状态机不同状态输出的数据来决定的。d. 设计计数器顶层文件。负责连接两个计数器模块。e. 设计溢出处理模块。因为路程显示和计费显示都设置为00.00(km或元),而且显示只能局限于4为数码管。所以设计溢出处理模块,来应对溢出出现的情况,把溢出以一定的单位输出给二极管显示。f. 设计译码模块。译码模块负责控制把路程计数和计费数据输出给74LS138芯片用显示刷新时钟控制每个数码管的显示工作。g. 设计顶层文件。负责连接计数器顶层文件、溢出处理模块和译码模块。2 方案系统设计框图计程模块状态机时钟信号输入路程测量脉冲输入计费模块10米进位脉冲路程分段状态状态信号译码模块费用信号显示刷新时钟路程高位进位溢出处理模块高位进位LED输出显示8位数码管输出显示图1-1 方案一出租车计费器系统设计模块框图3 方案优点与创新点分析a. 整个系统通过状态机来控制,给系统带来了高效的顺序控制,系统的性能稳定,实现状态的高速转换和高可靠性。b. 有良好的溢出处理模块。1.2.2方案二1 设计思路a) 总体:使用计路程模块计行驶路程,使用计费模块计车费,两个模块共同使用重新开始、暂停开关控制,使用译码和输出模块将结果输出。b) 计路程模块。一共有16位二进制输出数据,分别对应4个路程显示的数码管的数据,每4位二进制数可看作一位10进制数并对应着一个数码管,是以4位二进制数码为单位进行10进制计数,显示单位表示为00.00公里。通过累加clk实现路程的增加。c) 计费模块。一共有16位二进制输出数据,分别对应4个计费显示的数码管数据,每4位二进制数可看作一位10进制数并对应着一个数码管,是以4位二进制数码为单位进行10进制计数,显示单位表示为00.00元。本设计中是以100米作为计费路程单位,通过判断行驶路程的公里数来决定当前的计费单价。d) 译码输出模块。把当前路程和车费数据输出给74LS138芯片,用扫描时钟控制每个数码管的显示工作。e) 顶层文件。负责连接三个模块。2 系统设计框图图1-2方案二 出租车计费器系统设计模块框图3 方案优点与不足a. 系统总的设计文件量小。b. 计数器使用的进位思想简单新颖,适合多位计数的处理。c. 量程最大为99.99,没有对超过量程的情况做处理。1.2.3方案的选择虽然方案二的设计思路新颖简洁独特,但由于方案一的处理情况比较全面,所以本设计将才有方案一为最终实现方案。由于方案二的优点,所以我们在附录里附有方案二的设计过程和设计的VHDL源代码。2底层文件的仿真与分析2.1计程模块2.1.1功能介绍以路程测量信号作为计程模块中的计数器的计数时钟(本设计中以时钟信号作模拟路程测量信号),进行计数。计数一共使用16位二进制数码,每4位可看成一个独立的十进制数对应着数码管显示的每一位,每4位是以十进制的方式计数的(即从“0000”“1001”)然后向比它高4位二进制数码进位,如此类推计数。2.1.2端口介绍本模块一共有7个端口(4个输入端口和3个输出端口)。清零信号clr(输入端口):类型为标准逻辑位。当其为高电平“1”,进行清零操作。当其为低电平“0”时,进行数据保持。计数使能信号en(输入端口):类型为标准逻辑位。当其为高电平“1”时,计数无效。当其为低电平“0”时,计费有效。置数控制信号load(输入端口):类型为标准逻辑位。当其为高电平“1”时,将会向16位的输出二进制数码置0.当其为低电平“0”时,正常工作。计数时钟clk(输入端口):类型为标准逻辑位。作为路程测量信号的计数时钟,当使能信号、置数信号和清零信号满足条件时,在时钟上升沿的时候,让路程的“00.0*”中的“*”加一。计程数据输出信号dout(输出端口):类型为16位标准逻辑位矢量。向外输出计程的数据结果。计程数据输出信号-以km为单位的4位二进制数(输出端口):类型为4位标准逻辑位矢量。向外输出计程数据中“0x.00”x的部分,即单位为千米的部分。用于状态机状态转换的判断信号。计程十米进位信号cout0(输出端口):类型为1位标准逻辑位。用于计费模块计费的进行计程单价累加的触发时钟。计程十公里的进位信号cout1(输出端口):类型为1位标准逻辑位。用于扩展功能的实现。2.1.3综合电路图图2-1-1计程模块的RTL图图2-1-2计程模块的综合元件图2.1.4仿真波形图图2-1-3清零使能置数信号测试仿真图2-1-4十进制进位测试与进位信号测试仿真图2-1-5总体仿真测试2.1.5仿真分析通过清零使能置数信号测试仿真波形图,我们可以看到清零信号clr和置数信号load都是异步的,不受计程时钟的控制。清零信号clr和置数信号load都有着相近的效果,当它们一来高电平“1”时,输出的16为二进制数据信号都同时全部置零,然后当高电平变为低电平时开始计数。当它们为低电平“0”时,为正常计数状态,保持上次计数的数据。这说明清零信号clr和置数信号load都达到了我们预期的效果。通过十进制进位测试与进位信号测试仿真图,我们可以清晰地看到当计程计数数据输出的16位标准逻辑位矢量dout计数变化“0009”(用十六进制表示)时,在下一个计数脉冲到来的时候就变化到“0010”,而且当dout等于“0009”时,计程十米进位信号cout0就产生了一个负脉冲的跳变。十进制进位与进位信号测试仿真符合预期效果。通过总体仿真图我们可以看到,计程计数模块能够顺利的进行清零、使能控制、置数、十进制进位、输出进位信号等功能。2.2状态机控制模块2.2.1功能介绍以计程测量脉冲作为触发时钟,以计程输出的公里输出的4位二进制数码作为状态机状态转换方向的控制信号。根据路程长短的变化,通过状态机状态的转换给计费模块使计费模块能根据该路程情况下计程单价的变化。2.2.2端口介绍时钟信号clk(输入端口):类型为标准逻辑位。用于输入计程测量脉冲信号,作为状态机工作的时钟。清零信号stop(输入端口):类型为标准逻辑位。用于状态的清零重置控制,是异步的。暂停信号pause(输入端口):类型为标准逻辑位。用于暂停计程计费的控制信号,暂停状态机的转换。开始信号start(输入端口):类型为标准逻辑位。用于开始计程计费状态的初始设置。计程数据输入distance(输入端口):类型为4位标准逻辑位矢量。用于根据计程器以公里为单位的4位二进制数和不同计程单价的区间来决定,状态的转向。状态数据输出dataout(输出端口):类型为2位标准逻辑位矢量。用于向计费模块输出当前的状态(现态),使计费模块能根据路程来调整计程单价。2.2.3综合电路图图2-2-1状态机模块的RTL图图2-2-2状态机模块的状态转换图图2-2-3状态机模块的综合元件图2.2.4仿真波形图图2-2-4开始信号与清零控制信号测试仿真图2-2-5状态机模块总体测试仿真2.2.5仿真分析从开始信号与清零控制信号测试仿真图中,可以看到当且仅当开始信号start向状态机输入一个正脉冲后,状态机才会开始工作。同时也能看到,当清零信号stop向状态机输出一个正脉冲后,状态机就从其他工作状态转到初始状态st0上。仿真测试符合预期。从状态机模块测试仿真图中,可以看到当dout为3(“0011”)或9(“1001”)时状态机就会产生状态的转换,并且输出状态的表示信号。从仿真结果上,可以看出仿真结果符合预期。2.3计费模块2.3.1功能介绍以来自计程模块的cout0(十米的进位)信号作为工作时钟,根据状态机模块送出的状态信号,来决定当前的计程单价,然后用十进制计数器的原理,来对每4位二进制数码(一共16位二进制数码)进行累加和进位调整。然后,把16位二进制数码输出给译码模块部分。2.3.2端口介绍工作时钟clk(输入端口):类型为标准逻辑位。利用来自计程模块的十米进位输出信号cout0作为本模块的工作时钟。清零信号clr(输入端口):类型为标准逻辑位。当给清零信号一个高电平“1”时,输出的16位二进制数码全部清零。当其为低电平时计费计数正常工作。置数信号load(输入端口):类型为标准逻辑位。当给置数信号一个高电平“1”时,输出的16位二进制数码被置为“0000011100000000”即十进制的“0-7-0-0”。当其为低电平时计费计数正常工作。工作使能信号en(输入端口):类型为标准逻辑位。当其为低电平时为正常的计费计数工作状态。当为高电平时,计费计数暂停。状态输入datain(输入端口):类型为2位标准逻辑位矢量。当其输入为“00”时,表示行驶路程在大于等于0km小于等于3km的状态。当其输入为“01”时,表示行驶路程在大于3km小于等于9km的状态。当其输入为“10”时,表示行驶路程在大于9km的状态。计费数据输出dout(输出端口):类型为16位标准逻辑位矢量。用于把计费数据输出到译码模块上去,让其显示出来。计费高位溢出处理信号cout(输出端口):类型为标准逻辑位。用于把计费溢出送给溢出处理模块进行处理。2.3.3综合电路图图2-3-1计费模块的RTL图图2-3-2计费模块的综合元件图2.3.4仿真波形图图2-3-3清零信号、工作使能信号、置数信号测试仿真图2-3-4计费模块综合测试仿真2.3.5仿真分析从清零信号、工作使能信号、置数信号测试仿真图中,可以看到当清零信号clr为高电平时,输出的16位二进制数码信号全部被清为零。当使能信号en为高电平时,计费计数器没有在工作时钟的驱动下进行计费计数工作,即计费计数暂停了。当置数信号来了一个正脉冲后,输出的16位二进制数码信号被置数为“0000011100000000”(图中“0700”为16进制)。仿真波形图的结果符合设计预期。从计费模块综合测试仿真图中,看以看到当状态输入信号datain为“00”时,计费输出数据状态一直保持在“0700”(16进制);当且仅当datain为“01”时才开始,以0.22元/百米(2.2元/km)进行计费(实际实现的是以“0000,0000,0010,0010”为单位进行累加);当datain为“10”时才开始,以0.33元/百米(3.3元/km)进行计费(实际实现的是以“0000,0000,0011,0011”为单位进行累加)。仿真符合设计预期。2.4译码模块2.4.1功能介绍译码模块内部定义了一个状态机,用于控制74LS138芯片使其高速稳定地分配每位数码管显示输出。以高频率的时钟作为显示刷新时钟,该时钟用于控制状态机的状态转换(每位数码管显示定义为一个状态)。2.4.2端口介绍显示工作时钟clk(输入端口):类型为标准逻辑位。连接到一个高频时钟信号源。用于译码显示时数码管的转换控制。计程数据输入distance_in(输入端口):类型为16位标准逻辑位矢量。连接到计程模块的计程数据输出端口。作为路程显示数据的输入。计费数据输入fare_in(输入端口):类型为16位标准逻辑位矢量。连接到计费模块的计费数据输出端口。作为计费显示数据的输入。显示输出led7(输出端口):类型为8位标准逻辑位矢量。把显示数据送给74LS138数据选择器用于数据的显示输出。选通输出ls138(输出端口):类型为3位标准逻辑位矢量。把选通数据送给74LS138,用于选择数码管的显示。图2-4-1七段数码管译码表2.4.3综合电路图图2-4-2译码模块的RTL图图2-4-3译码模块状态机的状态转换图图2-4-4译码模块的综合元件图2.4.4仿真波形图图2-4-5译码模块综合测试仿真2.4.5仿真分析从译码模块综合测试仿真图上,可以看出译码模块随着显示工作时钟的来进行状态转换分别把数据分时分段分发给每一位7段数码管译码显示。2.5溢出处理模块2.5.1功能介绍以计程模块和计费模块的高位溢出输出,来控制溢出指示灯的显示。2.5.2端口介绍计程溢出信号输入distance_cout(输入端口):类型为标准逻辑位。连接计程计数模块的10km的进位,当满100km时会给LED输出一个高电平,使其点亮。计费溢出信号输入fare_cout(输入端口):类型为标准逻辑位。连接计费计数器的高位溢出输出信号,当计费模块的最高位为“1001”时,就产生一个负脉冲信号。LED显示输出light0light3(输出端口):类型为标准逻辑位。用于输出表示溢出数据的显示。2.5.3综合电路图图2-5-1溢出模块的RTL图图2-5-2溢出模块的综合元件图2.5.4仿真波形图图2-5-3溢出处理模块总体测试仿真图2.5.5仿真分析 从溢出处理模块总体测试仿真图中,可以看出,当计费计数模块的高位数据产生溢出时将会通过fare_cout给出一个负脉冲信号,此时light0就从低电平跳变到高电平点亮第一个LED,如果在溢出就点亮light1灯,再溢出就点亮light2灯。当路程溢出时只点亮light3灯。可见,仿真结果符合设计预期。3顶层文件仿真与分析3.1计数器模块顶层文件3.1.1功能分析连接底层的计程模块、计费模块和状态机模块。3.1.2端口介绍计程测量时钟clk_counter(输入端口):类型为标准逻辑位。作为内部底层文件工作时钟。清零信号stop(输入端口):类型为标准逻辑位。作为底层计数器和状态机的清零控制,当其为高电平时,所有计数器都清零,状态机跳到初始状态st0。暂停信号pause(输入端口):类型为标准逻辑位。当其为高电平时,底层所有计数器计数暂停,当为高电平时正常工作。初始化置数信号start(输入端口):类型为标准逻辑位。当其为高电平时进行给底层计数器进行初始化置数操作(计程输出数据为“0000-0000-0000-0000”,计费输出模块为“0000-0111-0000-0000”)并使状态机初始化。计程数据输出distance_out(输出端口):类型为16位标准逻辑位矢量。向译码模块实时输出行程信息。计费数据输出fare_out(输出端口):类型为16位标准逻辑位矢量。向译码模块实时输出费用信息。计程高位溢出信号distance_cout(输出端口):类型为标准逻辑位。向溢出处理模块输出计程溢出信息。计费高位溢出信号fare_cout(输出端口):类型为标准逻辑位。向溢出处理模块输出计费溢出信息。3.1.3综合电路图图3-1-1计数器顶层模块的RTL图图3-1-2计数器顶层模块的综合元件图3.1.4仿真波形图图3-1-3暂停信号、初始置数信号和清零信号测试仿真图3-1-4行程与费用联动测试仿真一图3-1-5行程与费用联动测试仿真二图3-1-6计费溢出信号测试仿真图3-1-7计程溢出信号测试3.1.5仿真分析从暂停信号、初始置数信号和清零信号测试仿真图中,可以看到暂停信号、初始置数信号和清零信号均能以高电平有效,来分别完成对计数器的暂停控制初始置数的设置和清零操作。从行程与费用联动测试仿真的两张仿真波形图中,可以看出计费均能在3km和9km处自动切换计程单价。从计费溢出信号和计程溢出信号的测试中,可以看到在当计程数据或计费数据的最高四为为“1001”时均能正常输出溢出信号。3.2总体顶层文件仿真与分析3.2.1功能介绍为各个底层文件提供信号,连接并封装各个模块。使各个具有特定功能的模块组合成一个完整、稳定和快速的系统。3.2.2端口介绍计程测量时钟clk_counter(输入端口):类型为标准逻辑位。作为内部底层文件工作时钟。清零信号stop(输入端口):类型为标准逻辑位。作为底层计数器和状态机的清零控制,当其为高电平时,所有计数器都清零,状态机跳到初始状态st0。暂停信号pause(输入端口):类型为标准逻辑位。当其为高电平时,底层所有计数器计数暂停,当为高电平时正常工作。初始化置数信号start(输入端口):类型为标准逻辑位。当其为高电平时进行给底层计数器进行初始化置数操作(计程输出数据为“0000-0000-0000-0000”,计费输出模块为“0000-0111-0000-0000”)并使状态机初始化。显示刷新时钟clk_display(输入端口):类型为标准逻辑位。连接到一个高频时钟信号源。用于译码显示时数码管的转换控制。显示输出led7(输出端口):类型为8位标准逻辑位矢量。把显示数据送给74LS138数据选择器用于数据的显示输出。选通输出ls138(输出端口):类型为3位标准逻辑位矢量。把选通数据送给74LS138,用于选择数码管的显示。LED显示输出light0light3(输出端口):类型为标准逻辑位。用于输出表示溢出数据的显示。3.2.3综合电路图图3-2-1顶层模块的综合元件图图3-2-2顶层模块的技术元件图3.2.4仿真波形图图3-2-3顶层文件测试仿真3.2.5仿真分析根据上述仿真图可以得到,在软件测试仿真中,整个数字电路系统符合设计的要求。4硬件验证分析4.1总述根据上述的结果,系统在计算机仿真中是可以通过的。所以我们就进行硬件验证。因为我们使用的是比较早生产的FPGA芯片(EPF10K10LC84-4),因此我们使用Maxplus来进行代码下载。图4-1设计使用的EDA教学试验箱4.2引脚分配图4-2引脚分配图4.3硬件验证过程与现象1) 首先,连接好实验箱与电脑。调整好两个时钟的频率(要求显示刷新时钟要比较高)。给实验箱上电。2) 在电脑上用Maxplus打开已经编写好的底层文件并逐一编译,最后打开并编译顶层文件。3) 把代码下载到实验箱上。4) 拨动清零开关(自定义的)把系统所有的计数和状态模块都复位。5) 拨动开始开关把系统置入开始状态,此时数码管应显示“ 7.00- 0.00”,然后系统自动开始进入计程计费工作状态。6) 拨动暂停开关测试,系统的暂停功能,此时数码管应该保持在拨动开关前的状态。7) 查看当路程显示超过“3.00”时和“9.00”时计费显示的状态,此时计费的累加应该分别为0.22和0.33。同时在路程显示小于“3.00”时,计费显示应该一直显示在“7.00”的状态。8) 查看溢出情况,当计费溢出时,会每一次溢出点亮一个LED(从右到左依次点亮,一共三个)。路程溢出同样效果,不过只能溢出处理一次,因为路程溢出的情况在现实极少出现。经过在实验箱上的实际测试,以上的要求都符合。图4-1硬件验证的情况5课程设计心得5.1蔡伟龙的心得这学期的EDA的课程设计,我们小组选择了出租车计费器的题目,这个题目贴近生活并且可以把学到的知识应用到实际产品的设计中去。首先最大的感受就是可以自己开动脑筋思考实现各个功能模块的方法,同时检验自己所学的知识,并且能在团队的合作中交流意见,分享资源信息。在设计的过程中,虽然一开始不是很顺利,实现功能的途径也尝试了多种,有些程序编译出现错误,但就是在错误中不断学习改进,加深对疑难知识点和VHDL语言的规范性的理解,同时也锻炼了查错改错的能力。另外,通过这次课程设计,我学习了FPGA的开发流程和开发软件的使用方法,掌握了MAX+plus II 和Quartus II编译、下载、仿真、综合的操作方法,实践动手能力得到了提高。5.2潘慕的心得只有自己动手写程序才能真正学会EDA,我的体会非常深刻。学了一个学期的EDA,我觉得似乎并没有什么内容,但在课程设计写程序时,才发觉这其中的奥妙,把程序写出来不难,但要成功实现其功能却涉及不少细节,这些都要靠自己细细体会。这次课程设计我的收获非常大,我对EDA的理解完全上了一个台阶,也学会了max+pulsII和quartusII这两个软件的使用方法。我们组选择的是出租车计费实验。在编写程序的过程中,我常常会发现一些本来想起来觉得简单的电路却难以用VHDL语言描述出来,或者是程序出来了仿真的结果就是不对,或是不同的仿真软件结果不同。通过大量的尝试,我觉得是程序写复杂了,导致EDA软件没有按照我的预想去解读程序,有时候换一种表达方式,把进程拆开或合并,往往能解决问题。EDA程序的编写一定要简单明了,用最简单的方式表达你的逻辑。我在编写程序的过程中因为种种原因曾多次推翻以前的方案,甚至彻底重写完整的程序。我曾构思过各种控制方法来控制其运行,但多因为实现困难而放弃了,花费了大量的时间,后来我干脆把控制模块连同外围的东西全去掉了,就只留下最简单的计路程和计费的模块,反而更容易实现功能。一开始时我其实并不了解实验箱中数码管的内部连接方式,我照着我的理解设计了其译码显示电路,最后才发觉用不上,跟组员讨论过后,依照实验箱的结构重新写了一个才可以成功显示。最后完成的作品与我最初的构思已大不相同了,结构显得非常简单。这次我同时使用了max+pulsII和quartusII两个软件,max+pulsII我用得不熟,而quartusII则是第一次使用,导致我在仿真时纠结了很长一段时间,经过同学的指导后,我已经可以熟练使用这两个软件了。5.3黄德龙的心得这学期的EDA课程设计使我学到很多课堂上学不到的东西,也许我们小组是与其他小组不同的因为我们是一起设计。我们每个人都各自想了一个实现方案,我们都各自就自己的方案做了几天,遇到什么问题我们就通过各种方式联系,聚在一起解决这些问题。有很多问题上课时老师说过但印象不深刻,通过这次的课程设计我深深地认识了解决这些问题的方法,还学到了很多的课堂上学不到的知识。更重要的是学会了怎样使用FPGA这个现场可编程门阵列的硬件,和配套的开发工具。在写设计报告的过程中,我更加熟悉了标准的论文报告格式和排版规范。,总而言之,这次课程设计给我带来了非常丰富的收获。感谢学院,感谢老师,给了我们这个难得的机会。感谢伟龙,感谢潘慕,因为你们,我们一起学习,一起研究一起进步。6 The FPGA Realization of a Taxi MeterAbstractWith the development of public transport and socio-economic advancement of technology, more and more people would choose a taxi as a travel method, which brings the rapid development of the taxi industry. This is tantamount to creating a huge market of taxi meter, at the same time, the user requirement of taxi meters is becoming higher and higher. In particular that the stable performance of working, billing accuracy, and ease of operation and reliability. This requires a good performance, reliable digital circuitry. The use of FPGA-based design of VHDL, EDA technology caters to that of the huge market demand.EDA (Electronic Design Automation) technology as the core of modern electronic design technology, it relies on powerful computer platform in the EDA software tools, hardware description language of the logic description method for the system to complete the design documents, automatically complete logic simplification Logical partitioning, logic synthesis, and logic optimization and simulation and many other functions, until the performance of electronic circuits to achieve the wanted system functions. EDA technology allows designers to just use the software, namely the use of hardware description language (HDL) and EDA software to complete the implementation of the system hardware functions.FPGA (Field Programmable Gate Array) is the mainstream ASIC(Application Specific Integrated Circuits) target device. It is characterized by a direct user-oriented, has great flexibility and versatility, ease of use, hardware testing and implementation of fast development of high efficiency, low cost and short time to market, technology and simple maintenance, good reliability and so on.VHDL (Very High Speed Integrated Circuit Hardware Description Language) is initial created by the U.S. Department of Defense. Development so far, it has become the mainstream of electronic design hardware description languages.This design, which is based on FPGA development platform, the Quartus and Maxplus electronic design software development environment, complete and achieve the design of taxi meter circuit using VHDL text designed method. This report firstly centers on the competition and selection of different solutions; Secondly, divide the system into different modules, starting from the bottom VHDLs file, introduce each port connected to each module and functional analysis, and showing the computer simulation results of the analysis; Thirdly, analyzing the top-level VHDLs file, and the final synthesis and simulation results of this system is given, which analyze the top layers file using the top-down design method. The last but not least, it is to analyze the results to hardware verification.7参考文献1.潘松,黄继业.EDA技术实用教程VHDL版.科学出版社.2010.6:15.8附录8.1方案一实现代码8.1.1计程模块distance_counter.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity distance_counter isport(clk,clr,en,load:in std_logic;-记路程的时钟,清零信号,计数使能(也即暂停信号),异步置位(也即启动信号) dout:out std_logic_vector(15 downto 0);-路程的输出 dout_sm:out std_logic_vector(11 downto 8);-公里数输出,作为状态机的检测信号 cout0,cout1:out std_logic);-满百米的进位(作为计费的时钟,百米计费一次),满100Km超量程的进位end distance_counter;architecture bhv of distance_counter isbeginprocess(clk,clr,en,load)variable q:std_logic_vector(15 downto 0);begin if (clr=1 or load=1) then q:=(others=0);-清零或置位有效 elsif (clkevent and clk=1) then if en=0 then if q(3 downto 0)1001 then q(3 downto 0):=q(3 downto 0)+1;-个位+1 else q(3 downto 0):=0000; -个位有进位if q(7 downto 4)1001 then q(7 downto 4):=q(7 downto 4)+1;-十位+1else q(7 downto 4):=0000;if q(11 downto 8)1001 then q(11 downto 8):=q(11 downto 8)+1;-百位+1else q(11 downto 8):=0000;-百位有进位if q(15 downto 12)1001 then q(15 downto 12):=q(15 downto 12)+1;-else q(15 downto 12):=0000;-end if;end if;end if;end if;end if;end if;if q(3 downto 0)=1001 then cout0=0;-满百米的进位else cout0=1;end if;if q(15 downto 12)=1001 then cout1=0;-满100Km的进位else cout1=1;end if; dout=q; dout_sm=q(11 downto 8);end process;end bhv;8.1.2状态机模块state_machine.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity state_machine is port(clk,stop,pause,start:in std_logic;-时钟,清零,暂停,启动信号 distance:in std_logic_vector(3 downto 0); -路程公里数输入 dataout:out std_logic_vector(1 downto 0)-输出计费控制信号 );end state_machine;architecture bhv of state_machine istype states is(st0,st1,st2,st3);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 私募股份融资协议书
- 电商合作协议书合同
- 石头彻墙承包协议书
- 社区教育基地协议书
- 破产拍卖协议书模板
- 砂石清洗协议书模板
- 直播公司保底协议书
- 电瓶车租车协议合同
- 电梯回收安全协议书
- 票务长期合作协议书
- 大学生职业生涯规划与就业创业指导教学教案
- 杜城村道路施工方案
- 【机械手】-桁架机械手综合训练指导书
- 基于PLC的自动售货机系统
- 颠覆式创新分享
- 分解区域培训教材课件
- GB/T 16825.1-2022金属材料静力单轴试验机的检验与校准第1部分:拉力和(或)压力试验机测力系统的检验与校准
- 小儿推拿课件:小儿推拿概述
- 房地产估价习题与答案
- WiFi技术简介PPT课件(PPT 95页)
- GB∕T 1927.2-2021 无疵小试样木材物理力学性质试验方法 第2部分:取样方法和一般要求
评论
0/150
提交评论