您的位置 首页 培训

根据FPGA的数字存储示波器对外围芯片的操控规划

数字存储示波器作为测试技术的重要工具,被广泛应用于各个领域,并逐步取代传统模拟示波器。其采样数据是波形运算和分析的基础,直接影响到整个数字存储示波器的准确性。从这点出来,提出采用现场可编程逻辑器件(

数字存储示波器作为测验技能的重要东西,被广泛应用于各个领域,并逐渐替代传统模仿示波器。其采样数据是波形运算和剖析的根底,直接影响到整个数字存储示波器的精确性。从这点出来,提出选用现场可编程逻辑器件( FPGA) 作为数字存储示波器采样操控体系的中心,从芯片间有用帮忙的视点,依据FPGA 规划ARM 接口通讯操控模块和外围芯片驱动功用模块,以FPGA 为中心有用地安排其它芯片,共同完结数字存储示波器数据采样进程,保证数据按需求采样,有用地进步数字存储示波器的采样功率和数据的可靠性。

1 数字存储示波器的整体规划方案

数字存储示波选用双处理器( ARM + FPGA) 的嵌入式体系规划方案,ARM 内嵌WINCE 操作体系,整个采样体系首要在FPGA 里完结,从功用的视点分红采样信息处理子体系与采样操控子体系,本文侧重介绍采样操控子体系的驱动部分,由ARM 接口操控模块与芯片驱动模块组成。如图1 所示:

图1 数字存储示波器整体功用模块图

2 体系驱动模块规划

2. 1 ARM 接口通讯操控模块规划

ARM 接口通讯操控模块为首要的操控模块,如图2 所示。

图2 ARM 接口通讯操控部分功用模块图

参加这个模块而不直接链接两个芯片有以下两点原因:

1) ARM 作为主控芯片的操控模块,引脚数量有限。假如ARM 接口直接与FPGA 接口相连,会占用ARM 过多的接口。

2) ARM 和FPGA 相连的信号线因为存在各种搅扰,有时会呈现毛刺现象,影响丈量作用。

所以为了丈量的安稳精确,需求参加FPGA 和ARM 的接口模块。此模块是本规划的要点也是难点。其原理以下结合图2 来阐明。

ARM 接口通讯操控模块左面为跟ARM 链接的接口,分别为1 路时钟cmd_clk,3 路的指令线cmd_sel[2. . 0],8 路数据线cmd_data[7. . 0]。右边为FPGA 呼应的相关接口,在此不作逐个叙述,下面首要讲术FPGA 与ARM 之间的通讯协议。

cmd_clk 为1 位输出接口,是ARM 与FPGA 的同步时钟,用作同步通讯。

cmd_sel[2. . 0]为3 位输出接口,用作设置cmd_data[7. . 0]的形式挑选。

cmd_data[7. . 0]为8 位输出接口,是ARM 发送到FPGA 的指令或数据。

功用完结方面选用了VHDL 言语,以文本输入作为规划输入,首要运用CASE 与PROCESS 句子,部分程序如下所示。

PROCESS( cmd_clk, cmd_sel) / /进程,对cmd_clk 与cmd_sel 进行改变捕捉。

BEGIN / /进程开端。

IF cmd_clk’EVENT AND cmd_clk = ‘1’ THEN / /捕捉时钟信号上升沿触发。

IF cmd_sel( 2) = ‘1’ THEN / / cmd_sel( 2) = ‘1’时, cmd_data[7. . 0]的输出为数据形式

r_add_add = cmd_data; / /数据赋值

ELSE / / cmd_sel( 2) = ‘0’时, cmd_data[7. . 0]的输出为指令形式

CASE r_add_add IS / /指令查询

WHEN X00 = > IF cmd_sel = 000 THEN r_DAT_DATA_A( 7 DOWNTO 0) = cmd_data; – –

ELSIF cmd_sel = 001 THEN r_DAT_DATA_A( 11 DOWNTO 8) = cmd_data( 3 DOWNTO 0) ;

END IF;

WHEN X01 = > IF cmd_sel = 000 THEN r_DAT_DATA_B( 7 DOWNTO 0) = cmd_data;

ELSIF cmd_sel = 001 THEN r_DAT_DATA_B( 11 DOWNTO 8) = cmd_data( 3 DOWNTO 0) ; END IF;

WHEN X02 = > IF cmd_sel = 000 THEN r_DAT_DATA_C( 7 DOWNTO 0) = cmd_data;

