位置:51电子网 » 技术资料 » 嵌入式系统

基于FPGA的李沙育图形在手持式示波表中实现

发布时间:2008/5/27 0:00:00 访问次数:694

1.引言

  示波器测量频率和相位的方法很多,“李沙育图形法”就是其中用得最多的一种。“李沙育图形法”又称波形合成法,就是将被测频率的信号和频率已知的标准信号分别加至示波器的y轴输入端和x轴输入端,在示波器显示屏上将出现一个合成图形,这个图形就是李沙育图形。李沙育图形随两个输入信号的频率、相位、幅度不同,所呈现的波形也不同。

  早期的模拟示波器显示李沙育图形的原理是将电信号转换为光信号,核心部分是阴极射线示波管(crt)。将输入信号加到示波管内部的偏转系统,高速电子经聚焦、加速和偏转后,打到荧光屏上形成亮点,实现李沙育图形。李沙育图形在数字示波器上显示与在模拟示波器上显示完全不同,输入的两路信号,经采样后变为数字信号,利用cpu做一次算法,通过运算后的数字信号映射到液晶屏上后形成了对应的李沙育图形,此种显示方法也能达到模拟示波器的效果。

  该设计应用于手持式数字示波表,主要部分由高速adc、fpga、arm7和tft_lcd组成,由于成本原因,选用低速处理器arm7,其主频低于50mhz,如果采用常规设计方法,达不到模拟示波器相同的显示效果。利用fpga来实现李沙育图形是该设计的关键所在。

2.fpga设计原理

  由fpga完成李沙育图形,核心在于利用fpga的内部数字逻辑单元实现数据的运算与存储。该系统主要由高速数据采集模块、可编程逻辑器件fpga、微处理器和液晶显示模块等四部分组成,其中显示模块由液晶屏和一块低成本的cpld组成。当两路信号分别接至a、b通道的输入端,经衰减、放大后输入到数据采集模块进行采样。由adc采样回来的信号直接送到fpga,此时数据并不是马上存储到fpga的内部ram模块里面,而是先做一次算法处理,此算法的功能就是利应两路信号的数值大小,计算出在液晶屏上的对应的被点亮的像素点的位置,而屏幕上不同的位置又对应不同的地址,此地址作为fpga内部ram的地址,用来存储对应的像素点是否点亮的信息,因此实际上ram内部存储的数据就是一幅李沙育图形。此数据为二进制数据,都由逻辑信号0、1组成,0对应该像素点不被点亮,1则表示点亮。arm读取这些数据时,ram屏蔽写使能,只有当arm把所有的数据读完后,ram才被重新写使能。可以看到,在arm读取数据的期间,从a、b两通道输进来的信号仍然在往fpga里面传送,为了保证数据不丢失,该设计采用了两块大小相同的ram的乒乓工作模式,即arm在读取ram1的数据时,ram2用来存储输入进来的数据,当读完ram1的数据后,arm转到读ram2的数据,而由ram1来存储输入进来的数据。

3.李沙育图形在fpga内部的实现

3.1fpga内部算法

  为了将纯粹的数字信号转化为对应的李沙育图形,必须从李沙育图形的形成原理来做分析。

  李沙育图形上的每一个点都可以下面两个公式来表示:

x=alsin(ω1t+ψ1)(1)

y=a2sin(ω2t+ψ2)(2)

  由上式可知,李沙育图形实际上是一个质点同时在x轴和y轴上振动形成的,其初始相差值△ψ=ψ2一ψ1,频率比为ω2/ω1。为了在屏幕上达到显示的效果,把实际李沙育图形显示区域(256*200)等分为四个象限,水平中心线为x轴,垂直中心线为y轴。当a、b两通道同时输入进来信号以后,把a通道的数值按由小到大的顺序,从左向右排列,b通道的信号则同理从下向上排列,同时进来的一组信号共同决定了它们所对应的在屏幕上显示的位置,而位置对应了fpga内部ram的地址。其算法可由下面两个公式实现:

add=y×16+x/16(3)

data=x%16    (4)

  在这里add表示ram的地址,data表示相应的ram地址中存储的数据。式(3)中y值的大小表示在垂直方向上的位置,因为前面提到过水平宽度为256个像素点,刚好对应了16个16bit的二进制数据,即屏幕上的一行对应了16个地址单元。y×16可以表示成,y值每加一次,地址增加16。x/16是一个除法求整数的计算,此计算结果代表了这一行的l6个地址中,哪个地址单元将被选中,而此地址单元将用来存储它所对应的屏幕上的16个像素点的状态信息。式(4)中x16是一个求余数的运算,此运算结果刚好代表了在式(3)推算出来的地址对应的16个像素点中,哪个像素点将会被点亮。上面算法是在fpga内部采用verilog语言编程实现。

  3.2ram工作状态和设计实现

  当地址和数据都计算出来后就可以将数据写入ram模块。在本设计中,fpga内部的工作状态都是受arm所控制的,因此实际上arm就是一个调度中心,它控制着整个系统的工作进程。为了保证数据的不丢失,两块ram的乒乓工作模式被分成了四个状态(a:ram1清零、ram2写入;b:ram1写入、ram2读出;c:ram1写入、ram2清零;d:ram1读出、ram2写入),根据arm的工作情况,这两块ram在这四种工作状态中循环转变。其状态流程如图1所示。从流程图可以看到,两块ram呈现交替的工作状态,使数据不被丢失,保证了整体的流畅性。

  在实际的设计中还有下面两个因素需要考

