基于EMP 7128的數字式相位測量?jì)x
關(guān)鍵詞:EMP 7128SLC84-15;CPLD;相位;頻率
1 器件簡(jiǎn)介
EMP 7128SLC84-15是Altera公司的MAX7000S系列CPLD,它采用CMOS工藝,并以第二代矩陣結構為基礎,實(shí)際上也是一種基于E2PROM的器件。EMP 7128SLC84-15有84個(gè)引腳,其中5根用于ISP(In System Programmable)下載,可方便地對其進(jìn)行在系統編程。此器件內集成了6000門(mén),其中典型可用門(mén)為2500個(gè),有128個(gè)邏輯單元,60個(gè)可用I/O口,可單獨配置為輸入、輸出及雙向工作方式,2個(gè)全局時(shí)鐘及一個(gè)全局使能端和一個(gè)全局清除端。EMP 7128SLC84-15支持多電壓工作,其傳輸延時(shí)為7.5ns,最高工作頻率高達125MHz,并支持多種編程方式,同時(shí)可利用Altera公司的第三代開(kāi)發(fā)軟件Max+PlusII方便地進(jìn)行仿真、綜合和下載。
2 系統工作原理
圖1所示是一個(gè)數字式相位測量?jì)x的系統工作示意圖。圖中,輸入的比較信號b與參照信號a,經(jīng)參數相同的整形電路變換為正方波后,將兩個(gè)方波進(jìn)行異或(在CPLD中完成),同時(shí)與測得信號的頻率f(由CPLD設計一頻率計完成)再異或,然后將得到的信號經(jīng)2f倍頻,再將此信號作為閘門(mén),并在其高電平時(shí)段利用高頻時(shí)鐘fc進(jìn)行計數,最后在下降沿時(shí)將計數值讀出并設為N,則相位為:
Phase=180 N/fc
該相位測量?jì)x表系統除整形電路外,其余均可由CPLD完成。計數所使用的晶振頻率為4MHz時(shí)?此系統的分辨率為180/(4106)=(4.510-5)。
3 基于CPLD的程序設計
設計系統軟件時(shí)?運用VHDL語(yǔ)言,可將系統分為頻率計、分頻器、相位計數器3個(gè)子模塊,現對其分別進(jìn)行描述:
(1)頻率計
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity fcounter is
port(sig:in std_logic; --輸入信號
clk:in std_logic; --0.5Hz的閘門(mén)信號,可由晶振分頻得到
counter:out std_logic_vector(19 downto 0));?
--計數輸出
end;
architecture data of fcounter is
signal temp:std_logic_vector(19 downto 0);
begin
P1:process(sig)
begin
if sig'event and sig=‘1’then
if clk=‘1’ then
temp<=temp+1; --在閘門(mén)的高電平時(shí)段計數
else
temp<=“00000000000000000000”?
--在閘門(mén)的低電平時(shí)段清零
end if;
end if;
end process P1;
P2?process(clk)
begin
if clk′event and clk=′0′ then
counter<=temp;在閘門(mén)的下降沿將數據讀出
end if;
end process P2;
end;
由于閘門(mén)采用的是0.5Hz的方波,因此?輸出數值即為頻率值。
(2) 分頻模塊
通過(guò)此模塊可對頻率計得到的頻率進(jìn)行分頻,也可在異或后再分頻得到頻率為0.5Hz的矩形波。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity fen is
port(qin:in std_logic vector(19 downto 0);--連接頻率計輸出的頻率值
qout:out std_logic);
end;
architecture data of fen is
signal temp:std_logic_vector(19 downto 0);
signal a:std_logic;
begin
process(temp)
begin
if temp<qin then
temp<=temp+1;
else
temp<=“00000000000000000000”;
a<=not a;
end if;
qout<=a; ?。M(jìn)行2f倍分頻
end process;
end;
3?相位測量
該模塊將分頻模塊得到的信號作為閘門(mén),然后利用外部晶振進(jìn)行計數,其設計原理與頻率計相同。由于相異或的一個(gè)周期對應輸入的兩路方波信號的半個(gè)周期(180),而且只能測量到最大180的相位差,因此?還須判斷超前或滯后,才能測量出大于180的相位差,具體程序如下:
library ieee;
use ieee.std_logic_1164.all;
entity pre_lag is
port(s1,s2:in std_ ogic; --兩輸入信號
pre:out std_logic); --判斷結果輸出
end;
architecture data of pre_lag is
begin
lag:process(s1)
begin
if s1′event and s1=′1′ then
if s2=′0′then
pre<=′1′;?。簦螅背埃螅?輸出為
′1′,否則輸出′0′;
else
pre<=′0′;
end if;
end if;
end process lag;
end;
(4) 模塊的組合
圖3
在Max+PlusII中,采用原理圖輸入方式可將上述各模塊組合成一個(gè)軟件系統,然后將其綜合下載到CPLD即可完成相位測量?jì)x的設計,其具體設計圖見(jiàn)圖3所示。
圖3中, A、B為輸入信號a、b經(jīng)過(guò)整形得到的方波信號。Fcounter為頻率計模塊,Fen為分頻器,Phasecounter為相位測量計數器,Pre-lag為超前滯后判斷模塊。
4 結束語(yǔ)
基于CPLD邏輯器件 EMP7128SLC84-15構成的相位測量系統具有測量頻帶寬、分辨率高、誤差小、成本低、簡(jiǎn)單易行等優(yōu)點(diǎn),完全能夠滿(mǎn)足實(shí)際測量的要求。而且,由于完全采用的是CPLD設計,因此,該系統十分易于升級。
光電開(kāi)關(guān)相關(guān)文章:光電開(kāi)關(guān)原理
評論