毕业设计(论文)基于FPGA语言的水表抄表器.doc

上传人:laozhun 文档编号:3979173 上传时间:2023-03-30 格式:DOC 页数:46 大小:508KB
返回 下载 相关 举报
毕业设计(论文)基于FPGA语言的水表抄表器.doc_第1页
第1页 / 共46页
毕业设计(论文)基于FPGA语言的水表抄表器.doc_第2页
第2页 / 共46页
毕业设计(论文)基于FPGA语言的水表抄表器.doc_第3页
第3页 / 共46页
毕业设计(论文)基于FPGA语言的水表抄表器.doc_第4页
第4页 / 共46页
毕业设计(论文)基于FPGA语言的水表抄表器.doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《毕业设计(论文)基于FPGA语言的水表抄表器.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于FPGA语言的水表抄表器.doc(46页珍藏版)》请在三一办公上搜索。

1、1绪论 21世纪人类将全面进入信息化社会,对微电子信息技术和微电子基础技术将不断提出更高的发展要求,微电子技术仍将继续是21世纪若干年代中最为重要的和最有活力的高科技领域之一。而集成电路(IC)技术在微电子领域占有重要的地位。伴随着IC技术的发展,电子设计自动化(Electronic Design Automation, EDA)已经逐渐成为重要设计手段,其广泛应用于模拟与数字电路系统等重要领域。1.1水表抄表器的发展现状 对智能住宅小区的自来水集中自动抄表系统进行了研究。近年来,随着科学技术的不断发展和人民生活水平的不断提高,“智能化住宅”这一概念正在逐步地被引入到普通住宅小区的建设之中。其

2、中最典型的应用便是自来水表、电表、管道煤气表等三表的集中自动抄表系统。随着人们生活水平的不断提高和生活节奏的日益加快,现代家庭中的煤气、电、水费的核算和收缴工作日益成为一种负担。传统的计量器采用各自独立的感应式计量表,传统的水、电、煤气抄表有很多弊端,诸如必须逐门入户抄表,收费困难,易造成漏抄、误抄或多抄,需投入大量的抄表统计人员,而且存在抄表效率低、速度慢、成本高等问题。而不仅工作量大、数据统计麻烦,而且容易出错,费用收缴工作也极其麻烦。随着电子技术和网络技术的不断发展,以可编程逻辑器件为核心设计制作的全电子式计量表必将取代传统的感应式计量表。尤其是集群式、模块化、全电子数字化多用户计量表,

3、将会成为民用主导产品。本设计的抄表系统,它可把多用户的水量用量集中记录在一部表中,而且采用多用户联网的形式,进行集中抄写,数据统计简单,费用收缴周期可以大幅度的缩减。通过采用不同的流量感测模块,该电子式抄表还可改装为煤气、电费等多用途的抄表器。它对用户水、电、气等量的自动计费、收费联网,状态报警提示和防止用户使用非法手段窃水、窃电等功能于一体,是适应管理现代化的最佳计量器具之一。由此设计了一套远程抄表系统。由于它们的出现既方便了广大用户,又大大减轻了抄表员的工作量,同时由于计量精确,因而已具有成为该领域中主流技术的趋势。 抄表系统基本工作原理:利用电子技术和传感技术,对传统电表、水表、气表加以

4、改进,使其成为远传表,在户外装一套计量系统,将每一个计量表传感器传出的数据,送到每个表的采集器存储,经过函数变换送到智能电路单元,各单元通过数据总线并联,在数据总线上任何一点皆可以与计算机通讯,自动抄收三表数据。系统包括远传检测表头、数据抄表器、上位控制器等三个部分。 (1)远传检测表头:通过对现有电表、水表、煤气表加装传感器,使其既能就地显示计量数据,又能产生相关计量脉冲信号的新型计量表具。传感器实质上是一种基于磁电转换技术或光电转换技术的脉冲发生电路单元.远传检测表头均为机械转盘式,将磁感应探头装在检侧表头的某一刻度上,并通过磁屏蔽防止外界磁场的干扰后,便将一台一次表改制成远传检测表头。转