1.引言

  示波器测量频率和相位的方法很多,“李沙育图形法”就是其中用得最多的一种。“李沙育图形法”又称波形合成法,就是将被测频率的信号和频率已知的标准信号分别加至示波器的y轴输入端和x轴输入端,在示波器显示屏上将出现一个合成图形,这个图形就是李沙育图形。李沙育图形随两个输入信号的频率、相位、幅度不同,所呈现的波形也不同。

  早期的模拟示波器显示李沙育图形的原理是将电信号转换为光信号,核心部分是阴极射线示波管(crt)。将输入信号加到示波管内部的偏转系统,高速电子经聚焦、加速和偏转后,打到荧光屏上形成亮点,实现李沙育图形。李沙育图形在数字示波器上显示与在模拟示波器上显示完全不同,输入的两路信号,经采样后变为数字信号,利用cpu做一次算法,通过运算后的数字信号映射到液晶屏上后形成了对应的李沙育图形,此种显示方法也能达到模拟示波器的效果。

  该设计应用于手持式数字示波表,主要部分由高速adc、fpga、arm7和tft_lcd组成,由于成本原因,选用低速处理器arm7,其主频低于50mhz,如果采用常规设计方法,达不到模拟示波器相同的显示效果。利用fpga来实现李沙育图形是该设计的关键所在。

2.fpga设计原理

  由fpga完成李沙育图形,核心在于利用fpga的内部数字逻辑单元实现数据的运算与存储。该系统主要由高速数据采集模块、可编程逻辑器件fpga、微处理器和液晶显示模块等四部分组成,其中显示模块由液晶屏和一块低成本的cpld组成。当两路信号分别接至a、b通道的输入端,经衰减、放大后输入到数据采集模块进行采样。由adc采样回来的信号直接送到fpga,此时数据并不是马上存储到fpga的内部ram模块里面,而是先做一次算法处理,此算法的功能就是利应两路信号的数值大小,计算出在液晶屏上的对应的被点亮的像素点的位置,而屏幕上不同的位置又对应不同的地址,此地址作为fpga内部ram的地址,用来存储对应的像素点是否点亮的信息,因此实际上ram内部存储的数据就是一幅李沙育图形。此数据为二进制数据,都由逻辑信号0、1组成,0对应该像素点不被点亮,1则表示点亮。arm读取这些数据时,ram屏蔽写使能,只有当arm把所有的数据读完后,ram才被重新写使能。可以看到,在arm读取数据的期间,从a、b两通道输进来的信号仍然在往fpga里面传送,为了保证数据不丢失,该设计采用了两块大小相同的ram的乒乓工作模式,即arm在读取ram1的数据时,ram2用来存储输入进来的数据,当读完ram1的数据后,arm转到读ram2的数据,而由ram1来存储输入进来的数据。

3.李沙育图形在fpga内部的实现

3.1fpga内部算法

  为了将纯粹的数字信号转化为对应的李沙育图形,必须从李沙育图形的形成原理来做分析。

  李沙育图形上的每一个点都可以下面两个公式来表示:

x=alsin(ω1t+ψ1)(1)

y=a2sin(ω2t+ψ2)(2)

  由上式可知,李沙育图形实际上是一个质点同时在x轴和y轴上振动形成的,其初始相差值△ψ=ψ2一ψ1,频率比为ω2/ω1。为了在屏幕上达到显示的效果,把实际李沙育图形显示区域(256*200)等分为四个象限,水平中心线为x轴,垂直中心线为y轴。当a、b两通道同时输入进来信号以后,把a通道的数值按由小到大的顺序,从左向右排列,b通道的信号则同理从下向上排列,同时进来的一组信号共同决定了它们所对应的在屏幕上显示的位置,而位置对应了fpga内部ram的地址。其算法可由下面两个公式实现:

add=y×16+x/16(3)

data=x%16    (4)

  在这里add表示ram的地址,data表示相应的ram地址中存储的数据。式(3)中y值的大小表示在垂直方向上的位置,因为前面提到过水平宽度为256个像素点,刚好对应了16个16bit的二进制数据,即屏幕上的一行对应了16个地址单元。y×16可以表示成,y值每加一次,地址增加16。x/16是一个除法求整数的计算,此计算结果代表了这一行的l6个地址中,哪个地址单元将被选中,而此地址单元将用来存储它所对应的屏幕上的16个像素点的状态信息。式(4)中x16是一个求余数的运算,此运算结果刚好代表了在式(3)推算出来的地址对应的16个像素点中,哪个像素点将会被点亮。上面算法是在fpga内部采用verilog语言编程实现。

  3.2ram工作状态和设计实现

  当地址和数据都计算出来后就可以将数据写入ram模块。在本设计中,fpga内部的工作状态都是受arm所控制的,因此实际上arm就是一个调度中心,它控制着整个系统的工作进程。为了保证数据的不丢失,两块ram的乒乓工作模式被分成了四个状态(a:ram1清零、ram2写入;b:ram1写入、ram2读出;c:ram1写入、ram2清零;d:ram1读出、ram2写入),根据arm的工作情况,这两块ram在这四种工作状态中循环转变。其状态流程如图1所示。从流程图可以看到,两块ram呈现交替的工作状态,使数据不被丢失,保证了整体的流畅性。

  在实际的设计中还有下面两个因素需要考

相关IC型号

热门点击

 

推荐技术资料

DFRobot—玩的就是
    如果说新车间的特点是“灵动”,FQPF12N60C那么... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!