ELSIF cmd_sel = 001 THEN r_DAT_DATA_C( 11 DOWNTO 8) = cmd_data( 3 DOWNTO 0) ; END IF;

WHEN X03 = > IF cmd_sel = 000 THEN r_DAT_DATA_D( 7 DOWNTO 0) = cmd_data;

ELSIF cmd_sel = 001 THEN r_DAT_DATA_D( 11 DOWNTO 8) = cmd_data( 3 DOWNTO 0) ; END IF;

……/ /省掉

WHEN X08 = > IF cmd_sel = 000 THEN r_HC74_DAT_DATA( 7 DOWNTO 0) = cmd_data; – –

ELSIF cmd_sel = 001 THEN r_HC74_DAT_DATA( 15 DOWNTO 8) = cmd_data; – –

ELSIF cmd_sel = 010 THEN r_HC74_DAT_DATA( 23 DOWNTO 16) = cmd_data; END IF;

/ / cmd_sel[2. . 0]的后两位作为数据位数的挑选,这儿可选为8 位、16 位、24 位。

……/ /省掉

WHEN OTHERS = > r_X9313_DATA = cmd_data( 4 DOWNTO 0) ;

END CASE;

END IF;

END IF;

END PROCESS;

本程序是一个进程,当cmd_sel( 2) = ‘1’时,cmd_data[7. . 0]作为数据传输。当cmd_sel( 2) = ‘0’时,cmd_data[7. . 0]作为指令挑选传输。cmd_sel( 1) 与cmd_sel( 0) ,作为发送数据位数挑选,这是因为不同的指令操作,需求不同的数据位数,在这段程序中,有需求发送8 位数据的,有需求发送12 位的数据,有需求发送16 位的数据,还有需求发送24 位的数据,这取决于驱动的芯片所固定的数据位输入格局要求。

2. 2 芯片驱动模块规划

芯片驱动模块的例化组件图,如图3 所示。

图3 芯片驱动模块例化组件

图3 是现已封装好的功用模块,其内部结构如图4 所示。

图4 LTC2620 的接口例化组件图

由此可知,该模块内部还能够有子模块。分别为操控外围三个芯片的驱动,它们是芯片LTC2620、芯片X9313、芯片HC574。这些子模块仅仅一个接口,并非是一个实在的芯片,能够说是一个接口函数以图形化的方法来给调用,让程序结构更佳形象具体,其实它们都是经过VHDL 言语编程程序代码而成的。图4 的左面是输入接口,首要是与ARM 接口通讯操控模块( 图2) 的接口衔接,而右边的是输出接口,当然这些输出接口是FPGA 的I /O 引脚,这才能与实在的芯片相应应的引脚衔接。

下面以芯片LTC2620 为例,阐明其驱动进程。图4 右上角是LTC2620 的接口例化组件,是由VHDL言语生成的,首要是VHDL 的实体部分,首要是界说端口及其特点。

ENTITY LTC2620_comtrol IS

PORT(

clk5m : IN STD_LOGIC;

clr_n : IN STD_LOGIC;

DAT_DATA_A : IN STD_LOGIC_VECTOR( 11 DOWNTO 0) ;

DAT_DATA_B : IN STD_LOGIC_VECTOR( 11 DOWNTO 0) ;

DAT_DATA_C : IN STD_LOGIC_VECTOR( 11 DOWNTO 0) ;

DAT_DATA_D : IN STD_LOGIC_VECTOR( 11 DOWNTO 0) ;

DAT_DATA_E : IN STD_LOGIC_VECTOR( 11 DOWNTO 0) ;

DAT_DATA_F : IN STD_LOGIC_VECTOR( 11 DOWNTO 0) ;

DAT_DATA_G : IN STD_LOGIC_VECTOR( 11 DOWNTO 0) ;

DAT_DATA_H : IN STD_LOGIC_VECTOR( 11 DOWNTO 0) ;

n_CS_LD : OUT STD_LOGIC;

SCK : OUT STD_LOGIC;

SDI : OUT STD_LOGIC) ;

END;

其间n_CS_LD、SCK、SDI 为输出端口,是依据芯片LTC2620 的输入引脚而设定的。芯片LTC2620 引脚图如图5 所示。

图5 LTC2620 引脚图