5、轴的圈数通过探头组件的输出端送到数据采集器,该数据通过一定的倍率计算便成为最终的计量数据。例如,在现有转盘计数的水表中加装霍尔元件和磁铁,即可构成基于磁电转换技术的传感器,霍尔元件固定安装在计数转盘附近,永磁铁安装在计数盘上,则当转盘每转一圈,永磁铁经过霍尔元件一次。即在信号端产生一个计量脉冲。同样,可以采用光电转换技术产生计量脉冲,实现远传抄表的目的。(2)数据抄表器:其主要功能是采集检测表头数据,累积表头数据,通过系统总线上传至上位控制器。其一般具有8个通道,每个通道连接1个检测表头。为保障系统的安全性及可靠性,数据采集器应具有表底数据及采集数据的存储功能。(3)上位控制器:上位控制器可与

6、数据采集器、检测表头组成完整的小规模抄表系统,标准型上位控制器通过屏蔽双绞线可挂接多个数据采集器。上位控制器主要功能是,对数据采集器硬件设备管理,历史数据存储、累积,采集器数据显示、打印等功能。 本设计主要是针对该系统的核心部分数据抄表器,抄表器接受已处理好的脉冲信号,每1000个脉冲记为1度。一个抄表器可以记录一户的用水量,同时循环显示各户现在的用水量。1.2本课题的研究意义本课题的研究意义有以下几个: 首先,就是完成本课题的具体设计,通过这次设计,掌握用VHDL设计数字系统的方法。 其次是探讨用VHDL实现数字系统设计应当注意的方面。 再次探讨VHDL语言的具体特点。最后注意编码的效率,以

7、求速度和功耗的最优化。1.3 目标内容随着社会和科技的发展,可编程逻辑器件为核心设计制作的全电子式计量表必将取代传统的感应式计量表。尤其是集群式、模块化、全电子数字化多用户计量表,将会成为民用主导产品。本设计的抄表系统,它可把多用户的水量用量集中记录在一部表中,而且采用多用户联网的形式,进行集中抄写,数据统计简单,费用收缴周期可以大幅度的缩减。通过采用不同的流量感测模块,该电子式抄表还可改装为煤气、电费等多用途的抄表器。它对用户水、电、气等量的自动计费、收费联网,状态报警提示和防止用户使用非法手段窃水、窃电等功能于一体,是适应管理现代化的最佳计量器具之一。这个设计就是针对以上的讨论进行的,通过

8、四个模块的编译和仿真使其能够基本实现所需的功能,能够使得基本可以应用到生活当中,使得抄表器更为先进和规范。2水表抄表器的总体思路设计 由于FPGA只能实现数字电路,因此输入信号的整形电路不能用FPGA来实现,所以整形电路需另外实现外加。从而可以假定FPGA接受的都是经过整形电路整形、变换后的规则信号,电压幅值为0-5V.设计采用自顶向下(TOP-DOWN)的设计方法。首先把系统化为几个模块,然后在分别用VHDL实现。最后把各个模块连接起来,构成整个系统。 由图2-2所示,可以把它分为以下四个模块:控制模块、计数模块、存储数据的存储模块、显示数据的显示模块。控制模块是整个系统的控制部分,它控制着

9、系统的复位、测量的开始。控制模块接受系统外部的复位信号,从而产生系统内的复位信号去复位其他模块,控制着测量的开始。计数模块是整个测量系统的核心,进行计数,计数结果送到存储模块。存储模块的复位信号由控制模块提供,它从计数模块接受到新的计数结果,存储到内部寄存器后,产生一个标志信号,送到控制模块,以便新的一轮的脉冲测量,从而实现连续不间断测量。测量结果经存储后送模块显示,显示模块从存储模块得到结果,进行连续实时显示,其复位信号同样由控制模块提供。整个系统模块如图2-2所示: 图2-2系统框图各模块功能描述如下:控制模块CONTROL控制模块相当于控制电路部分,它的主要功能是控制整个抄表器系统的复位

