已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘 要本文设计的等精度频率计,主要硬件电路由复杂可编程逻辑(FPGA)和单片机AT89C51构成。FPGA完成各种时序逻辑控制、计数功能;单片机AT89C51作为系统的主控部件,实现整个电路的测试信号控制、数据运算处理、键盘扫描和控制数码管的显示输出。将单片机AT89C51的控制灵活性及FPGA芯片的可编程性相结合,采用十进制数字显示,实现了测量信号的频率、周期等基本功能。关键词:等精度频率计;可编程逻辑器件;VHDL;单片机AT89C51.AbstractThis paper introduces a method to design precision frequency meter based on equal precision measuring principle. The main circuit is composed of complex programmable logic (FPGA) and AT89C51. The complex programmable logic device completes sequential logic control, and the counting function. AT89C51 works as the chief controller, which controls test signals of whole circuit, proceses data, scans keyboard and controls digital to display. The system combines the flexibility of AT89C51 and programmable chip FPDA, displays with decimal figures. Keywords:Equal precision frequency meters;FPGA;VHDL;MCU目 录引 言71概 述81.1等精度频计的简介和意义81.2FPGA的简介81.2.1可编程逻辑器件FPGA的基本结构81.2.2FPGA的设计方法与要求91.2.4FPGA设计工具102 .等精度频计的原理分析112.1 等精度频计的原理113. 硬件电路设计133.1总体方案设计133.2测频模块的工作原理及设计143.2.1 FPGA测频专用模块逻辑设计143.2.2测频/测周期的实现153.2.3控制部件设计163.2.4计数部件设计163.2.5脉冲宽度测量和占空比测量模块设计163.3单片机主控模块173.3.1 AT89C51单片机性能173.3.2单片机控制电路193.4外围电路设计203.4.1键盘接口电路203.4.2显示电路204.软件设计224.1本系统FPGA模块的顶层设计224.2 FPGA模块仿真224.3单片机的汇编语言编程234.3.1单片机主程序234.3.3键盘扫描、时间值输入及计数值计算子程序245.附录256.附图457.结束语468.致 谢47参考文献48引 言在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。测量频率的方法有多种,其中电子计数器测量频率具有精度高、使用方便、测量迅速,以及便于实现测量过程自动化等优点,是频率测量的重要手段之一。数字式频率计的测量原理有两类:一是直接测频法,即在一定闸门时间内测量被测信号的脉冲个数;二是间接测频法即测周期法,如周期测频法。直接测频法适用于高频信号的频率测量,通常采用计数器、数据锁存器及控制电路实现,并通过改变计数器阀门的时间长短在达到不同的测量精度;间接测频法适用于低频信号的频率测量,本设计中使用的就是直接测频法,即用计数器在计算1S内输入信号周期的个数。数字频率计是数字电路中的一个典型应用,实际的硬件设计用到的器件较多,连线比较复杂,而且会产生比较大的延时,造成测量误差、可靠性差。随着现场可编程门阵列FPGA的广泛应用,以EDA工具作为开发手段,运用VHDL等硬件描述语言语言,将使整个系统大大简化,提高了系统的整体性能和可靠性。 采用FPGA现场可编程门阵列为控制核心,通过硬件描述语言VHDL编程,在QuartusII仿真平台上编译、仿真、调试 ,并下载到FPGA芯片上,通过严格的测试后,能够较准确地测量方波、正弦波、三角波、矩齿波等各种常用的信号的频率,而且还能对其他多种物理量进行测量。1概 述1.1 等精度频计的简介和意义频率检测是电子测量领域的最基本也是最重要的测量之一, 频率信号抗干扰强,易于传输, 可以获得较高的测量精度, 所以测频率方法的研究越来越受到重视, 本设计是基于FPGA等精度率数字频率计,采用等精度测频原理。以AT89C51单片机和Altera公司生产的可编程逻辑器件(FPGA)为核心,由信号放大整形模块,FPGA模块,单片机模块,键盘模块,数码显示模块等组成。设计中采用了模块化设计方法,并使用了EDA工具,提高了设计效率。同时,消除了对被测信号计数产生的误差,测量精度大大提高,而且达到了在整个频段的等精度测量。1.2 FPGA的简介Altera公司的FPGA器件有两类配置下载方式:主动配置方式和被动配置方式。主动配置方式由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程:而被动配置方式则由外部计算机或控制器控制配置过程。FPGA在正常工作时,它的配置数据(下载进去的逻辑信息)存储在SRAM中,由于SRAM的易失性,每次加电时,配置数据都必须重新下载。在实验系统中,通常用计算机或控制器进行调试,因此可以使用被动配置方式。在实用系统中,多数情况下必须由FPGA主动引导配置操作过程,这时FPGA将主动从外专用存储芯片中获得配置数据,而此芯片的FPGA配置是用普通编程器将设计所得的POF格式的文件烧录进去的。Altera公司提供的FPGA专用配置器件它们的特点是: 配置电流小器件正常工作时,EPC器件为零静态电流,不消耗功率。 适用于3.3/5.0V多种接囗电压工作。 支持MPU 、MCU模仿下载配置时序为FPGA配置1.2.1可编程逻辑器件FPGA的基本结构可编程逻辑器件种类较多,不同厂商生产的可编程逻辑器件的结构差别较大。可编程逻辑器件的基本结构由输入缓冲电路、与阵列、或阵列、输出缓冲电路等4部分组成。其中输入缓冲电路主要用来对输入信号进行预处理,以适应各种输入情况,例如产生输入变量的原变量和反变量;“与阵列”和“或阵列”是PLD器件的主体,能够有效地实现“积之和”形式的布尔逻辑函数;输出缓冲电路主要用来对输出信号进行处理,用户可以根据需要选择各种灵活的输出方式(组合方式、时序方式),并可将反馈信号送回输入端,以实现复杂的逻辑功能。1.2.2FPGA的设计方法与要求采用可编程逻辑器件芯片和EDA软件,在实验室里就可以完成数字系统的设计和生产。可以实现无芯片EDA公司,专业从事IP模块生产。也可以实现无生产线集成电路设计公司的运作。可以说,当今的数字系统设计已经离不开可编程逻辑器件和EDA设计工具。EDA(Electronics Design Automation)即电子设计自动化。现在数字系统设计依靠手工已经无法满足设计要求,设计工作需要在计算机上采用EDA技术完成。EDA技术以计算机硬件和系统软件为基本工作平台,采用EDA通用支撑软件和应用软件包,在计算机上帮助电子设计工程师完成电路的功能设计、逻辑设计、性能分析、时序测试直至 PCB(印刷电路板)的自动设计等。在EDA软件的支持下,设计者完成对系统功能的进行描述,由计算机软件进行处理得到设计结果。利用EDA设计工具,设计者可以预知设计结果,减少设计的盲目性,极大地提高设计的效率。用硬件描述语言进行电路与系统的设计是当前EDA技术的一个重要特征。硬件描述语言突出优点是:语言的公开可利用性;设计与工艺的无关性;宽范围的描述能力;便于组织大规模系统的设计;便于设计的复用和继承等。与原理图输入设计方法相比较,硬件描述语言更适合规模日益增大的电子系统。硬件描述语言使得设计者在比较抽象的层次上描述设计的结构和内部特征,是进行逻辑综合优化的重要工具。目前最常用的IEEE标准硬件描述语言有VHD L和Verilog-HDL。 FPGA设计不仅仅必须要达到客户和系统的基本要求,而且需要具有可读性、可重复性和可测性这三个重要的特征。1.2.3可编程逻辑器件FPGA的一般设计流程可编程逻辑器件的设计过程是利用EDA开发软件和编程工具对器件进行开发的过程。可编程逻辑器件的一般设计流程如图1.3.1所示,包括设计准备,设计输入,功能仿真,设计处理,时序仿真和器件编程及测试等七个步骤。1.2.4FPGA设计工具Altera的可编程逻辑器件设计工具随着Altera公司在推出各种可编程逻辑器件的同时也在不断升级。从早期的APLUS、MAXPLUS发展到 目前的 MAXPLUS、Quartus、Quartus。MAXPLUS 和 Quartus 具有可视化的设计环境,具有工业标准 EDA工具接口,可以运行在多种操作平台上。MAX PLUS和Quartus 提供了一种与结构无关的设计环境,设计人员不需要精通器件的内部结构,只需要运用自己熟悉的输入工具(如原理图输入或高级行为描述语言)进行设计,利用 MAX PLUS和 Quartus可以将这些设计转换为最终结构所需要的格式。有关结构的详细知识已装入开发工具软件,设计人员无须手工优化自己的设计,因此设计速度非常快。目前使用最广的是Quartus,Quartus是Altera的新一代设计开发软件,支持APEX20K、APEX、Excalibur、Mercury以及Stratix等新器件系列。Quartus软件加强了网络功能,它具有最新的Internet技术,设计人员可以直接通过Internet获得 Altera的技术支持。 Quartus的安装需要的PC机系统配置:奔腾或更好的PC机,256 MB以上的有效内存,不低于 128 MB的物理内存,1.5 GB以上的硬盘空间,Windows 98、Windows 2000或Windows NT 3.51、Windows NT 4.0操作系统,17英寸显示器。2 .等精度频计的原理分析2.1等精度频计的原理传统的测频原理是在一定的时间间隔内测某个周期信号的重复变化次数N,其频率可表示为f=N/T,其原理框图见图2-1。这种测量方式的精度随被测信号频率的变化而变化。图2-1传统测频原理框图测频原理电路图如图2-2所示。如图2-2当方波预置门控信号由低变为高电平时,经整形后的被测信号上升一沿启动D触发器,由D触发器的R端同时启动可控计数器CNT1和CNT2同时计数,当预置门为低电平时,随后而至的被测信号使可控计数器同时关闭。设FX为整形后的被测信号,FS为基准频率信号,若在一次预置门高电平脉宽时间内被测信号计数值为Nx,基准频率计数值为Ns,则有: FX= (FS/Ns) Nx2.2系统设计指标基于传统测频原理的频率计的测量精度将随被测信号频率的改变而改变,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个测频区域内保持恒定的测试精度。本系统设计的基本指标如下:(1)频率测量a测量信号:方波;频率:1Hz9999Hz b测量误差0.017%(2)显示器十进制数字显示,显示刷新时间13秒连续可调,对上述测量功能用8位7段数码管显示。(3)具有清零功能,时标信号频率为:60000HZ3. 硬件电路设计3.1总体方案设计等精度数字频率计涉及到的计算包括加、减、乘、除,耗用的资源比较大,用一般中小规模CPLD/FPGA芯片难以实现。因此,我们选择单片机和CPLD/FPGA的结合来实现。电路系统原理框图如图2-1所示,其中单片机完成整个测量电路的测试控制、数据处理和显示输出;CPLD/FPGA完成各种测试功能:键盘控制命令通过一片74LS165并入串出移位寄存器读入单片机,实现测频、测宽及脉测占空比等功能,单片机从CPLD/FPGA读回计数数据并进行运算,向显示电路输出测量结果:显示器电路采用七段LED动态显示,由8个芯片74LS164分别驱动数码管。等精度频率计的主系统如图所示,主要由以下几个部分组成:(1)信号整形电路。用于对待测信号进行放大和整形,以便作为PLD器件的输入信号。(2)测频电路。是测频的核心电路模块,可以由FPDA等PLD器件但当。(3)100MHZ的标准频率信号源直接进入FPDA。(4)单片机电路模块。用于控制FPDA的测频操作和读取测量数据,并做相应数据处理。安排单片机的P0口直接读取测量数据,P2口向FPDA发控制命令。(5)键盘模块。可以用五个键执行测量控制,一个是复位键,其余是命令键。(6)数码显示模块。可以用七个数码显示管显示测量结果,最高可表示百万分之一的精度。考虑提高单片机IO口的利用率,降低编程复杂性,提高单片机的计算机速度以及降低数码管显示器对主系统的干扰,可以采用串行静态显示方式。系统的基本工作方式如下:(1) PO口是单片机与FPGA的数据传送通信口,P1口用于键盘扫描,实现各测试功能的转换;P2口为双向控制口。P3口为LED的串行显示控制口。系统设置5个功能键:占空比、脉宽、周期、频率和复位。(2)显示电路由8个数码管组成:7个LED数码管组成测量数据显示器,另一个独立的数码管用于状态显示。(3)测频标准频率50MHz信号由晶体振荡源电路提供。(4)待测信号经放大整形后输入CPLD/FPGA的TCLK。3.2测频模块的工作原理及设计3.2.1 FPGA测频专用模块逻辑设计利用VHDL设计的测频模块逻辑结构如图3-3所示:其中有关的接口信号规定如下:(1) TF(P2.7):TF=0时等精度测频;TF=1时测脉宽。(2) CLR/TRIG (P2. 6):当TF=0时系统全清零功能;当TF=1时CLRTRIG的上跳沿将启动CNT2,进行脉宽测试计数。(3) ENDD (P2. 4):脉宽计数结束状态信号,ENDD=1计数结束。(4) CHOICE (P3. 2):自校/测频选择,CHOICE=1测频;CHOICE=0自校。(5) START (P2. 5):当TF=0时,作为预置门闸,门宽可通过键盘由单片机控制,START=1时预置门开;当TF=1时,START有第二功能,此时,当START=0时测负脉宽,当START=1时测正脉宽。利用此功能可分别获得脉宽和占空比数据。(6) FEND (P2. 3):等精度测频计数结束状态信号,EEND=0时计数结束。(7) SEL2. 0(P2. 2, P2. 1, P2. 0):计数值读出选通控制。图3-3 CPLD测频专用模块框图3.2.2测频/测周期的实现(1)令TF=0,选择等精度测频,然后在CONTRL的CLR端加一正脉冲信号以完成测试电路状态的初始化。(2)由预置门控信号将CONTRL的START端置高电平,预置门开始定时,此时由被测信号的上沿打开计数器CNT1进行计数,同时使标准频率信号进入计数器CNT2。(3)预置门定时结束信号把CONTRL的START端置为低电平(由单片机来完成),在被测信号的下一个脉冲的上沿到来时,CNT1停止计数,同时关断CNT2对fs的计数。(4)计数结束后,CONTRL的EEND端将输出低电平来指示测量计数结束,单片机得到此信号后,即可利用ADRC (P2. 2) , ADRB (P2. 1) , ADRA (P2. 0)分别读回CNTI和CNT2的计数值,并根据等精度测量公式进行运算,计算出被测信号的频率或周期值。3.2.3控制部件设计如图3-4所示,当D触发器的输入端START为高电平时,若FIN端来一个上升沿,则Q端变为高电平,导通FINCLK1和FSDCLK2,同时EEND被置为高电平作为标志;当D触发器的输入端START为低电平时,若FIN端输入一个脉冲上沿,则FINCLK1与FSDCLK2的信号通道被切断。图3-4测频与测周期控制部分电路3.2.4计数部件设计 图3-3中的计数器CNT1/CNT2是32位二进制计数器,通过DSEL模块的控制,单片机可分4次将其32位数据全部读出。3.2.5脉冲宽度测量和占空比测量模块设计根据上述脉宽测量原理,设计如图3-5(CONTRL2)所示的电路原理示意图。图3-5 CONTRL2子模块内部结构测量脉冲宽度的工作步骤如下:(1)向CONTRL2的CLR端送一个脉冲以便进行电路的工作状态初始化。(2)将GATE的CNL端置高电平,表示开始脉冲宽度测量,这时CNT2的输入信号为FSD。(3)在被测脉冲的上沿到来时,CONTRL2的PUL端输出高电平,标准频率信号进入计数器CNT2。(4)在被测脉冲的下沿到来时,CONTRL2的PUL端输出低电平,计数器CNT2被关断。(5)由单片机读出计数器CNT2的结果,并通过上述测量原理公式计算出脉冲宽度。CONTRL2子模块的主要特点是:电路的设计保证了只有CONTRL2被初始化后才能工作,否则PUL输出始终为零。只有在先检测到上沿后PUL才为高电平,然后在检测到下沿时,PUL输出为低电平;ENDD输出高电平以便通知单片机测量计数已经结束;如果先检测到下沿,PUL并无变化;在检测到上沿并紧接一个下沿后,CONTRL2不再发生变化直到下一个初始化信号到来。占空比的测量方法是通过测量脉冲宽度记录CNT2的计数值Nl,然后将输入信号反相,再测量脉冲宽度,测得CNT2计数值N2则可以计算出:3.3单片机主控模块3.3.1 AT89C51单片机性能其引脚如图3-6: 图3-6 AT89C51的引脚图AT89C51是一个内含4K字节可编程可擦除的快闪存储器(Flash Memory)和128个字节RAM。低电压,高性能CMOS结构的8位单片机。采用ATN工EL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和快闪存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。(1) AT89C51的主要特性如下: 与MCS-51兼容 .4K字节可编程快闪存储器 .寿命:1000次写/擦 .数据保留时间:十年 .128*8位内部RAM .32可编程I/0线 .两个16位定时器/计数器 .五个中断源 .可编程串行通道 .低功耗的闲置和掉电模式 .片内振荡器和时钟电路(2)其管脚的具体说明如下: P0口:P0口为一个8位漏级开路双向工I/0口,每个引脚可驱动8个TTL门。当P1口的管脚输入数据时,应先把口置1。作为外部地址/数据总线使用时,用于传送8位数据和低8位地址。在快闪编程时,P0口输入,当快闪进行校验时,P0口输出,此时P0外部必须被拉至高电平。 P1口:P1口是一个内部提供上拉电阻的8位双向I/0口,P1口缓冲器能驱动4个TTL门。P1口管脚写入I后,被内部上拉为高,可用作输入。 P2口:P2口是一个内部提供上拉电阻的8位双向I/0口,P2口缓冲器可驱动4个TTL门,当P2口被写1时,其管脚被内部上拉电阻拉高,作为输入。P2口当用作外部程序存储器或外部数据存储器进行存取时,P2口输出16位地址的高八位。 P3口:P3口管脚是八个带内部上拉电阻的双向I/0口,可驱动4个TTL门。当P3口写入1后,被内部上拉为高电平,并用作输入。P3口也可作为AT89C51的一些特殊功能口,如下表所示:管脚备选功能P3. 0 RXD(串行输入口)P3. I TYD(串行输出口)P3.2 /INTO(外部中断0)P3.3 /INTI(外部中断I)P3. 4 TO(计时器0外部输入)P3. 4 TI计时器1外部输入)P3. 6/WR(外部数据存储器写选通)P3. 7 /RD(外部数据存储器读选通)P3口同时为快闪编程和编程校验接收一些控制信号。3.3.2单片机控制电路单片机测频控制电路如图3-7所示,由单片机完成整个测量电路的测试控制、数据处理和显示输出,CPLD完成各种测试功能。图3-7单片机测频控制电路(1)由于CPLD在对频率进行计数时,采用32位二进制计数器,8位数据总线的单片机分四次将32位数据全部读出。利用AT89C51的PO口读计数器COUNT输出B 7. .0标准频率信号的值,P2口读计数器COUNT输出B15. 8)被测信号的值。被读出的四组8位数据通过AT89C51的SSO, SS1地址编码选择。由P1口输出控制。(2) CS:由单片机的P1. 0口控制。CS=0时,等精度测频;CS=1时,测脉宽。(3) CLR:系统全清零功能。(4) ED2:脉宽计数结束状态信号,ED2=1计数结束。(5) AS:自校和测频选择。AS= 1测频,AS=0自校。(6) STROBE:为预置门闸,门宽可通过键盘由单片机控制,STROBE=1时,预置门打开:STROBE=0时,预置门关闭。(7) ED l:测频计数结束状态信号,ED1=0时计数结束。(8) SSO, SSI:计数位读出选通控制。若令SS= SS 1, SSO,则当SS=0. 1, 2, 3时可从PO口和P2口由低8位至高8位分别读出两组4个8位计数值(9) FS为标准频率信号输入,此频率来源于501l-Iz的有源晶振。(10) FX为被测信号输入,此信号是经过限幅整形电路后的信号。(11) FC为自校频率,取自单片机的外接晶振。3.4外围电路设计3.4.1键盘接口电路 键盘接口电路如图3-8所示。键盘控制命令由并入串出移位寄存器74LS165读入。当某一键盘按下时,该线为低电平,在单片机主程序中置P3. 2为0,将键值置入,然后再将P3. 2与P3. 5口置 1,将键盘值读入单片机,从而实现对键盘动态扫描,实时将键盘命令交单片机处理。图3-8键盘接口电路3.4.2显示电路 图3-9中,AT89C51以串行通信方式0,即同步移位寄存器方式通过P3. 0, P3. 1实现显示码传送,8个共阳极数码管由8片串入并出74LS164驱动,由于74LS164芯片输出低电平时具有8MA的灌电流能力,在静态显示方式下足以保证显示亮度。因为74LS164输出没有锁存功能,因此,在传送信号时输出端数码怜会有瞬间闪烁,但由于系统采用12MHz晶振。传送波特率高达1M,且一次发送数据很少,故闪烁并不明显。P3. 4用于键盘和显示电路的切换选通。另外,由于键盘和显示电路共享单片机的串行口,在每次显示前,程序必须将P3. 2置0,将74LS165的输出置1,才能保证P3. 0口正确传送显示数据。 图3-9显示电路4.软件设计4.1本系统FPGA模块的顶层设计在本测频系统中,对标准频率信号和被测信号进行测试功能的工作由FPDA来完成。其硬件电路的实现在前面已述,其软件部分由VHDL语言实现。下面将给出由VHDL语言实现的顶层模块程序。频率计测试模块DJDPLJ. VHD见附录。4.2 FPGA模块仿真 对以上各功能模块分别编译后,其频率/周期测量仿真图结果如下图4-4所示:(以下所有的仿真波形图的标准频率为FS=50MHz)图4-4频率调期侧盈仿真图脉宽/占空比测量仿真图结果如下图4-5所示:图4-5脉宽/占空比测量仿寡图4.3单片机的汇编语言编程4.3.1单片机主程序 图4-6表示单片机主程序流程图。系统初始化后,主程序不断扫描键盘子程序,当某键按下时,程序跳转到相应的子程序执行其功能,然后返回继续执行键盘扫描程序。程序见附录v开始初始化键盘扫描测频键测T键测D键脉宽键调用测F子程序调用测T子程序调用测D子程序调用测脉宽子程序4.3.2测频、测周期、测脉宽及测占空比子程序 当键盘子程序扫描到测频键按下时,读入键值后跳转到测频子程序。测频子程序先置测频控制位CLR (P1. 6) . AS (P1. 4),将CPLD内的计数器清零,选择测量被测信号。并将CS (P1. 3)置零,即为选择测频。然后通过键盘将预置门的时间值读入单片机,打开预置门进行测频计数,等预置门时间到后,关断预置门,CPLD关断预置门后将给单片机一个结束信号,单片机读到结束信号后,通过置SS1, SS田的四个编码状态,分四次将测频结果的32位数据读入单片机,计算后将结果转换为BCD码送LED显示输出。测频子程序见附录。 测周期时只要将计算结果由频率值取倒数转换为周期值即可。自校子程序与测频子程序相同。脉宽测量子程序与周期测量子程序基本一致,脉宽测量是将被测信号的脉宽作为闸门信号对标准频率进行计数。占空比子程序是分别测出高低电平的脉宽计数值Nl, N2,由公式:占空比=Nl/ (Nl+N2)100%算出。具体程序见附录。4.3.3键盘扫描、时间值输入及计数值计算子程序 该程序采用查询方式。程序开始后,先在LED上给出CPUREADY的提示字,然后进入键盘扫描方式。单片机通过74LS165不断查询键盘。当有键输入时,将键值读入到预存单元.用软件延时10mS消抖,再读键值,和原键值进行比较,若和原值不相同,重新扫描键盘,若相同,则跳转到相应入口执行子程序。 键盘设有三个时间值键,分别为0.1S, 1 s和l0S,来控制预置门的开关时间。在执行功能子程序之前会提示先输入时间值(在LED上显示ENTER-SJ)。其程序执行过程与键盘扫描子程序相同。单片机读入测频计数结果后,还要根据等精度测频原理进行计算,才能得到最终的测量结果。这部分计算主要包括:四字节数乘法子程序;八字节数除以四字节数除法子程序;二进制转换BCD码子程序。具体程序见附5.附录频率计测试模块DJDPLJ. VHDLIBRARY IEEE;USE IEEE.STD-LOGIC-1164.ALL;USE IEEE.STD-LOGIC-UNSIGNED.ALL;ENTITY DJDPLJ IS PORT(CHEKF, FINPUT, CHOICE: IN STD_ LOGIC; START, CLRTRIQ FSTD, TF: IN STD少OGIC;SEL: IN STD-LOGIC-VECTOR(2 DOWNTO 0); OO: OUT STD-LOGIC_ VECTOR(7 DOWNTO 0); EEND: OUT STD_ LOGIC;-CPBZ ENDD: OUT STD_ LOGIC);END ENTITY DJDPLJ;ARCHITECTURE ART OF DJDPLJ IS COMPONENT FIN IS PORT(CHKF, FIN, CHOIS: IN STD-LOGIC; FOUT: OUT STD_ LOGIC);END COMPONENT FIN; COMPONENT CONTRL IS PORT(FIN, START, CLR, FSD: IN STD-LOGIC; CLK1, EEND, CLK2, CLRC: OUT STD LOGIC); END COMPONENT CONTRL; COMPONENT CNT IS PORT(CLK, CLR: IN STD_ LOGIC; Q: OUT STD-LOGIC_ VECTOR(31 DOWNTO 0);END COMPONENT CNT; COMPONENT CONTRL2 IS PORT(FIN, START, CLR: IN STD_ LOGIC; ENDD, PUL: OUT STD_ LOGIC); END COMPONENT CONTRL2; COMPONENT GATE IS PORT(CLK2, FSD, CNL, PUL: IN STDwe LOGIC; CLKOUT: OUT STD_ LOGIC);END COMPONENT GATE; SIGNAL INCLK: STD-LOGIC; SIGNAL FOUT, CLRC: STD-LOGIC; SIGNAL CLKI, CLK2, CLKOUT, PUL: STD一 LOGIC; SIGNAL Q I, Q2: STD_ LOGIC_ VECTOR(31 DOWNTO 0); BEGIN 00=Q1(7 DOWNTO 0) WHEN SEL=000 ELSE Q1(15 DOWNTO 8) WHEN SEL=001”ELSE Q1(23 DOWNTO 16) WHEN SEL=010 ELSEQ1(31 DOWNT024) WHEN SEL=011 ELSE Q2(7 DOWNTO 0) WHEN SEL=100 ELSE Q2(15 DOWNTO 8) WHEN SEL=101 ELSE Q2(23 DOWNTO 16) WHEN SEL=110 ELSE Q2(31 DOWNTO 24) WHEN SEL=111”ELSE 00000000; FENPIN: PROCESS(FSTD) IS BEGIN IF FSTDEVENTAND FSTD=JTHEN INCLKCHEKF,FIN=FINPUT,CHOIS=CHOICE,FOUT=FOUT);CON:CONTRLPORTMAP(FIN=FOUT,START=START,CLR=CLRTRIQ,FSD=INCLK,CLK 1=CLK 1,EEND=EEND, CLK2=CLK2, CLRC=CLRC); CONT1:CNT PORT MAP(CLK=CLK1,CLR=CLRC, Q=Q 1);CONT2: CNT PORT MAP(CLK=CLKOUT, CLR=CLRC, Q=Q2); CON2:CONTRL2 PORT MAP(FIN=FOUT, START=START, CLR=CLRC, PUL=PUL, ENDD=ENDD); GATE1: GATE PORT MAP(CLK2=CLK2, FSD=INCLK, CNL=TF, PUL=PUL, CLKOUT=CLKOUT);END ARCHITECTURE ART;各子功能模块设计 一计数模块CNT.VHD:LIBRARY IEEE;USE IEEE.STD_ LOGIC_1164.ALL;USE IEEE.STD_ LOGIC_UNSIGNED.ALL;ENTITY CNT IS PORT(CLK, CLR: IN STD LOGIC; Q: OUT STD LOGIC VECTOR(31 DOWNTO 0);END ENTITY CNT;ARCHITECTURE ART OF CNT ISSIGNAL CNT: STDes LOGIqVECTOR(31 DOWNTO 0); BEGIN PROCESS(CLK, CLR) IS BEGIN IF CLR=1THEN CNT=00000000000000000000000000000000; ELSIF CLKEVENTAND CLK=1THEN CNT=CNT+1; END IF; END PROCESS; Q=CNT;END ARCHITECTURE ART; 一测频、周期控制模块CONTRL.VHDLIBRARY IEEE;USE IEEE.STD一 LOGIC_1164.ALL;ENTITY CONTRL IS PORT(FIN, STAR几CLR, FSD: IN STD- LOGIC; CLK1, EEND, CLK2, CLRC: OUT STD_ LOGIC);END ENTITY CONTRL;ARCHITECTURE ART OF CONTRL IS SIGNAL QQ1:STDee LOGIC; BEGIN PROCESS(FIN, CLR, START) ISBEGIN IF CLR=1 THEN QQ1=0; ELSIF FINEVENTAND FIN=I THEN QQ1=START; END IF; END PROCESS; CLRC=CLR; FEND=QQ 1; CLK 1 =FIN AND QQ I; CLK2=FSDAND QQ1;END ARCHITECTURE ART; 一测脉宽、占空比控制模块CONTRL2.VHDLIBRARY IEEE;USE IEEE.STD_ LOGIC_ 1164.ALL;USE IEEE.STD_ LOGIC_ UNSIGNED.ALL;ENTITY CONTRL2 IS PORT (FIN, START, CLR: IN STD_ LOGIC; ENDD, PUL: OUT STD一OGIC);END ENTITY CONTRL2;ARCHITECTURE ART OFCCONTRL2 IS SIGNAL QQ: STD_ LOGIC_ VECTOR(3 DOWNTO 1); SIGNAL A0, B0, C0, F2: STD_ L OGIC; SIGNAL S: STD_ L OGIC_ VECTOR(1 DOWNTO 0);BEGIN S(O)=QQ(3); S(1)=QQ(2); PROCESS(START, S) IS BEGIN IF START=1 THEN F2=FIN; ELSE F2=NOT FIN; END IF; IF S=2 THEN PUL=1; ELSE PUL= 0; END 1F; IF S=3 THEN ENDD=1; ELSE ENDD= 0;END IF; END PROCESS; AO=F2 AND QQ(1); BO=NOT A0; CO=NOT F2; PROCESS(C0, CLR) IS BEGIN IF CLR=1THEN QQ(I)=0 ; ELSIF COEVENTAND C0=1 I THEN QQ(1)=1; END IF; END PROCESS;PROCESS(A0, CLR) IS BEGIN IF CLR=1 THEN QQ(2)=0; ELSIF AOEVENT AND A0=1THEN QQ(2)= I ; END IF; END PROCESS; PROCESS(B0, CLR) IS BEGIN IF CLR-I THEN QQ(3)=0 ; ELSIF BOEVENTAND B0-1 THEN QQ(3)=1; END IF; END PROCESS;END ARCHITECTURE ART; 一自校顺四试频率选择模块FIN.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_ 1164.ALL;ENTITY FIN IS PORT (CHKF, FIN, CHOIS: IN STD LOGIC; FOUT: OUT STD LOGIC);END ENTITY FIN;ARCHITECTURE RTL OF FIN IS BEGIN FOUT=(FIN AND CHOIS) OR (CHKF AND NOT CHOIS);END ARCHITECTURE RTL; 一计数器二频率切换模块GATE.VHDLIBRARY IEEE;USE IEEE.STD_ LOGIC_ I 164.ALL;ENTITY GATE IS PORT (CLK2, FSD, CNL, PUL: IN STD_ LOGIC; CLKOUT: OUT STDes LOGIC);END ENTITY GATE;ARCHITECTURE ART OF GATE IS BEGIN PROCESS(CLK2, PUL, FSD, CNL) ISBEGIN IF CNL=0 THEN CLKOUT=CLK2; ELSE CLKOUT=PUL AND FSD; END IF; END PROCESS;END ARCHITECTURE ART;主程序如下:LED8 EQU 7FHLED7 EQU 7EHLED6 EQU 7DHLED5 EQU 7CHLED4 EQU 7BHLED3 EQU 7AHLED2 EQU 79HLED1 EQU 78HTF BIT P2.7CLRTRIG BIT P2.6START BIT P2.5ENDD BIT P2.4EEND BIT P2.3ADRC BIT P2.2ADRB BIT P2.1ADRA BIT P2.0CHOICE BIT P3.2SBI BIT P1.0 SB2 BIT Pl. 1SB3 BIT Pl.2SB4 BIT Pl.3SB5 BIT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年广东省兴宁市高二生物下册期末考试考试卷及完整答案(夺冠)
- 2026年吉林省洮南市高二生物下册期末考试测试卷(有一套)附答案
- 2026年云南省宣威市高二生物下册期末考试检测卷带答案(基础题)
- 2026年湖南省醴陵市高二生物下册期末考试试卷附完整答案(考点梳理)
- 2026年贵州省仁怀市高二生物下册期末考试试卷及答案(各地真题)
- 2026年海南省万宁市高二生物下册期末考试测试卷附参考答案(预热题)
- 2025年吉林省舒兰市高二生物下册期末考试考试卷及参考答案【研优卷】
- 2026年安徽省桐城市高二生物下册期末考试模拟卷含答案(B卷)
- 2025年江苏省邳州市高二生物下册期末考试考试卷及完整答案1套
- 2025年黑龙江省同江市高二生物下册期末考试检测卷附答案【综合卷】
- 煤矿安全生产标准化建设管理图册
- 2025年示范区乡村医生乡聘村用招聘考试笔试试题(含答案)
- 2025年增强热塑性塑料管(RTP)行业分析报告及未来发展趋势预测
- 渠道混凝土面板施工技术交底
- 2025及未来5年中国女式西装套装市场调查、数据监测研究报告
- 肝切除麻醉专家共识课件
- (正式版)DB36∕T 2169-2025 《公路工程固化土应用技术规范》
- 中建八局营销体系课件
- 境外保密管理暂行办法
- 2025年生物医学工程课程考试试题及答案
- 青年教师课题申报辅导计划
评论
0/150
提交评论