第 12章电子系统设计实践
EDA技术 实用教程康芯科技
12.1 等精度频率计设计在此完成的设计项目可达到的指标为:
(1) 频率测试功能,测频范围 0.1Hz~ 100MHz。 测频精度:测频全域相对误差恒为百万分之一 。
(2) 脉宽测试功能,测试范围 0.1μs~ 1s,测试精度
0.01μs。
(3) 占空比测试功能,测试精度 1% ~ 99% 。
(4) 相位测试功能 (附加功能 )。
康芯科技12.1.1 主系统组成图 12-1 频率计主系统电路组成康芯科技
12.1.2 测频原理图 12-2 等精度频率计主控结构康芯科技设在一次预置门时间 Tpr中对被测信号计数值为 Nx,对标准频率信号的计数值为 Ns,则下式成立:
NsFsNxFx //? 12-1
不难得到测得的频率为:
NxNsFsFx )/(
12-2
图 12-3 频率计测控时序
12.1.2 测频原理康芯科技占空比 = 12-3
%1 0 021 1 NN N
12.1 等精度频率计设计
12.1.3 FPGA/CPLD开发的 VHDL设计康芯科技【 例 12-1】
LIBRARY IEEE; --等精度频率计 FPGA设计部分
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY etester IS
PORT (BCLK,IN STD_LOGIC; --标准频率时钟信号 clock2,50MHZ
TCLK,IN STD_LOGIC; --待测频率时钟信号
CLR,IN STD_LOGIC; --清零和初始化信号
CL,IN STD_LOGIC; --当 SPUL为高电平时,CL为预置门控信号,用于测频计数
--时间控制当 SPUL为低电平时,CL为测脉宽控制信号,
--CL高电平时测高电平脉宽而当 CL为低电平时,测低电平脉宽 。
SPUL,IN STD_LOGIC; --测频或测脉宽控制
START,OUT STD_LOGIC;--起始计数标志信号
EEND,OUT STD_LOGIC; --由低电平变到高电平时指示脉宽计数结束,
SEL,IN STD_LOGIC_VECTOR(2 DOWNTO 0); --数据读出选同控制
DATA,OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --8位数据读出
END etester;
ARCHITECTURE behav OF etester IS
SIGNAL BZQ,STD_LOGIC_VECTOR(31 DOWNTO 0); --标准计数器
SIGNAL TSQ,STD_LOGIC_VECTOR(31 DOWNTO 0); --测频计数器
SIGNAL ENA,STD_LOGIC; --计数使能
SIGNAL MA,CLK1,CLK2,CLK3,STD_LOGIC;
SIGNAL Q1,Q2,Q3,BENA,PUL,STD_LOGIC;
SIGNAL SS,STD_LOGIC_VECTOR(1 DOWNTO 0); 接下页康芯科技BEGIN
START <= ENA ;
DATA <= BZQ(7 DOWNTO 0) WHEN SEL="000" ELSE -- 标准频率计数低 8位输出
BZQ(15 DOWNTO 8) WHEN SEL="001" ELSE
BZQ(23 DOWNTO 16) WHEN SEL="010" ELSE
BZQ(31 DOWNTO 24) WHEN SEL="011" ELSE -- 标准频率计数最高 8位输出
TSQ(7 DOWNTO 0) WHEN SEL="100" ELSE --待测频率计数值最低 8位输出
TSQ(15 DOWNTO 8) WHEN SEL="101" ELSE
TSQ(23 DOWNTO 16) WHEN SEL="110" ELSE
TSQ(31 DOWNTO 24) WHEN SEL="111" ELSE --待测频率计数值最高 8位输出
TSQ(31 DOWNTO 24) ;
BZH,PROCESS(BCLK,CLR) --标准频率测试计数器,标准计数器
BEGIN
IF CLR = '1' THEN BZQ <= ( OTHERS=>'0' ) ;
ELSIF BCLK'EVENT AND BCLK = '1' THEN
IF BENA = '1' THEN BZQ <= BZQ + 1; END IF;
END IF;
END PROCESS;
TF,PROCESS(TCLK,CLR,ENA) --待测频率计数器,测频计数器
BEGIN
IF CLR = '1' THEN TSQ <= ( OTHERS=>'0' );
ELSIF TCLK'EVENT AND TCLK = '1' THEN
IF ENA = '1' THEN TSQ <= TSQ + 1; END IF;
END IF; 接下页康芯科技END PROCESS;
PROCESS(TCLK,CLR)
BEGIN
IF CLR = '1' THEN ENA <= '0' ;
ELSIF TCLK'EVENT AND TCLK='1' THEN ENA <= CL ; END IF;
END PROCESS;
MA<=(TCLK AND CL) OR NOT(TCLK OR CL) ; --测脉宽逻辑
CLK1<=NOT MA ; CLK2<=MAAND Q1 ; CLK3<=NOT CLK2; SS<=Q2 & Q3 ;
DD1,PROCESS(CLK1,CLR)
BEGIN
IF CLR = '1' THEN Q1 <= '0' ;
ELSIF CLK1'EVENT AND CLK1 = '1' THEN Q1 <= '1' ; END IF;
END PROCESS;
DD2,PROCESS(CLK2,CLR)
BEGIN
IF CLR = '1' THEN Q2 <= '0' ;
ELSIF CLK2'EVENT AND CLK2 = '1' THEN Q2 <= '1' ; END IF;
END PROCESS;
DD3,PROCESS(CLK3,CLR)
BEGIN
IF CLR = '1' THEN Q3 <= '0' ;
ELSIF CLK3'EVENT AND CLK3 = '1' THEN Q3 <= '1' ; END IF;
END PROCESS; 接下页康芯科技
PUL<='1' WHEN SS="10" ELSE --当 SS=“10”时,PUL高电平,允许标准计数器计数
,
'0' ; --禁止计数
EEND<='1' WHEN SS="11" ELSE --EEND为低电平时,表示正在计数,由低电平变到高电平
'0' ; --时,表示计数结束,可以从标准计数器中读数据了
BENA<=ENA WHEN SPUL='1' ELSE--标准计数器时钟使能控制信号,当 SPUL为 1时
,测频率
PUL WHEN SPUL='0' ELSE--当 SPUL为 0时,测脉宽和占空比
PUL ;
END behav;
康芯科技
C
D Q
C
D Q
C
D Q
C
D Q
( D A T A )
( S T A R T )
S P U L
E E N D = ‘0 ’
则 E E N D = ‘1 ’,否则当 Q 2 = ‘1 ’,Q 3 = ‘1 ’
P U L = ‘0 ’
则 P U L = ‘1 ’,否则当 Q 2 = ‘1 ’,Q 3 = ‘0 ’
SS1 的逻辑功能为:
2 选 1 多路选择器
FP G A
‘1 ’
( S P U L )
E N A
B E N A
‘0 ’
M U X 2 1
‘1 ’
( E E N D )
PL
E N D
SS1
Q3
Q2
( SEL )
( C L R )
( T C L K )
( CL )
( B C L K )
8
D A T A
SEL
3
32
32
6 4 - 8 多路选择器
T S Q
32 位待测频率计数器
E N A
T C L K
TF
C L R
B E N A
B C L K
B Z H
B Z Q
32 位标准频率计数器
C L R
图 12-4 例 12-1的 RTL图康芯科技图 12-5 等精度频率计测频时序图
12.1.3 FPGA/CPLD开发的 VHDL设计康芯科技图 12-6 等精度频率计测脉宽时序图
12.1.3 FPGA/CPLD开发的 VHDL设计康芯科技
12.1 等精度频率计设计
12.1.4 测试与设计步骤
12.1.5 相位测试
3 60
N2N1
N1?
相位差 =
单 片 机 系 统
L E D 显 示键 盘 控 制数 字鉴 相器测 频,测周 期
F P G A
比 较 整 形比 较 整 形
A 路 信 号
B 路 信 号计 数 值图 12-7 测相仪模型康芯科技
12.1 等精度频率计设计
12.1.5 相位测试图 12-8 测相仪电路原理图( TPAS.gdf工程)
康芯科技
12.1 等精度频率计设计
12.1.5 相位测试图 12-9 相位检测原理图 epd )
图 12-10 鉴相器 EPD的仿真波形康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-11 直接型 FIR滤波器结构
1N
0n
nznhzH
N阶 FIR滤波器系统的传递函数:
x ( n )
h
(
n
)
h
(
1
)
h
(
2
)
h
(
3
)
h
(
N
-
2
)
h
(
N
-
1
)
y ( n )
1?z 1?z 1?z 1?z 1?z
N阶的 FIR系统差分方程可表示为:
1N
0m
)mn(x)m(h)n(Y
康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-12 直接型 FIR实现结构
x(n)
x(n)
x(n-1) x(n-2) x(n-N+2) x(n-N+1)
× × × ×
+
y(n)
h(0) h(1) h(N-2) h(N-1)延迟环节乘法器加法器
…
x (n)
x (n) x (n - 1) x (n - 2) x (n - N + 2 ) x (n - N + 1 )
h (N - 2) h (N - 1)
y (n)
h (1) h (0) ×
× × ×
+
康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-13 FIR滤波器设计示意
A/D FIR D/A
模拟信号输入 滤波结果输出康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-14 FIR Compiler安装图康芯科技
12.2 使用 IP Core设计 FIR滤波器
12-15 设置 User Libraries
康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-16 在 MegaWizard管理器中选择 IP Core
康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-17 FIR滤波器系数确定康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-18 FIR系数修正康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-19 FIR模块 Symbol
康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-20 firm模块仿真结果康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-21 FIR滤波器总体连接图康芯科技习 题
12-1 根据第 12.1节的叙述,回答以下问题:
( 1) 由图 12-4说明信号,SPUL”和,EEND”的作用
( 2) 用数学证明,CL门的时间在 0.1s至 1s间,在可测的频域内,误差小于等于标准频率源一个周期 。
(3) 分析图 12-4和图 12-5,说明信号 CL和 START的关系,并利用公式 (12-2)计算 TCLK的频率 。
(4) 分析图 12-4和图 12-6,说明信号 START和 EEND的关系,
并计算 TCLK的脉宽,详细说明占空比的测量方法 。
(5) 分析图 12-2,12-3,详细说明等精度测频原理 。
康芯科技实 验 与 设 计
12-1 多功能测试仪设计
(1) 实验目的,学习电子设计竞赛项目的开发技术 。
(2) 实验原理,参考本章内容 。
(3) 实验内容 1,根据 12.1.4节的步骤首先完成等精度频率计专用芯片
( FPGA) 的设计,按照图 12-5和 12-6的时序,在 GW48系统上硬件验证例 12-1的各项功能:等精度测频率,测脉宽,测占空比 。 与 GW48系统上给出的标准待测频率,计算误差,并与理论误差值比较 。
(4) 实验内容 2,根据图 12-1,12-5,12-6和式 12-2,12-3,设计单片机程序,完成单片机与 FPGA的接口程序,控制程序和计算显示程序的设计 。
完成等精度频率计独立系统的设计,控制键可以参考图 12-1的电路,每一个键控制一种功能 。
(5) 实验内容 3,根据 12.1.5节和图 12-8,修改原设计,增加测相位功能,
并在系统上增加一个键,控制测相差和显示 。 被测信号可以用前面设计的移相信号发生器产生 。
康芯科技实 验 与 设 计
12-2 FIR滤波器设计用 FPGA设计 FIR数字滤波器 。 由于滤波器的硬件实现需要 ADC和 DAC,要考虑使用 ADDA板 。
EDA技术 实用教程康芯科技
12.1 等精度频率计设计在此完成的设计项目可达到的指标为:
(1) 频率测试功能,测频范围 0.1Hz~ 100MHz。 测频精度:测频全域相对误差恒为百万分之一 。
(2) 脉宽测试功能,测试范围 0.1μs~ 1s,测试精度
0.01μs。
(3) 占空比测试功能,测试精度 1% ~ 99% 。
(4) 相位测试功能 (附加功能 )。
康芯科技12.1.1 主系统组成图 12-1 频率计主系统电路组成康芯科技
12.1.2 测频原理图 12-2 等精度频率计主控结构康芯科技设在一次预置门时间 Tpr中对被测信号计数值为 Nx,对标准频率信号的计数值为 Ns,则下式成立:
NsFsNxFx //? 12-1
不难得到测得的频率为:
NxNsFsFx )/(
12-2
图 12-3 频率计测控时序
12.1.2 测频原理康芯科技占空比 = 12-3
%1 0 021 1 NN N
12.1 等精度频率计设计
12.1.3 FPGA/CPLD开发的 VHDL设计康芯科技【 例 12-1】
LIBRARY IEEE; --等精度频率计 FPGA设计部分
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY etester IS
PORT (BCLK,IN STD_LOGIC; --标准频率时钟信号 clock2,50MHZ
TCLK,IN STD_LOGIC; --待测频率时钟信号
CLR,IN STD_LOGIC; --清零和初始化信号
CL,IN STD_LOGIC; --当 SPUL为高电平时,CL为预置门控信号,用于测频计数
--时间控制当 SPUL为低电平时,CL为测脉宽控制信号,
--CL高电平时测高电平脉宽而当 CL为低电平时,测低电平脉宽 。
SPUL,IN STD_LOGIC; --测频或测脉宽控制
START,OUT STD_LOGIC;--起始计数标志信号
EEND,OUT STD_LOGIC; --由低电平变到高电平时指示脉宽计数结束,
SEL,IN STD_LOGIC_VECTOR(2 DOWNTO 0); --数据读出选同控制
DATA,OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --8位数据读出
END etester;
ARCHITECTURE behav OF etester IS
SIGNAL BZQ,STD_LOGIC_VECTOR(31 DOWNTO 0); --标准计数器
SIGNAL TSQ,STD_LOGIC_VECTOR(31 DOWNTO 0); --测频计数器
SIGNAL ENA,STD_LOGIC; --计数使能
SIGNAL MA,CLK1,CLK2,CLK3,STD_LOGIC;
SIGNAL Q1,Q2,Q3,BENA,PUL,STD_LOGIC;
SIGNAL SS,STD_LOGIC_VECTOR(1 DOWNTO 0); 接下页康芯科技BEGIN
START <= ENA ;
DATA <= BZQ(7 DOWNTO 0) WHEN SEL="000" ELSE -- 标准频率计数低 8位输出
BZQ(15 DOWNTO 8) WHEN SEL="001" ELSE
BZQ(23 DOWNTO 16) WHEN SEL="010" ELSE
BZQ(31 DOWNTO 24) WHEN SEL="011" ELSE -- 标准频率计数最高 8位输出
TSQ(7 DOWNTO 0) WHEN SEL="100" ELSE --待测频率计数值最低 8位输出
TSQ(15 DOWNTO 8) WHEN SEL="101" ELSE
TSQ(23 DOWNTO 16) WHEN SEL="110" ELSE
TSQ(31 DOWNTO 24) WHEN SEL="111" ELSE --待测频率计数值最高 8位输出
TSQ(31 DOWNTO 24) ;
BZH,PROCESS(BCLK,CLR) --标准频率测试计数器,标准计数器
BEGIN
IF CLR = '1' THEN BZQ <= ( OTHERS=>'0' ) ;
ELSIF BCLK'EVENT AND BCLK = '1' THEN
IF BENA = '1' THEN BZQ <= BZQ + 1; END IF;
END IF;
END PROCESS;
TF,PROCESS(TCLK,CLR,ENA) --待测频率计数器,测频计数器
BEGIN
IF CLR = '1' THEN TSQ <= ( OTHERS=>'0' );
ELSIF TCLK'EVENT AND TCLK = '1' THEN
IF ENA = '1' THEN TSQ <= TSQ + 1; END IF;
END IF; 接下页康芯科技END PROCESS;
PROCESS(TCLK,CLR)
BEGIN
IF CLR = '1' THEN ENA <= '0' ;
ELSIF TCLK'EVENT AND TCLK='1' THEN ENA <= CL ; END IF;
END PROCESS;
MA<=(TCLK AND CL) OR NOT(TCLK OR CL) ; --测脉宽逻辑
CLK1<=NOT MA ; CLK2<=MAAND Q1 ; CLK3<=NOT CLK2; SS<=Q2 & Q3 ;
DD1,PROCESS(CLK1,CLR)
BEGIN
IF CLR = '1' THEN Q1 <= '0' ;
ELSIF CLK1'EVENT AND CLK1 = '1' THEN Q1 <= '1' ; END IF;
END PROCESS;
DD2,PROCESS(CLK2,CLR)
BEGIN
IF CLR = '1' THEN Q2 <= '0' ;
ELSIF CLK2'EVENT AND CLK2 = '1' THEN Q2 <= '1' ; END IF;
END PROCESS;
DD3,PROCESS(CLK3,CLR)
BEGIN
IF CLR = '1' THEN Q3 <= '0' ;
ELSIF CLK3'EVENT AND CLK3 = '1' THEN Q3 <= '1' ; END IF;
END PROCESS; 接下页康芯科技
PUL<='1' WHEN SS="10" ELSE --当 SS=“10”时,PUL高电平,允许标准计数器计数
,
'0' ; --禁止计数
EEND<='1' WHEN SS="11" ELSE --EEND为低电平时,表示正在计数,由低电平变到高电平
'0' ; --时,表示计数结束,可以从标准计数器中读数据了
BENA<=ENA WHEN SPUL='1' ELSE--标准计数器时钟使能控制信号,当 SPUL为 1时
,测频率
PUL WHEN SPUL='0' ELSE--当 SPUL为 0时,测脉宽和占空比
PUL ;
END behav;
康芯科技
C
D Q
C
D Q
C
D Q
C
D Q
( D A T A )
( S T A R T )
S P U L
E E N D = ‘0 ’
则 E E N D = ‘1 ’,否则当 Q 2 = ‘1 ’,Q 3 = ‘1 ’
P U L = ‘0 ’
则 P U L = ‘1 ’,否则当 Q 2 = ‘1 ’,Q 3 = ‘0 ’
SS1 的逻辑功能为:
2 选 1 多路选择器
FP G A
‘1 ’
( S P U L )
E N A
B E N A
‘0 ’
M U X 2 1
‘1 ’
( E E N D )
PL
E N D
SS1
Q3
Q2
( SEL )
( C L R )
( T C L K )
( CL )
( B C L K )
8
D A T A
SEL
3
32
32
6 4 - 8 多路选择器
T S Q
32 位待测频率计数器
E N A
T C L K
TF
C L R
B E N A
B C L K
B Z H
B Z Q
32 位标准频率计数器
C L R
图 12-4 例 12-1的 RTL图康芯科技图 12-5 等精度频率计测频时序图
12.1.3 FPGA/CPLD开发的 VHDL设计康芯科技图 12-6 等精度频率计测脉宽时序图
12.1.3 FPGA/CPLD开发的 VHDL设计康芯科技
12.1 等精度频率计设计
12.1.4 测试与设计步骤
12.1.5 相位测试
3 60
N2N1
N1?
相位差 =
单 片 机 系 统
L E D 显 示键 盘 控 制数 字鉴 相器测 频,测周 期
F P G A
比 较 整 形比 较 整 形
A 路 信 号
B 路 信 号计 数 值图 12-7 测相仪模型康芯科技
12.1 等精度频率计设计
12.1.5 相位测试图 12-8 测相仪电路原理图( TPAS.gdf工程)
康芯科技
12.1 等精度频率计设计
12.1.5 相位测试图 12-9 相位检测原理图 epd )
图 12-10 鉴相器 EPD的仿真波形康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-11 直接型 FIR滤波器结构
1N
0n
nznhzH
N阶 FIR滤波器系统的传递函数:
x ( n )
h
(
n
)
h
(
1
)
h
(
2
)
h
(
3
)
h
(
N
-
2
)
h
(
N
-
1
)
y ( n )
1?z 1?z 1?z 1?z 1?z
N阶的 FIR系统差分方程可表示为:
1N
0m
)mn(x)m(h)n(Y
康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-12 直接型 FIR实现结构
x(n)
x(n)
x(n-1) x(n-2) x(n-N+2) x(n-N+1)
× × × ×
+
y(n)
h(0) h(1) h(N-2) h(N-1)延迟环节乘法器加法器
…
x (n)
x (n) x (n - 1) x (n - 2) x (n - N + 2 ) x (n - N + 1 )
h (N - 2) h (N - 1)
y (n)
h (1) h (0) ×
× × ×
+
康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-13 FIR滤波器设计示意
A/D FIR D/A
模拟信号输入 滤波结果输出康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-14 FIR Compiler安装图康芯科技
12.2 使用 IP Core设计 FIR滤波器
12-15 设置 User Libraries
康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-16 在 MegaWizard管理器中选择 IP Core
康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-17 FIR滤波器系数确定康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-18 FIR系数修正康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-19 FIR模块 Symbol
康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-20 firm模块仿真结果康芯科技
12.2 使用 IP Core设计 FIR滤波器图 12-21 FIR滤波器总体连接图康芯科技习 题
12-1 根据第 12.1节的叙述,回答以下问题:
( 1) 由图 12-4说明信号,SPUL”和,EEND”的作用
( 2) 用数学证明,CL门的时间在 0.1s至 1s间,在可测的频域内,误差小于等于标准频率源一个周期 。
(3) 分析图 12-4和图 12-5,说明信号 CL和 START的关系,并利用公式 (12-2)计算 TCLK的频率 。
(4) 分析图 12-4和图 12-6,说明信号 START和 EEND的关系,
并计算 TCLK的脉宽,详细说明占空比的测量方法 。
(5) 分析图 12-2,12-3,详细说明等精度测频原理 。
康芯科技实 验 与 设 计
12-1 多功能测试仪设计
(1) 实验目的,学习电子设计竞赛项目的开发技术 。
(2) 实验原理,参考本章内容 。
(3) 实验内容 1,根据 12.1.4节的步骤首先完成等精度频率计专用芯片
( FPGA) 的设计,按照图 12-5和 12-6的时序,在 GW48系统上硬件验证例 12-1的各项功能:等精度测频率,测脉宽,测占空比 。 与 GW48系统上给出的标准待测频率,计算误差,并与理论误差值比较 。
(4) 实验内容 2,根据图 12-1,12-5,12-6和式 12-2,12-3,设计单片机程序,完成单片机与 FPGA的接口程序,控制程序和计算显示程序的设计 。
完成等精度频率计独立系统的设计,控制键可以参考图 12-1的电路,每一个键控制一种功能 。
(5) 实验内容 3,根据 12.1.5节和图 12-8,修改原设计,增加测相位功能,
并在系统上增加一个键,控制测相差和显示 。 被测信号可以用前面设计的移相信号发生器产生 。
康芯科技实 验 与 设 计
12-2 FIR滤波器设计用 FPGA设计 FIR数字滤波器 。 由于滤波器的硬件实现需要 ADC和 DAC,要考虑使用 ADDA板 。