10、,测量的开始等。系统的控制信号几乎都是由控制模块发出的,其他几个模块的工作都受控制模块的控制。控制模块接受外部对系统的复位信号、测量开始信号,然后产生系统内的复位信号对整个系统进行复位操作,或者输出开始测量信号,从而让整个系统开始测量操作。此外控制模块还接受存储模块反馈回来的数据接受完毕信号,以用来实现连续不间断的测量。计数模块COUNTER计数模块是整个抄表器的核心部分,它通过对被测脉冲计数来进行测量。计数模块在每次测量前,从控制模块接受复位信号RESET,对模块进行复位,清除上次的测量结果,为新的一次测量做准备。模块在当计数器计数完成并且测量结果输出信号TKEEP上的结果稳定后,才输出使能

11、信号OUTEN,使得存储模块可以读取测量结果,从而保证了所读测量结果的准确性。存储模块IICCONTROL存储模块通过对计数模块的测量结果的存储。本设计存储模块采用具有IIC总线的AT24系列的存储芯片,所以存储模块的设计主要是设计一个IIC总线的控制器。它的工作过程如下:存储模块从控制模块接受系统开始信号START,还从计数模块接受使能信号WREN和测量结果信号TKEEP。只有当使能信号WREN到来时,存储模块才能从计数模块读取结果信号TKEEP。当RDEN到来时,结果信号TKEEP被送到存储芯片上。而存储模块输出的标志信号FLAG标志着存储模块已经读取了计数模块的测量结果,送到控制模块后,

12、将启动新一轮的测量,实现连续不间断测量。显示模块DISPLAY显示模块主要作用是生成共阴极数码管显示测量结果所需的控制信号和数据信号。模块从控制模块接受模块输入复位信号SYSSTART对模块进行复位操作。模块输入的基准时钟CLKDISP为分频电路分频处理后,频率为1K的时钟,用于数码管的循环显示。模块同时从存储模块接受模块输入测量结果信号DATA。该测量结果信号是用二进制表示的,显示模块首先将该信号转换成BCD码表示的形式,以用于数码管的显示。模块输出的各个数码管选通信号GATE1 -GATE3为各个数码管的选通信号,当某一选通信号为高电平时,表示该选通信号对应的数码管被选中有效,可以进行显示

13、操作。模块输出的数据信DIGITOUT各位上的信号是否为高电平来决定是否点亮数码管中对应的显示段。显示模块对数码管以较高的频率进行循环显示,不断重复刷新,由于人眼的延迟性,数码管看起来是同时在显示。3水表抄表器程序的模块化处理 集中抄表器系统共分为四个模块:控制模块、计数模块、存储模块和显示模块。下面将依次介绍其各模块的实现。3.1控制模块 控制模块是整个系统的控制部分,它控制着其他四个模块的工作图3-1是控制模块的模块图。KONGZHIRESET RESETOUTSYSSTART STOPFLAG STARTCUNCHUBASECLK 图3-1 控制模块的模块图3.1.1模块输入、输出 控制

14、模块的输入信号有: RESET:为系统复位信号。当需要复位系统时(一般在进行新的测量前),只需使RESET变为高电平(RESET= 1)即可将整个系统复位,.处于等待测量状态。 SYSSTART:为系统开始测量脉冲信号。在进行一次新的测量前需要也仅需要给SYSSTART一个脉冲,系统就开始进行连续不间断的测量。其中,SYSSTART的脉冲宽度要大于模块中所有时钟(经分频电路分频后得到)的一个周期。FLAG:为存储模块反馈回来的标志信号。它标志着存储模块已经从计数模块取得此次测量的结果。控制模块接受到此脉冲信号后,就发出STARTCUNCHU脉冲信号,使系统进行下一次测量,而不再需要SYSSTA