接口与引脚现已衔接好,但还需求仿真这三个引脚的作业时序。这就需求依据芯片LTC2620 手册阐明来来模仿其时序以及其数据输入格局,为4 位指令+ 4 位地址+ 12 位数据流,共20 位数据,但数据一般以8 位为单位,即一个字节,所以需求发送24 位数据,其间16 位数据流的前4 位都需求作置零处理。LTC2620 时序图如图6 所示。

图6 LTC2620 输入引脚时序图

数据输入格局如图7 所示。

图7 输入引脚数据格局图

接着,运用VHDL 在其结构体部分编写LTC2620 时序,需求规划两个进程来完结,分别是PROCESS( clk5m,clr_n) 进程和PROCESS( load_clk,clr_n,DAT_DATA_A) 进程。

首要界说数据格局,分红三部分,COMMAND( C3 – C0) 、ADDRESS ( A3 – A0) 和DATA ( D11 -D0) ,一共为20 位,要分三个字节发送,即24 位。数据格局界说的VHDL 代码:

CONSTANT CNT_COMMAMD_DATA : STD_LOGIC_VECTOR( 3 DOWNTO 0) : = 0011 ;

/ /COMMAND( C3 – C0)

SIGNAL ADDRESS_DATA : STD_LOGIC_VECTOR( 3 DOWNTO 0) ;

/ / ADDRESS( A3 – A0)

SIGNAL DAT_DATA: STD_LOGIC_VECTOR( 11 DOWNTO 0) ;

/ / DATA( D11 – D0)

依据图6,对时序SCK、SDI、CS /LD 进行界说:

SIGNAL r_n_CS_LD,r_SCK,r_SDI : STD_LOGIC;

内部时钟界说:

SIGNAL r_load, load_clk, load_en : STD_LOG%&&&&&%;

再设定三个进程来模仿图7 的SCK、SDI、CS /LD 三个时序图。

1) 进程1 首要是经过内部时钟生成SCK 时序

代码为:

PROCESS( clk5m, clr_n)

VARIABLE tp : INTEGER RANGE 0 TO 25;

BEGIN

IF clr_n = ‘0’ THEN

tp: = 0; load_clk = ‘0’;

ELSIF clk5m’EVENT AND clk5m = ‘1’ THEN

IF tp 25 THEN

tp: = tp + 1; load_clk = ‘1’;

ELSE

tp: = 0; load_clk = ‘0’;

END IF;

END IF;

END PROCESS;

2) 进程2 首要是设置LTC2620 的8 个输出引脚VoutA – VoutH 与ADDRESS ( A3 – A0) 之间的对应联系,ADDRESS,如表1 所示。

运用CASE 句子完结,代码如下:

CASE state IS

WHEN 1 = > DAT_DATA = DAT_DATA_B; ADDRESS_DATA = 0001 ;

WHEN 2 = > DAT_DATA = DAT_DATA_C; ADDRESS_DATA = 0010 ;

WHEN 3 = > DAT_DATA = DAT_DATA_D; ADDRESS_DATA = 0011 ; WHEN 4 = > DAT_DATA

= DAT_DATA_E; ADDRESS_DATA = 0100 ; WHEN 5 = > DAT_DATA = DAT_DATA_F; ADDRESS_DATA

= 0101 ; WHEN 6 = > DAT_DATA = DAT_DATA_G; ADDRESS_DATA = 0110 ; WHEN 7 = > DAT_DATA

= DAT_DATA_H; ADDRESS_DATA = 0111 ; WHEN OTHERS = > DAT_DATA = DAT_DATA_B; ADDRESS_

DATA = 0001 ; load_en = ‘0’;

END CASE;

3) 进程3 首要是设置DATA ( D11 – D0) 的数据输出,每次需发送24 位数据,其间4 位无用上,给置0 处理,代码如下:

IF r_load = ‘0’ THEN

data( 23 DOWNTO 20) : = CNT_COMMAMD_DATA;

data( 19 DOWNTO 16) : = ADDRESS_DATA;

data( 15 DOWNTO 4 ) : = DAT_DATA;

data( 3 downto 0) : = 0000 ;

……/ /省掉;

end IF;

3 结语

本文具体介绍了运用VHDL 硬件描绘言语,程序编写进程,对两个功用模块进行依据FPGA 的嵌入式体系程序开发。完结了ARM 接口通讯操控模块、芯片驱动模块的程序规划,有用地处理了芯片间之间的通讯与驱动的问题,以FPGA 为中心,有用地完结芯片间的相互协作,为数字存储示波器数据采样供给重要的可靠性。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/peixun/288362.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部