您好,欢迎访问三七文档
电子系统设计实践电子系统设计实践www.plcworld.cnKKX康芯科技12.1等精度频率计设计在此完成的设计项目可达到的指标为:(1)频率测试功能:测频范围0.1Hz~100MHz。测频精度:测频全域相对误差恒为百万分之一。(2)脉宽测试功能:测试范围0.1μs~1s,测试精度0.01μs。(3)占空比测试功能:测试精度1%~99%。www.plcworld.cnKKX康芯科技12.1等精度频率计设计12.1.1主系统组成图12-1频率计主系统电路组成www.plcworld.cnKKX康芯科技12.1等精度频率计设计12.1.2测频原理图12-2等精度频率计主控结构www.plcworld.cnKKX康芯科技设在一次预置门时间Tpr中对被测信号计数值为Nx,对标准频率信号的计数值为Ns,则下式成立:NsFsNxFx//=12-1不难得到测得的频率为:NxNsFsFx⋅=)/(12-2图12-3频率计测控时序www.plcworld.cnKKX康芯科技12.1.3FPGA/CPLD开发的VHDL设计占空比=12-3%100211×+NNN【例12-1】LIBRARYIEEE;--等精度频率计USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYGWDVPBISPORT(BCLK:INSTD_LOGIC;--CLOCK1标准频率时钟信号TCLK:INSTD_LOGIC;--待测频率时钟信号CLR:INSTD_LOGIC;--清零和初始化信号CL:INSTD_LOGIC;--预置门控制SPUL:INSTD_LOGIC;--测频或测脉宽控制START:OUTSTD_LOGIC;EEND:OUTSTD_LOGIC;--由低电平变到高电平时指示脉宽计数结束SEL:INSTD_LOGIC_VECTOR(2DOWNTO0);--多路选择控制DATA:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--位数据读出ENDGWDVPB;接下页www.plcworld.cnKKX康芯科技ARCHITECTUREbehavOFGWDVPBISSIGNALBZQ,TSQ:STD_LOGIC_VECTOR(31DOWNTO0);--标准计数器/测频计数器SIGNALENA,PUL:STD_LOGIC;--计数使能/脉宽计数使能SIGNALMA,CLK1,CLK2,CLK3:STD_LOGIC;SIGNALQ1,Q2,Q3,BENA:STD_LOGIC;SIGNALSS:STD_LOGIC_VECTOR(1DOWNTO0);BEGINSTART=ENA;DATA=BZQ(7DOWNTO0)WHENSEL=000ELSE--标准频率计数低8位输出BZQ(15DOWNTO8)WHENSEL=001ELSEBZQ(23DOWNTO16)WHENSEL=010ELSEBZQ(31DOWNTO24)WHENSEL=011ELSE--标准频率计数最高8位输出TSQ(7DOWNTO0)WHENSEL=100ELSE--待测频率计数值最低8位输出TSQ(15DOWNTO8)WHENSEL=101ELSETSQ(23DOWNTO16)WHENSEL=110ELSETSQ(31DOWNTO24)WHENSEL=111ELSE--待测频率计数值最高8位输出TSQ(31DOWNTO24);BZH:PROCESS(BCLK,CLR)--标准频率测试计数器,标准计数器BEGINIFCLR='1'THENBZQ=(OTHERS='0');ELSIFBCLK'EVENTANDBCLK='1'THENIFBENA='1'THENBZQ=BZQ+1;ENDIF;ENDIF;ENDPROCESS;TF:PROCESS(TCLK,CLR,ENA)--待测频率计数器,测频计数器接下页www.plcworld.cnKKX康芯科技BEGINIFCLR='1'THENTSQ=(OTHERS='0');ELSIFTCLK'EVENTANDTCLK='1'THENIFENA='1'THENTSQ=TSQ+1;ENDIF;ENDIF;ENDPROCESS;PROCESS(TCLK,CLR)--计数控制使能,CL为预置门控信号,同时兼作正负脉宽测试控制信号BEGINIFCLR='1'THENENA='0';ELSIFTCLK'EVENTANDTCLK='1'THENENA=CL;ENDIF;ENDPROCESS;MA=(TCLKANDCL)ORNOT(TCLKORCL);--测脉宽逻辑CLK1=NOTMA;CLK2=MAANDQ1;CLK3=NOTCLK2;SS=Q2&Q3;DD1:PROCESS(CLK1,CLR)BEGINIFCLR='1'THENQ1='0';ELSIFCLK1'EVENTANDCLK1='1'THENQ1='1';ENDIF;ENDPROCESS;DD2:PROCESS(CLK2,CLR)BEGINIFCLR='1'THENQ2='0';ELSIFCLK2'EVENTANDCLK2='1'THENQ2='1';ENDIF;ENDPROCESS;接下页www.plcworld.cnKKX康芯科技DD3:PROCESS(CLK3,CLR)BEGINIFCLR='1'THENQ3='0';ELSIFCLK3'EVENTANDCLK3='1'THENQ3='1';ENDIF;ENDPROCESS;PUL='1'WHENSS=10ELSE--当SS=10时,PUL高电平,允许标准计数器计数,'0';--禁止计数EEND='1'WHENSS=11ELSE--EEND为低电平时,表示正在计数,由低电平变到高电平'0';--时,表示计数结束,可以从标准计数器中读数据了BENA=ENAWHENSPUL='1'ELSE--标准计数器时钟使能控制信号,当SPUL为1时,测频率PULWHENSPUL='0'ELSE--当SPUL为0时,测脉宽和占空比PUL;ENDbehav;在使用单片机统调前,应该直接对下载了例12-1程序的FPGA进行测试,如果使用附录的EDA系统,建议用实验电路NO.5,六个键分别控制SPUL、CL、CLR和SEL;BCLK输入50MHz频率,TCLK接CLOCK1(5或9等);用两个数码管显示8位输出DATA[7..0]。www.plcworld.cnKKX康芯科技CDQCDQCDQCDQDATA()START()SPULEEND=‘0’EEND=‘1’则,否则Q2=‘1’Q3=‘1’当,PUL=‘0’PUL=‘1’则,否则Q2=‘1’Q3=‘0’当,SS1的逻辑功能为:21选多路选择器FPGA‘1’SPUL()ENABENA‘0’MUX21‘1’EEND()PLENDSS1Q3Q2SEL()CLR()TCLK()CL()BCLK()8DATASEL3323264-8多路选择器TSQ32位待测频率计数器ENATCLKTFCLRBENABCLKBZHBZQ32位标准频率计数器CLR例12-1的原理图带括号的信号为端口信号等精度测频率专用芯片www.plcworld.cnKKX康芯科技12.2高速A/D采样控制设计图12-4TLC5510引脚图引脚功能如下:clk:时钟信号输入。AnalogIn:模拟信号输入。D1~D8:转换数据输出。Reft、Refb、Refts、Refbs:参考电压基准输入。OE:输出使能,低电平有效。DGND、VDDD:数字地、数字电源端。AGND、VDDA:模拟地、模拟电源端。www.plcworld.cnKKX康芯科技12.2高速A/D采样控制设计图12-5TLC5510采样时序图www.plcworld.cnKKX康芯科技12.2高速A/D采样控制设计图12-6TLC5510采样控制状态图St1St0ADck='1';lock='1';dclk='0';ADck='0';lock='0';dclk='1';Adck:提供A/D采样时钟。Adoe:TLC5510的输出使能,一直有效。Data:采样数据输出。Dclk:用来同步Data的输出,可以作为下一级的Data锁存信号。图12-7TLC5510采样控制器模块图www.plcworld.cnKKX康芯科技【例12-2】--TLC5510采样控制。libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;entityad5510isport(rst:instd_logic;--复位clk:instd_logic;--采样控制Clock输入d:instd_logic_vector(7downto0);--8位A/D数据ADck:outstd_logic;--TLC5510的CLKADoe:outstd_logic;--TLC5510的OEdata:outstd_logic_vector(7downto0);--8位数据dclk:outstd_logic);--数据输出锁存信号endad5510;architectureADCTRLofad5510istypeadsstatesis(sta0,sta1);signalads_state,next_ads_state:adsstates;signallock:std_logic;beginads:PROCESS(ads_state)--A/D采样控制状态机BEGINCASEads_stateISWHENsta0=ADck='1';lock='1';dclk='0';next_ads_state=sta1;WHENsta1=ADck=‘0’;lock=‘0’;dclk=‘1’;接下页www.plcworld.cnKKX康芯科技next_ads_state=sta0;WHENOTHERS=ADck='0';lock='0';dclk='1';next_ads_state=sta0;ENDCASE;ENDPROCESS;PROCESS(CLK,rst)BEGINIFRST='0'THENads_state=sta0;ELSIF(CLK'EVENTANDCLK='1')THENads_state=next_ads_state;--在时钟上升沿,转换至下一状态ENDIF;ENDPROCESS;PROCESS(lock,rst)--此进程中,在lock的上升沿,将转换好的数据锁入BEGINIFRST='0'THENdata=(others='0');ELSIFlock'EVENTANDlock='1'THENdata=D;ENDIF;ENDPROCESS;ADoe='0';endADCTRL;www.plcworld.cnKKX康芯科技12.2高速A/D采样控制设计图12-8A/D转换仿真波形www.plcworld.cnKKX康芯科技【例12-3】--TLC5510采样控制。libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;entityadctrlisport(rst:instd_logic;--复位clk:instd_logic;--采样控制Clock输入;d:instd_logic_vector(7downto0);--8位A/D数据ADck:outstd_logic;--TLC5510的CLKADoe:outstd_logic;--TLC5510的OEdata:outstd_logic_vector(7downto0);--8位数据dclk:outstd_logic);endadctrl;architecturelogiofadctrlissignallock:std_logic;beginlock=clk;ADck=clk;dclk=notlock;PROCESS(lock,rst)--此进程中,在lock的上
本文标题:电子系统设计实例
链接地址:https://www.777doc.com/doc-76548 .html