15、RT信号,从而实现了连续不间断测量。 BASECLK:为基准时钟,它由外加的晶振所提供。为了调试的方便,仿真时设为1 KHZ。 输出信号有: RESETOUT:为输出复位脉冲信号。它由系统复位信号RESET产生,主要为计数 模块、显示模块的复位。 STARTCUNCHU:为存储开始脉冲信号。它既由系统开始测量脉冲信号SYSSTART 产生,也由存储模块反馈的标志信号FLAG产生。 STOP:为存储停止信号,它由反馈信号FLAG产生。3.1.2模块流程 控制模块的流程如图3-2所示:图3-2 控制模块流程图控制模块首先检测三个输入信号:系统复位信号RESET、系统开始测量脉冲SYSSTART和存

16、储模块反馈信号FLAG的变化。当RESET变为高电平(RESET= 1)时,先对控制模块内的变量进行复位,然后输出RESETOUT脉冲信号,对其它模块进行复位操作。当系统开始测量脉冲信号SYSSTART来临(SYSSTART EVENT ANDSYSSTART= 1)且脉冲宽度满足条件时,控制模块先检查是否处于系统复位期间(RESET= 1),若不是,则输出测量开始脉冲信号STARTCUNCHU、当要结束正在进行的测量,开始另外一次新的测量时,需要给控制模块施加系统复位信号,然后再施加开始测量脉冲信号STARTCUNCHU,开始新一轮测量,同时送到存储模块,以使存储模块能够再次输出反馈信号FL

17、AG。这样系统只需在开始施加一次测量开始脉冲信号SARTCUNCHU,以后在无须施加,从而实现了连续不间断的测量。与普通流程图不同的是,控制模块的流程图中各个进程是并发进行的。流程图中并发性是由VHDL语言中各个进程(PROCESS)间是并行处理所引起的。这也是VHDL语言的一个特殊性。VHDL语言是一种硬件描述语言,它所描述的硬件在实际工作中同时并行工作的,为了能够反映实际硬件的工作状态,VHDL语言中引入了并行控制语句。而用这些并行控制语句所描述的流程自然有了并发性。3.1.3控制模块小结 控制模块作为系统的控制部分,实现了一般系统所需的复位,开始测量等的功能,并通过存储模块反馈的标志信号

18、实现了连续不间断的测量。3.2计数模块 计数模块是整个系统的核心模块。测量的主要工作由它来完成,它通过计数器对被测信号在基准时间内进行计数来测量。其模块图如图3-3所示:COUNTERRESET OUTENCLK TKEEP10.3CHECLK TKEEP20.3 TKEEP30.3 图3-3 计数模块的模块图3.2.1模块输入、输出 由图3-3可知,计数模块的输入模块信号有: CHECLK:为被测的信号。系统假定此输入的被测信号己经经过外加整形电路的整形、放大,符合了标准方波的输入要求。其电压幅度为0-5V. CLK:为基准时钟,与前面两个模块一样,有外加的晶振提供。 RESET:为计数脉冲

19、的输入复位信号。它来自于控制模块产生模块的输出复位信号 RESETOUT:主要用于对计数模块进行复位操作,清除计数结果,保证系统在连续不间断测量的正确性。 输出信号:TKEEP:为计数模块的测量结果输出信号。它由模块复位信号RESET复位清零,在送到存储模块后,由存储模块送显示模块显示。 OUTEN:为计数模块的输出使能信号。其主要用途是通知存储模块可以读取测量结果输出信号TKEEP上的值。只有当测量结果输出信号TKEEP上的结果正确、稳定后,计数模块才输出使能信号OUTEN (OUTEN= 1),让存储模块读取测量结果,确保了数据传输的正确。输出使能信号OUTEN由每次测量前的复位信号RES

20、ET复位清零。3.2.2模块流程 计数模块首先检测模块的输入复位信号RESET是否为高电平(RESET= 1),若是则进行模块复位操作,包括模块内变量的复位和模块输出信号的复位。若模块不是处于复位期间,则进行计数。模块内计数器定为1000进制,即每1000脉冲,用水量为1吨,脉冲的产生有赖于前置电路的处理,我们讨论的都是经过处理的数字信号。如果实际应用中不是1000个脉冲为1吨水,可以在程序中修改变量,以适合不同的应用场合。当计数模块得到测量结果并输出到模块的结果输出信号TKEEP上后,模块才输出使能信号OUTEN (OUTEN= 1)。通知存储模块可以取数。其流程如图3-4所示:3.2.3计

