应用8051单片机IP设计相位测量仪.pdfVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

应用8051单片机IP设计相位测量仪

摘要:本设计应用SOPC和8051单片机IP技术,设计一个高精度

的相位差测量仪。通过在FPGA中嵌入8051单片机IP来取代单片机

+FPGA方案中的实际的单片机,既节省了成本又充分利用FPGA内部

资源。

关键词:相位测量仪SOPC8051单片机IP

Abstract:ThedesignofFrequencyPhaseMeasurementSystemis

presentedbasedon8051IPCoreandFPGA.8051IPCore,whichembed

intheFPGA,toreplacetheextra8051oftheexistingMCU+FPGA

solution,savingthecostandmakefulluseofFPGAinternalresources.

KeyWords:FrequencyPhaseMeasurementSystem;SOPC;8051IP

Core

相位差测量技术发展至今已深入到电子技术、工业自动化、智能

控制及通信等众多领域。因此,设计一个高精度的相位差测量仪显得

十分重要。当前国内的一般的解决方案是单片机+FPGA方案,其中

FPGA完成高速的脉冲计数功能,而单片机则进行脉冲计数后的有关

计算和LCD显示等的控制。此方案中的FPGA内部资源往往利用不

足,造成比较大的浪费。本设计应用SOPC和8051单片机IP技术,通

过在FPGA中嵌入8051单片机IP来取代单片机+FPGA方案中的实

际的单片机。既少用一个实际的单片机又充分利用FPGA内部资源,

大大节省了硬件的成本。

18051单片机IP核简介

常见的8051单片机IP有开源免费的和工业级收费的两类,一般都

具有以下特点。

脉宽测量模块用来测量占空比待测信号的高、低电平脉宽时间,

用VHDL语言设计,由FPGA实现。单片机控制模块使用8051单片机

IP,也用FPGA实现。单片机控制模块控制脉宽测量模块进行脉宽测量,

读取脉宽测量数据,并作相应数据处理,得到相位差,通过LCD显示模

块显示相位差测量结果。晶振为FPGA中的脉宽测量模块和单片机控

制模块提供标准频率信号和时钟信号。

3脉宽测量模块设计

脉宽测量模块中关键的是要设计一个高、低电平脉宽计数控制小

模块,这小模块的作用是:在一个测量周期开始,待测脉冲TCLK的高电

平(或低电平)到来时,置32位计数器使能信号EN高电平,启动32位计

数器计数,当待测脉冲由高电平变为低电平时(或由低电平变为高电

平),置32位计数器使能信号EN低电平,停止32位计数器计数,并置测

量周期结束信号STR为高电平,直到单片机读取脉宽计数值然后复位

(置CLR为高电平),开始新的测量周期为止。尽管在停止计数期间,待

测脉冲会出现一个乃至多个高电平(或低电平)。(如图2所示)

设TCLK是占空比待测脉冲;CLR为复位信号;SEC是选择测量高

低电平信号,SEC=1,测量高电平,SEC=0,测量低电平;EN是32位计数

器使能信号;STR是一次测量周期结束信号。脉宽计数控制模块VHDL

设计如下:

AAlt;=(TCLKANDSEC)ORNOT(TCLKORSEC);

CLK1lt;=NOTAA;

CLK2_1:lcellPORTMAP(AA,CLK2_0);

CLK1_2:lcellPORTMAP(CLK2_0,CLK2);

CLK3lt;=NOTCLK2;

Q1lt;=Q10;

Q2lt;=Q20;

BBlt;=Q2amp;Q3;

LL1:PROCESS(CLK1,CLR)

BEGIN

IFCLR=amp;acute;1amp;acute;THEN

Q

文档评论(0)

156****2780 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档