示波器自从问世以来,它一直是最重要、最常用的电子测试仪器之一。由于电子技术的发展,示波器的能力在不断提升,其性能与价格也五花八门,市场参差不齐。示波器看似简单,但如何选择,也存在许多问题。本文根据多年的经验,结合北京海洋兴业科技有限公司选型指南,从几个方面告知您在选择示波器时应注意的问题:
一、了解您需要测试的信号
您要知道用示波器观察什么?您要捕捉并观察的信号其典型性能是什么?您的信号是否有复杂的特性?您的信号是重复信号还是单次信号?您要测量的信号过渡过程的带宽,或者上升时间是多大?您打算用何种信号特性来触发短脉冲、脉冲宽度、窄脉冲等?您打算同时显示多少信号?您对测试信号作何种处理?
二、选择示波器的核心技术差异:模拟(DRT)、数字(DSO)、还是数模兼合(DPO)
传统的观点认为模拟示波器具有熟悉的控制面板,价格低廉,因而总觉得模拟示波器 “ 使用方便 ” 。但是随着 A/D 转换器速度逐年提高和价格不断降低,以及数字示波器不断增加的测量能力和实际上不受限制的测量功能,数字示波器已独领风骚。但是数字示波器显示具有三维的缺陷、处理连续性数据慢等缺点,需要具有数模兼合技术的示波器,例 DPO 数字荧光示波器。
三、确定测试信号带宽
带宽一般定义为正弦波输入信号幅度衰减到 -3dB 时的频率,即幅度的70.7% 。带宽决定示波器对信号的基本测量能力。如果没有足够的带宽,示波器将无法测量高频信号,幅度将出现失真,边缘将会消失,细节数据将被丢失;如果没有足够的带宽,得到的信号所有特性,包含响铃和振鸣等都毫无意义。
一个决定您所需要的示波器带宽有效经验—— “5倍经验准则”:将您要测量的信号最高频率分量乘以5,使测量结果获得高于2%的精度。
在某些应用场合,您不知道你的感兴趣的信号带宽,但是您知道它的最快上升时间,这时频率响应用下面的公式来计算关联带宽和仪器的上升时间: Bw=0.35/信号的最快上升时间。
数字示波器带宽有两种类型:重复(或等效时间)带宽和实时(或单次)带宽。重复带宽只适用于重复的信号,显示来自于多次信号采集期间的采样。实时带宽是示波器的单次采样中所能捕捉的最高频率,且当捕捉的事件不是经常出现或瞬变信号时就更为重要,实时带宽与采样速率紧密联系。
带宽越高越好,但是更高的带宽往往意味着更高的价格,因此应按照预算来选择您要观察的信号频率成分。
四、A/D转换器的采样速率(或采样速度)
单位为每秒采样次数( S/s ),指数字示波器对信号采样的频率。示波器的采样速率越快,所显示的波形的分辨率和清晰度就高,重要信息和事件丢失的概率就越小。
如果需要观测较长时间范围内的慢变信号或低频信号,最小采样速率就发挥了作用,为了在显示的波形记录中保持固定的波形数,需要调整水平控制旋钮,而所显示的采样速率也将随着水平调节旋钮的变化而变化。
如何计算采样速率?计算方法取决于所测量的波形类型,以及示波器所采用的信号重建方式,例正弦插入法,矢量插入法等。为了准确地再现信号并避免混淆,奈奎斯定理规定:信号的采样速率必须不小于其最高频率成分的两倍。然而,这个定理的前提是基于无限长时间和周期连续的信号。由于示波器不可能提供无限时间的记录长度,而且从定义上看,低频干扰是不连续的,也不是周期的,所以采用两倍于最高频率成分的采样速率通常是不够的。
实际上,信号的准确再现取决于其采样速率和信号采样点间隙所采用的插值法,即波形重建。一些示波器会为操作者提供以下选择:测量正弦信号的正弦插值法,以及测量矩形波、脉冲和其他信号类型的线性插值法。
有一个比较采样速率和信号带宽时很有用的经验法则:如果您正在观察的示波器有内插(通过筛选以便在取样点间重新生成),则(采样速率 / 信号带宽)的比值至少应为 4∶1 ;无正弦内插时,则应采取 10∶1 的比值。
五、屏幕刷新率也称为波形更新速度
所有的示波器都会闪烁,示波器每秒钟以特定的次数捕获信号,在这些测量点之间将不再进行测量,这就是波形捕获速率,也称屏幕刷新率,表示为波形数每秒( wfms/s )。一定要区分波形捕获速率与A/D采样速率的区别。采样速率表示示波器在一个波形或周期内A/D采样输入信号的频率 ; 波形捕获速率则是指示波器采集波形的速度。波形捕获速率取决于示波器的类型和性能级别,且有着很大的变化范围。高波形捕获速率的示波器将会提供更多的重要信号特性,并能极大地增加示波器快速捕获瞬时的异常情况,如抖动、矮脉冲、低频干扰和瞬时误差的概率。
一般来讲,模拟示波器由于电路简单,其屏幕刷新率较高,而数字存储示波器( DSO )使用串行处理结构每秒钟可以捕获 10 到 5000 个波形。为了改变数字示波器屏幕刷新率低的问题,数字荧光示波器采用并行处理结构,可以提供更高的波形捕获速率,有的高达每秒数百万个波形,大大提高了捕获间歇和难以捕捉事件的可能性,并能让您更快地发现信号存在的问题。
六、选用适当的存储深度,也称记录长度
存储深度是示波器所能存储的采样点多少的量度。如果您需要不间断的捕捉一个脉冲串,则要求示波器有足够的存储器以便捕捉整个事件。将所要捕捉的时间长度除以精确重现信号所须的采样速率,可以计算出所要求的存储深度。
存储深度与采样速率密切相关。您所需要的存储深度取决于要测量的总时间跨度和所要求的时间分辨率。
现代的示波器允许用户选择记录长度,以便对一些操作中的细节进行优化。分析一个十分稳定的正弦信号,只需要 500 点的记录长度;但如果要解析一个复杂的数字数据流,则需要有一百万个点或更多点的记录长度。
在正确位置上捕捉信号的有效触发,通常可以减小示波器实际需要的存储量。
七、根据需要选择不同的触发功能
示波器的触发能使信号在正确的位置点同步水平扫描,使信号特性清晰。触发控制按钮可以稳定重复的波形并捕获单次波形。
Jacob 技术 Electrical, FPGA
为了准确地再现信号并避免混淆,奈奎斯定理规定:信号的采样速率必须不小于其最高频率成分的两倍。这里的采样速率是指AD的采用速率,最高频率成分是指被测信号的频率。然而,这个定理的前提是基于无限长时间和周期连续的信号。由于示波器不可能提供无限时间的记录长度,而且从定义上看,低频干扰是不连续的,也不是周期的,所以采用两倍于最高频率成分的采样速率通常是不够的。
实际上,信号的准确再现取决于其采样速率和信号采样点间隙所采用的插值法,即波形重建。一些示波器会为操作者提供以下选择:测量正弦信号的正弦插值法,以及测量矩形波、脉冲和其他信号类型的线性插值法。
有一个比较采样速率和信号带宽时很有用的经验法则:如果您正在观察的示波器有内插(通过筛选以便在取样点间重新生成),则(采样速率 / 信号带宽)的比值至少应为 4∶1 ;无正弦内插时,则应采取 10∶1 的比值。
MSPS 是指抽样速率(Million samples per second),是指从模拟信号里抽样的速率。对抽样后的点,要进行量化和编码,量化编码以后就是2进制的数字信号了,这时候单位就换成了Mbit 或MByte。具体换算可以根据A/D的分辨率来换。而每符号用几位数据则决定于A/D转换的位数精度。
在我的课题中,我将要采用的AD 转换器是ADI公司的AD9283BRS-100,其为8bit,100MSPS,3V的AD转换器。也就是说根据奈奎斯特定理,2片 AD9283BRS-100交替采样,将能实现100M的带宽;而根据经验法则,使用正弦内插采样方式,将实现50M的带宽;无正弦内插时,将实现20M 的带宽。
Jacob 技术 Electrical, FPGA
以一个最简单的计数器为例:
Port(
clock:in std_logic;
pulse:in std_logic;
q:out std_logic_vector(3 downto 0)
);
q输出为对pulse跳变沿的递增计数。clock为系统高速时钟。
Process(clock) begin
if rising_edge(clock) then
dly1pul <= pulse;
dly2pul <= dly1pul;
end if;
End process;
en <= dly1pul and not dly2pul;–上升沿
–en <= not dly1pul and dly2pul;–下降沿
–en <= dly1pul xor dly2pul;–上升沿和下降沿
Process(clock) begin
if rising_edge(clock) then
if en = ‘1′ then
cnt <= cnt + 1;
end if;
end if;
End process;
q <= cnt;
单对于此小问题,当然采用倍频实现双沿计数也是可行的,但是我们不要忘记,倍频器在很多CPLD或FPGA中是不支持的,即便支持其资源也是很宝贵的。
我看到的一些设计中,动辄采用某一信号作为时钟,应该说这种做法是欠妥的。因为不是全局时钟的时钟信号最大扇出是有限的,其很难保证时钟延时应小于信号延时的基本要求。当遇到要对某个信号的跳变沿处理时,建议采用上述小例子中en信号的处理办法。
Jacob 技术 FPGA
1. Use ‘=’ for combinational assignments and ‘<=' registered assignments.
2. If you are describing combinational logic in an always block:
(1)Make sure all input signals are in event list.
(2)Make sure a value is assigned to an output signal on every path through block.
3. Make the language work for you.
Use built in. E.g. +, -, <<, >>, case …
4. Think of hardware always !
5. Synchronous design.
6. Use some useful synthesizable syntax only.
7. No compare to an unknown value (x, z)
8. Reset a sequential circuit before it works !
9. Non-synthesizable but powerful verilog syntax could be used in test pattern.
Jacob 技术 FPGA
比较重要的关键字
module endmodule
wire reg
连续赋值 assign
过程赋值 initial always
非阻塞赋值 Non-blocking <=
阻塞赋值 blocking =
Jacob 技术 FPGA
reg相当于存储单元,wire相当于物理连线
Verilog 中变量的物理数据分为线型和寄存器型。这两种类型的变量在定义时要设置位宽,缺省为1位。变量的每一位可以是0,1,X,Z。其中x代表一个未被预置初始状态的变量或者是由于由两个或多个驱动装置试图将之设定为不同的值而引起的冲突型线型变量。z代表高阻状态或浮空量。
线型数据包括wire,wand,wor等几种类型在被一个以上激励源驱动时,不同的线型数据有各自决定其最终值的分辨办法。
两者的区别是:即存器型数据保持最后一次的赋值,而线型数据需要持续的驱动
输入端口可以由net/reg驱动,但输入端口只能是net;输出端口可以使net/reg类型,输出端口只能驱动net;若输出端口在过程块中赋值则为reg型,若在过程块外赋值则为net型
用关键词inout声明一个双向端口, inout端口不能声明为寄存器类型,只能是net类型
Jacob 技术 FPGA
阻塞式(blocking)的操作符为 “ = ”
非阻塞式(non-blocking)的操作符为 “ <= ”
用verilog等硬件描述语言,心中要有电路的概念,阻塞赋值,可以认为只有一个步骤的操作,是在前一个赋值语句结束后再开始赋值的
而非阻塞赋值,可以看作两个步骤的过程,在赋值开始时,计算右边的值,在赋值结束时刻,计算左边的值
Jacob 技术 FPGA
两段式FSM描述方法:1,采用同步时序描述状态转移。2,用组合逻辑判断状态转移条件。弱点是输出一般使用组合逻辑描述,若以产生毛刺,而且影响实现速率
三段式FSM描述方法:1,采用同步时序描述状态转移。2,采用组合逻辑判判断状态转移条件。3,用同步时序电路描述每个状态的输出。
Jacob 技术 FPGA
硬件描述语言HDL(Hardware Describe Language)
HDL概述
随着EDA技术的发展,使用硬件语言设计PLD/FPGA成为一种趋势。目前最主要的硬件描述语言是VHDL和Verilog HDL。 VHDL发展的较早,语法严格,而Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言,语法较自由。 VHDL和Verilog HDL两者相比,VHDL的书写规则比Verilog烦琐一些,但verilog自由的语法也容易让少数初学者出错。国外电子专业很多会在本科阶段教授VHDL,在研究生阶段教授verilog。从国内来看,VHDL的参考书很多,便于查找资料,而Verilog HDL的参考书相对较少,这给学习Verilog HDL带来一些困难。从EDA技术的发展上看,已出现用于CPLD/FPGA设计的硬件C语言编译软件,虽然还不成熟,应用极少,但它有可能会成为继VHDL和Verilog 之后,设计大规模CPLD/FPGA的又一种手段。
选择VHDL还是verilog HDL?
这是一个初学者最常见的问题。其实两种语言的差别并不大,他们的描述能力也是类似的。掌握其中一种语言以后,可以通过短期的学习,较快的学会另一种语言。选择何种语言主要还是看周围人群的使用习惯,这样可以方便日后的学习交流。当然,如果您是集成电路(ASIC)设计人员,则必须首先掌握verilog,因为在IC设计领域,90%以上的公司都是采用verilog进行IC设计。对于PLD/FPGA设计者而言,两种语言可以自由选择。
学习HDL的几点重要提示
1.了解HDL的可综合性问题:
HDL 有两种用途:系统仿真和硬件实现。 如果程序只用于仿真,那么几乎所有的语法和编程方法都可以使用。但如果我们的程序是用于硬件实现(例如:用于FPGA设计),那么我们就必须保证程序“可综合”(程序的功能可以用硬件电路实现)。不可综合的HDL语句在软件综合时将被忽略或者报错。我们应当牢记一点:“所有的HDL描述都可以用于仿真,但不是所有的HDL描述都能用硬件实现。”
2. 用硬件电路设计思想来编写HDL:
学好HDL的关键是充分理解HDL语句和硬件电路的关系。 编写HDL,就是在描述一个电路,我们写完一段程序以后,应当对生成的电路有一些大体上的了解, 而不能用纯软件的设计思路来编写硬件描述语言。 要做到这一点,需要我们多实践,多思考,多总结。
3.语法掌握贵在精,不在多
30%的基本HDL语句就可以完成95%以上的电路设计,很多生僻的语句并不能被所有的综合软件所支持,在程序移植或者更换软件平台时,容易产生兼容性问题,也不利于其他人阅读和修改。建议多用心钻研常用语句,理解这些语句的硬件含义,这比多掌握几个新语法要有用的多。
HDL与原理图输入法的关系
HDL和传统的原理图输入方法的关系就好比是高级语言和汇编语言的关系。HDL的可移植性好,使用方便,但效率不如原理图;原理图输入的可控性好,效率高,比较直观,但设计大规模CPLD/FPGA时显得很烦琐,移植性差。在真正的PLD/FPGA设计中,通常建议采用原理图和HDL结合的方法来设计,适合用原理图的地方就用原理图,适合用HDL的地方就用HDL,并没有强制的规定。在最短的时间内,用自己最熟悉的工具设计出高效,稳定,符合设计要求的电路才是我们的最终目的。
HDL开发流程
用VHDL/VerilogHD语言开发PLD/FPGA的完整流程为:
1.文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。通常VHDL文件保存为.vhd文件,Verilog文件保存为.v文件
2.功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)
3.逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式和信号的连接关系。逻辑综合软件会生成.edf(edif)的EDA工业标准文件。
4.布局布线:将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到PLD/FPGA内
5.时序仿真:需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。(也叫后仿真)
6.编程下载:确认仿真无误后,将文件下载到芯片中
通常以上过程可以都在PLD/FPGA厂家提供的开发工具(如MAXPLUSII,Foundation,ISE)中完成,但许多集成的PLD开发软件只支持VHDL/Verilog的子集,可能造成少数语法不能编译,如果采用专用HDL工具分开执行,效果会更好,否则这么多出售专用HDL开发工具的公司就没有存在的理由了。
Jacob 技术 FPGA
手头上的片子是Altera的EP2C5,就这个片子讲下它的配置方式,对于其他的FPGA芯片,基本类似,或者增加或者减少一些配置方式。
Altera 公司的配置方式主要有Passive Serial(PS),Active Serial(AS),Fast Passive Parallel(FPP),Passive Parallel Synchronous(PPS),Passive Parallel Asynchronous(PPA),Passive Serial Asynchronous(PSA),JTAG等七种配置方式,其中Cyclone支持的配置方式有PS,AS,JTAG三种。
下面分别介绍
PS,被动配置方式,通过加强型配置器件(EPC16,EPC8,EPC4)等配置器件来完成,在PS配置期间,配置数据从外部储存部件,通过DATA0引脚送入FPGA。配置数据在DCLK上升沿锁存,1个时钟周期传送1位数据。
AS,主动串行配置方式,目前只支持Cyclone系列。使用Altera串行配置器件来完成。Cyclone期间处于主动地位,配置期间处于从属地位。配置数据通过DATA0引脚送入FPGA。配置数据被同步在DCLK输入上,1个时钟周期传送1位数据。
JTAG,使用IEEE Std 1149.1联合边界扫描接口引脚,支持JAM STAPL标准,可以使用Altera下载电缆或主控器来完成。
Jacob 技术 FPGA