21、数模块小结计数模块利用计数器对被测时钟计数,从而完成测量工作。模块从控制模块接受开始RESET=1?输出原始数据模块复位输出使能信号OUTEN=1NOYES图3-4 计数模块流程图复位信号RESET,向存储模块输出结果输出信号TKEEP和OUTEN。复位信号RESET用于模块的复位操作,使能信号OUTEN在测量结果输出信号TKEEP输出后才变为高电平,以允许存储模块读取测量结果。3.3存储模块 存储模块主要是对计数模块输出的计数结果进行存储,因此存储模块是一个必要的模块。其模块图如图3-5所示:IICCONTROLCLKSTARTSTOP FLAGWREN SDA SCLRDENIIDATEI

22、N13.0IIDATEIN23.0IIDATEIN33.0图3-5 存储模块的模块图3.3.1模块输入、输出由图3-5可知,存储模块的输入信号有: IIDATAIN:为存储模块输入的测量结果信号,它来源于计数模块输出的测量结果号TKEEP 。 CLK:为存储模块输入的基准时钟,有外加的晶振提供, WREN:为存储模块写入的使能信号。它来源于计数模块的输出使能信号OUTEN,使能信号OUTEN的到来,标志着输入的测量结果信号IIDATA已准备就绪,可以对其读取。 RDEN:为存储模块的读出使能信号,它来源于计数模块输出的输出使能信号 OUTEN:主要用于控制模块内写入的数据传送到IIC器件。 S

23、TART:为存储模块输入的系统开始信号,它来源于控制模块输出的输出脉冲信号STARTCUNCHU。 STOP:为存储模块输入的系统停止信号,它来自于控制模块输出的信号STOP.输出信号有: SDA:为存储模块输出的HC总线信号,它将被送到EEPROM器件。 SCL:为存储模块输出的IIC总线信号,它将被送到EEPROM器件。 FLAG:为存储模块输出的标志信号,它标志着存储模块已经存储完毕,可以进行下一轮的存储。标志信号被送到控制模块后,将使控制模块开始新的一轮存储。3.3.2模块流程 存储模块的流程图如图3-6所示:存储模块首先检测模块的系统开始信号START是否为高电平,若是则检测写入使能

24、信号WREN,当使能信号WREN到来时,意味着模块输入的结果信号IIDATAIN上的数据已经准备就绪,模块才开始从IIDATAIN上读取数据,保证了测量结果读取的准确性。 数据读取后将储存到内部。再检测读出使能信号RDEN,当使能信号RDEN到来时,意味着数据将要送到EEPROM器件,然后模拟II总线的起始信号,开始存储4位数据的最高位,依次左移,直到4位传送完毕,然后发应答信号,然后模拟IIC总线的终止信号,停止一个字节的存储,同时开始下一字节的存储。当STOP到来时,存储模块停止工作,发出反馈信号FLAG,准备下一次的存储。开始START=1?WREN=1?数据输入RDEN=1?模拟IIC

25、起始信号发应答信号模拟总线终止信号STOP=1?存储一个字节的数据停止储存图3-6 存储模块流程图3.3.3存储模块小结 存储模块主要是对计数模块的测量结果进行存储。模块从控制接受开始信号START,模块还从计数模块接受使能信号WREN, RDEN和结果信号DATAIN,模块输出的信号SDA送到EEPROM器件存储,标志信号FLAG的输出意味存储模块已经从测量信号DATAIN上读完了数据,送到控制模块后启动新的一轮存储。3.4显示模块 显示模块主要用于测量结果的数码管显示。模块从存储模块接受测量的结果,输出共阴极数码管显示所需的控制信号。其模块图如图3-7所示: DISPLAY2DATE13.

