- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
便携式功率分析仪设计-----硬件设计(四)
3.4 FPGA内部电路设计本设计
硬件电路设计采用了1片FPGA,芯片型号为Altera公司的EP1C6Q240C8 。其作用主要分为数据采集控制和频率测量控制两个部分。数据采集控制部分用于实现ARM寄存器基接口的配置,通道控制,数据采集,触发与存储器读写控制等;频率测量控制部分用于利用前端电路已经分频整形的信号对给定门宽进行计数,从而等到该信号的频率值。这里先对数据采样部分的FPGA内部电路进行介绍,频率测量部分的介绍见后章。
数据采集控制部分的FPGA程序主要完成与ARM芯片接口的的配置工作;对寄存器进行译码;控制触发电平,实现触发功能;FIFO读写控制;时钟频率选择;采样时钟合成与控制;寄存器读写操作。以下分别对各部分的功能进行介绍。
3.4.1地址译码电路及控制信号
模拟通道中的衰减控制信号,以及对FIFO状态的检测信号等,都是由ARM芯片对其数据、地址总线的读写来实现的,这就需要为每个端口分配地址。本设计中,由于是利用LPC2138的两个通用I/O口,模拟读写控制线,由于有独立的读写标志,因此需要4根地址线译码,进行端口读写。
FPGA中与ARM芯片(LPC2138)接口的写操作地址译码电路。其中,/WR为ARM芯片的写使能信号,低有效。当写外部存储器时,/WR信号变为低,而在/WR信号的上升沿时,ARM外部数据、地址总线上的数据都是很稳定的。而且地址总线上的数据比数据总线上的数据先有效。因此,我们可以先对外部地址总线上的数据利用译码器进行译码,等到/WR信号有效时,利用/WR信号的上升沿对外部数据总线上的数据进行锁存,完成对外部存储器的一次写操作。
其中,写寄存器部分主要由74374构成,实现寄存器写操作。送写的数据包括触发字、FIFO状态控制字、DAC控制字、MAX4141通道选择字等控制字。
同样在ARM读操作中,/RD为ARM芯片的输出时钟信号,低有效;当每执行一次读操作时/RD产生一个读时钟信号,同时ARM外部数据总线上的数据在两个读时钟周期内有效。而且地址总线上的数据比数据总线上的数据先有效。因此,我们可以先对外部地址总线上的数据利用译码器进行译码,等到/RD读时钟信号有效时,选通相应的缓冲器,从而完成对外部存储器的一次读操作。
其中,读寄存器部分主要由74244构成,完成寄存器读操作,包括读取FIFO状态字、存储在FIFO中的ADC采集的数据等。
3.4.2数字触发电路
功率测量中,为了得到检波后脉冲的峰值,需要设置触发电平,获得信号的峰值。为了避免毛刺干扰的影响,触发电路设计中选用窗口电路的设计方法。并选用上升沿/下降沿触发。具体触发电平大小的设置,根据于采样得到信号的峰值,如下图3-18所示,触发电路由两个比较器、选择器和触发器等组成。触发电平triglev小于triglev1,构成窗口触发的两个电平。第一路比较器实现触发电平triglev和采样得到的信号值比较,当triglev小于此时的信号值,则第二路经过比较器输出的信号被选通到输出端。第二路比较器实现触发电平triglev1和采样信号比较,当信号高于triglev1则输出端置高。因此,trig_or比较器的输出为采样信号的整形后信号,在后端的trig_s标志为用户提供上升沿/下降沿触发方式的选择。从而实现窗口触发。
3.4.3数据的存储与控制
A/D采样出来的数据,是随采样时钟和被测信号的变化而变化的,要能够再现被测信号,必须要把每次采集的数据存入缓存器中,这里介绍的FIFO就是一个典型的缓存器。FIFO是一个先进先出的存储器,可同时对存储空间进行读写,没有地址线,第一个读出来的数据是第一个写进去的数据,它有现成的集成芯片。由于EP1C6Q240片内有92160bits的存储空间,因此本设计采用ALTERA公司提供的宏单元库MEGA_LPM中提供的FIFO库文件(LPM_FIFO_DC),将FIFO做在FPGA中。对应AD9480的存储主通道信号采样值的FIFO存储深度设为1024,单位为8bits,生成的FIFO如图3-19所示。
生成的FIFO有一个写使能信号wrreq,一个写时钟信号wrclk,一个读使能信号rdreq,一个读时钟信号rdclk,一个清除端aclr,8bits数据输入端data[7……0]和8bits数据输出端q[];同时还有两个状态端:wrfull(FIFO满)和rdempty(FIFO空),FIFO被写满时wrfull=1,当FIFO被读空时rdempty=1.如图3-19中还使用到一个数据输出端wrusedw[9..0],该端口在每一个FIFO写时钟到来是更新当前FIFO以写入数据数量,这将在做预触发方式时使用。
这里之所以不用一般并行RAM而用FIFO主要有如下两个原因:一方面是它不用地址线,便于电路的连接和控制;更重要的是它可以同时进行读写操作,这样在做预触发功能时是非常方便的。虽然用并行RAM将地址计数器做成一个环行计数器也可以实现,这样就增加了FPGA内部的资源,也使电路复杂化了。
本设计在FPGA中用AHDL语言编写了对FIFO复位及读写总体控制程序,如下:
BEGIN
DEFAULTS
fifo_wclk=gnd;fifo_rclk=gnd;
trig_clr=vcc;fifo_/wen=vcc;
fifo_/ren=vcc;fifo_/reset=vcc; //控制器默认状态,FIFO读写无效
END DEFAULTS;
IF workstate==0 THEN //通道采集关闭
fifo_/wen=vcc; //关闭FIFO写使能
……//FIFO读时钟由ARM提供
ELSIF (workstate==1) THEN //通道采集开启
fifo_/ren=gnd;
fifo_/wen=gnd; //FIFO读写使能同时有效
……
由程序可见,当workstate=0时,可由程序控制对FIFO进行复位,或者FIFO不复位,但是此时可对FIFO进行读操作。一般开始新一轮的采数之前要对FIFO进行一次复位,以确保FIFO的状态正常且为空。当FIFO存满后,也要用到此状态将FIFO中的数据读出。当workstate=1时,FIFO读写均使能:一般在采数阶段要用workstate=1状态。本设计在FPGA中对FIFO复位及读写的触发控制采用了两种模式:
一种为自动触发模式,即,当调整数字触发电路的触发电平使其低于采样信号最大值,且高于其最小值时(既数字触发器触发时),液晶屏显示信号波形由触发电平所在位置附近启始,保持显示信号的稳定;当不触发时,则不对FIFO存储数据加以限制。实现方法如上图以及数字触发电路原理图所示,在FIFO清空控制端加入一个trig_fifo控制信号并将其与正常FIFO清空控制信号相或,trig_fifo信号由数字触发电路产生,信号特点是在触发出现时产生短暂的低电平,用于对FIFO清空数据,使FIFO在触发到来后,其内部只保留触发点之后的数据。
另一种为正常触发方式,即,首先在触发信号到来前FIFO存储一段触发前的数据并不断刷新,等待触发信号到来,这既是预触发。触发信号到来后FIFO停止刷新前端预触发数据,直接存储采样数据;当触发信号没到来是系统则一直等待触发。如下:
if (clk'event and clk='1') then
if fifodepth >="0010000000" and trig ='0' then
cntrl<='1';
elsif fifodepth >="0010000000" and trig ='1' then
cntrl<='0';
else
cntrl<='0';
end if;
……
程序中,cntrl信号是读时钟控制信号。当cntrl=0时,控制关闭FIFO读时钟,当cntrl=1时,FIFO的读写时钟相同。由程序可以看出,FIFO首先直接写入128个数据(暂定为FIFO深度的10%),此时FIFO读时钟关闭;当FIFO写入数据达到或超过128个时,打开读时钟,此时FIFO中存入一个数的同时也读出一个数,FIFO已存入的128个数据将不断被刷新;若信号已经触发时,这时FIFO没有读时钟,只有写时钟,也就是说FIFO处于只写的状态,进行数据存储。这样就实现了预触发。
当被采样信号为连续波信号时,自动触发模式能够很好的稳定显示的波形,方便用户观察,但是由于自动触发时FIFO里存储的只能是触发之后的数据,加之各个模块的延时导致不能显示出触发时刻以及触发之前一段时间的数据,当被测信号是窄脉冲信号时将由于不能完整显示脉冲信号,而使用户不能了解被测信号的全部特征,而且当脉冲信号宽度较窄时,可能因触发到FIFO存储控制信号的延时导致脉冲信号数据无法被FIFO存储。所以在被测信号是窄脉冲信号的,应使用正常触发方式,利用预触发,保证触发时刻的信号数据能够显示出来。
3.4.4时基电路的实现
时基电路是显示示波部分的重要组成部分,它的作用主要是提供AD的采样时钟和FIFO的写时钟。
系统源时钟是由外部晶振提供的标准20MHz频率信号。由于250MHz时钟直接分频产生200MHz时钟将较为繁琐,所以我们利用ALTPLL锁相环模块,分别产生250MHz,200MHz频率信号。将200MHz时钟经过由四个74390和两个T触发器构成的二分频、四分频器组成的分频网络产生所需要的AD采样频率和FIFO写时钟。在功率分析仪的控制面板上有一个时基控制按钮sec/div,不同的时基档位下对应着不同的采样频率。每选择不同的时基档位时,时钟选择信号clk_s0~clk_s3就会输出不同的值以选择与档位相应的采样时钟;当时基控制设置在最高采样率时选择250MHz采样时钟。具体的时基档位与采样时钟以及每个档位下存储深度的对应关系如表3-1.