应用8051单片机IP设计相位测量仪
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
应用8051单片机IP设计相位测量仪
摘要:本设计应用SOPC和8051单片机IP技术,设计一个高精度的相位差测量仪。通过在FPGA中嵌入8051单片机IP来取代单片机+FPGA方案中的实际的单片机,既节省了成本又充分利用FPGA内部资源。
关键词:相位测量仪SOPC 8051单片机IP
Abstract:The design of Frequency Phase Measurement System is presented based on 8051 IP Core and FPGA.8051 IP Core,which embed in the FPGA,to replace the extra 8051 of the existing MCU+FPGA solution,saving the cost and make full use of FPGA internal resources.
Key Words:Frequency Phase Measurement System;SOPC;8051 IP Core
相位差测量技术发展至今已深入到电子技术、工业自动化、智能控制及通信等众多领域。因此,设计一个高精度的相位差测量仪显得十分重要。当前国内的一般的解决方案是单片机+FPGA方案,其中FPGA完成高速的脉冲计数功能,而单片机则进行脉冲计数后的有关计算和LCD显示等的控制。此方案中的FPGA内部资源往往利用不足,造成比较大的浪费。本设计应用SOPC和8051单片机IP技术,通过在FPGA中嵌入8051单片机IP来取代单片机+FPGA方案中的实际的单片机。既少用一个实际的单片机又充分利用FPGA内部资源,
大大节省了硬件的成本。
1 8051单片机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 设计如下:
AA<=(TCLK AND SEC) OR NOT(TCLK OR SEC);
CLK1<=NOT AA;
CLK2_1:lcell PORT MAP(AA, CLK2_0);
CLK1_2:lcell PORT MAP(CLK2_0, CLK2);
CLK3<=NOT CLK2;
Q1<=Q10;
Q2<=Q20;
BB<=Q2&Q3;
LL1:PROCESS(CLK1,CLR)
BEGIN
Q10<=´0´;
ELSIF CLK1´EVENT AND CLK1=´1´THEN
Q10<=´1´;
END IF;
END PROCESS;
LL2:PROCESS(CLK2,CLR)
BEGIN
IF CLR=´1´THEN Q20<=´0´;
ELSIF CLK2´EVENT AND CLK2=´1´THEN Q20<=Q10;
END IF;
END PROCESS;
LL3:PROCESS(CLK3,CLR)
BEGIN
<=´0´;
ELSIF CLK3´EVENT AND CLK3=´1´THEN Q3<=Q20;
END IF;
END PROCESS;
MG :
PROCESS(BB)
BEGIN
CASE BB IS
WHEN”10”=>
EN<=´1´;
WHEN OTHERS=>
EN<=´0´;
END CASE;
CASE BB IS
WHEN”11”=>
STR<=´1´;
WHEN OTHERS =>
STR<=´0´;
END CASE;
END PROCESS;
脉宽测量模块中还有用于脉宽计数的32位计数器和计数值输出多路选择器,它们的设计这里从略。
4 单片机程序设计
本系统单片机程序总流程图如图3,其中脉宽测量子程序流程图如图4。
本相位差测量仪在以ALTERA Cyclo neII EP2C5T144为核心的