26、0 GATE1DATE23.0 GATE2DATE33.0 GATE3SYSSTART DIGITOUT6.0 CLKDISP 图3-7显示模块模块图3.4.1模块输入、输出 由图3-7可知,显示模块的输入信号有: CLKDISP:为显示模块输入的基准时钟。与前面的模块一样,由外加的晶振所提供。 CLKDISP经分频后,生成频率为100K的时钟,主要用于数码管的循环显示。SYSRESET:为显示输入的复位信号,它来自于控制模块输出的复位脉冲信号 RESETOUT DATA:为显示模块输入的测量结果信号(二进制表示),它来自于计数模块输出的测量结果信号TKEEP。显示模块将对测量结果用数码管适时

27、显示出来。 输出信号有: GATE1-GATE3:为显示输出的各个数码管选通信号,GATE 1 为个位数码管的选通信号,GATE 2 为十位数码管的选通信号,GATE 3 为百位数码管的选通信号,也就是说最大显示数据为999。DIGITOUT:为显示模块输出的数据信号,它的信号宽度为7位,分别对应于数码管的7个显示段。信号高电平表示点亮对应的显示段,低电平表示关闭对应的显示段,从而显示正确的测量结果。3.4.2模块流程 显示模块的流程图如图3-8所示: 显示模块首先从显示模块输入的测量结果信号DATAOUT上得到的用二进制表示的测量结果转换为用BCD码表示,以便下一步用数码管显示。显示模块在显

28、示测量结果前先检测模块的复位信号SYSRST是否为高电平(SYSSTART=1 ),若是,则对整个模块进行复位操作。否则对输入的测量结果进行显示。模块首先钡l量结果的个数位(即选通位信号GATE1= 1)。模块在显示测量结果的各个数字时采用的相同的方法:即在时钟作用下,第一次根据DIGITOUT决定是否点亮数码管的第一个显示段;第二次根据DIGITOUT是否点亮数码管的第一、第二个显示段;以次类推,第七次根据DIGITOUT决定是否点亮数码管的一、二、三、四、五、六、七个显示段。从而显示整个数字。显示完个数位后,模块接着显示十位数、百位数。模块接着反过来显示个数位。从而实现测量结果的循环显示。

29、3.4.3显示模块小结 显示模块把存储模块输出的测量结果用数码管适时显示出来,模块的主要工作是生成数码管显示所需的控制信号和数据信号。从控制模块接受的输入复位信号SYSRST用于对模块进行复位操作。由外加晶振提供的基准时钟CLKDISP经分频生成频率为100K的时钟,用于数码管的循环显示。从存储模块接受的用二进制表示的测量结果信号BINPUT先被转换成用BCD码表示的形式,然后才被用于数码管显示。GATE 1 GATE3开始SYSRESET=1?开始测量结果的个位数 GATE1=1根据DIGITOUT是否点亮数码管的第一个显示段根据DIGITOUT是否点亮数码管的第一、二个显示段个位显示完毕相

30、同的方法显示十位百位二进制表示的结果信号BINPUT转化为BCD码表示 图3-8显示模块流程图为模块输出的各个数码管的选通信号,DIGITOUT为显示模块输出的数据信号。模块进行显示时,先输出GATED= 1,选通个数位数码管,则个位数数码管根据DIGITOUT进行操作。个位数数码管显示完毕后,模块输出GATE1= 1,选通十位数数码管,各位数码管进行同样的操作。接着模块输出GATE2=1,依次类推,当3个数码管都显示完毕后,模块重新从个位数数码管开始显示。就这样反复循环,不断刷新,使3个数码管看上去是同时显示。此外,显示模块实现了测量结果的实时显示,只要测量结果发生变化,则数码管的显示会相应

31、发生变化。3.5抄表器模块构成 将抄表器系统的四个模块:控制模块、计数模块、存储模块和显示模块按照其相互间的信号连接关系组合起来就构成了整个抄表器。3.5.1抄表器的输入、输出系统的输入信号有:CLK:为系统输入的基准时钟信号,它将同时作用于系统的四个分离模块CHECLK:为系统输入的被测信号,作用于计数模块的被测时钟信号CHECLK RESET:为系统输入的复位信号(高电平有效),作用于控制模块的复位信号 RESETSYSSTART:为系统输入的开始测量脉冲信号,作用于控制模块的开始测量脉冲信号SYSSTART输出信号有:GATE1 -GATE3:为系统输出的各个数码管选通信号(低电平有效)

32、,即显示模块输出信号,各个数码管选通信号GATE1 -GATE3DIGITOUT:为系统输出的数据信号,用于显示SDA:为系统输出的IIC总线信号,用于存储SCL:为系统输出的IIC总线信号,用于存储3.5.2抄表器系统说明 整个系统有四个输入信号,分别为系统基准时钟信号CLK、被测时钟信号CHECLK,系统复位信号RESET和开始测量脉冲信号SYSSTART。其中CLK为整个系统的基准时钟,整个系统的工作都是以它为基准,系统实现由外加晶振提供;CHECLK为被测的外部信号;RESET作为系统的复位信号,用于对整个系统的复位工作,一般在开始一次新的测量之前,都需对系统进行一次复位操作;SYSS

33、TART用于通知系统开始进行测量,并输出测量结果。抄表器的输出信号GATE1 -GATE3为数码管的显示控制信号,DIGITOUT为数码管的显示数据信号.系统在接受到开始测量脉冲信号SYSSTART,开始测量,计数器开始计数,当有计数到999时,计数器自动复位为0,同时往存储模块输出数据1,显示模块控制信号GATE1= I,显示个数位的数码管点亮,显示数据 1,当再有1000个脉冲时,显示2,依次进位,完成抄表器的计量功能,同时实时显示,完成抄表的功能。系统连续不间断的测量,保证测量的准确性。该系统最后通过MAX+PLUS II的仿真功能验证,能够实现预定功能。4水表抄表器程序模块的VHDL语

34、言设计 当前各ASIC芯片制造商都相继开发了用于各自目的的HDL语言,但是大多都没标准化。唯一被公认的是美国国防部开发的VHDL语言,它己成为IEEE STD 1076标准。另外,:从近期HDL语言发展动态来看,许多公司研制的硬件电路设计工具也都逐渐向VHDL语言靠拢,使得它们的硬件电路设计工具也能支持VHDL语言。Verilog公司开发的Verilog-HDL语言目前使用也比较广泛,有可能成为另一种标准的HDL语言。但是,从整体来看Verilog-HDL语言不如VHDL语言。4.1控制模块程序 由于前面己经介绍了各个模块的具体流程图,本章将不再详细介绍,直接设计VHDL的源程序。首先将介绍控

35、制模块的设计,控制模块是本设计的重点和难点,所以要做主要的介绍,下即为前面章节所定义的模块图,从图中可以清楚的看到控制模块的输入和输出信号。KONGZHIRESET RESETOUTSYSSTART STOPFLAG STARTCUNCHUBASECLK 图4-2 控制模块图4.1.1模块输入输出信号定义 RESET: INPUT系统复位信号,在系统开始测量前,一般需要输入一个高电平 SYSSTART: INPUT系统开始测量信号,在脉冲的上升沿开始触发 FLAG: INPUT存储模块反馈回来的标志信号,表示测量结果己存储完毕 BASECLK: INPUT系统时钟,由晶振电路提供,系统设计为2

36、0MHZ,为调试时方便,仿真时为1 KHZ RESETOUT: OUTPUT控制模块产生的复位信号,用于显示模块的复位 STARTCUNCHU : OUTPUT存储开始信号,主要控制存储模块的开始存储 STOP: OOUTPUT存储停止信号,控制存储模块的停止存储4. 1. 2 控制模块VHDL设计 此模块采用进程PROCESS设计。进程是一种并行语句,它与其他并行语句同时执行。VHDL编译器每遇到一个并行语句即立刻做集成动作,相反对于顺序语句,则会逐项编译,直到最后一个。进程内部的语句是顺序执行的。 下面是程序清单:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.

37、ALL;USE IEEE.STD_LOGIC_ARITH. ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY KONGZHI3 ISPORT (RESET:IN STD_LOGIC; SYSSTART:IN STD_LOGIC; FLAG:IN STD_LOGIC; BASECLK:IN STD_LOGIC; STOP:OUT STD_LOGIC; RESETOUT:OUT STD_LOGIC; STARTCUNCHU:OUT STD_LOGIC);END KONGZHI3;ARCHITECTURE BEHAV OF KONGZHI3 ISSIGNAL KR

38、ESETOUT: STD_LOGIC;SIGNAL KSTARTOUT: STD_LOGIC;BEGIN P1:PROCESS (RESET,SYSSTART,FLAG,BASECLK) BEGIN IF(BASECLK EVENT AND BASECLK=1)THEN KSTARTOUT=SYSSTART; IF(FLAG=1) THEN IF(SYSSTART=1) THEN IF(RESET=1) THEN STOP=1; ELSIF RESET=0 THEN KRESETOUT=1; END IF; END IF; END IF; END IF;END PROCESS;RESETOUT

39、=KRESETOUT;STARTCUNCHU=KSTARTOUT;END BEHAV;4.2计数模块程序4.2.1模块输入输出信号定义COUNTERRESET OUTTENCLK TKEEP13.0CHECLK TKEEP13.0 TKEEP13.0 图4-3计数模块图 计数模块的实质是一个计数器,具体的计数器的计数范围可在程序中定义,本设计假定为1000进制。上图为计数模块的模块图,模块的输入和输出信号定义如下: CHECLK: INPUT为被测的系统输入信号,为了便于仿真,输入的是由分频电路产生的频率为1HZ的周期方波信号CLK: INPUT为系统的工作时钟,同控制模块一样,频率为1KHZ

40、RESET: INPUT为计数模块的复位信号,来自于控制模块产生的输出信号RESETOUT。KEEP: OUTPUT计数模块的测量结果,它包括三个信号,TKEEP1, TKEEP2, TKEEP3分别表示个位数、十位数、百位数,用四位二进制表示,这样做的目的是为了显示的方便。从后面的显示中可以看到这样做的好处OUTEN: OUTPUT计数模块的输出使能信号,同时也是计数器的进位信号。它的作用主要用于通知存储模块读取QOUT的数值。4.2.2计数模块VHDL设计 由于计数模块的程序比较简单,是一个带有进位标志的计数器,下面是其程序清单: LIBRARY IEEE; USE IEEE.STD_LO

41、GIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COUNTER IS PORT(RESET:IN STD_LOGIC; CLK:IN STD_LOGIC; CHECLK:IN STD_LOGIC; OUTEN:OUT STD_LOGIC; TKEEP1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); TKEEP2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); TKEEP3:OUT STD_LOGIC_VECTOR(3 DOWNTO 0

42、) ); END COUNTER; ARCHITECTURE P OF COUNTER IS SIGNAL OUTEN1:STD_LOGIC; SIGNAL TCOU1:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL TCOU2:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL TCOU3:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN P1:PROCESS (RESET,CHECLK) BEGIN IF RESET=1 THEN TCOU1=0000;TCOU2=0000;TCOU3=0000;OUTEN1=0; ELS

43、IF CHECLKEVENT AND CHECLK=1 THEN IF TCOU1=1001 AND TCOU2=1001 AND TCOU3=1001 THEN TCOU1=0000;TCOU2=0000;TCOU3=1010;OUTEN1=1; ELSIF TCOU1=1010 AND TCOU2=1001 THEN TCOU1=0000;TCOU2=0000;TCOU3=TCOU3+1; ELSIF TCOU1=1001 THEN TCOU1=0000;TCOU2=TCOU2+1; ELSE TCOU1=TCOU1+1; END IF; END IF; END PROCESS;P2:PROCESS (RESET, CLK) BEGIN IF RESET=1THEN TKEEP1=0000;TKEEP2=0000;TKEEP3=0000; ELSE IF CLKEVENT AND CLK=1 THEN OUTEN=OUTEN1; TKEEP1=TCOU1; TKEEP2=TCOU2; TKEEP3=TCOU3; END IF; EN

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号