全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 存储技术 >

基于FPGA 的嵌入式系统程序开发实现对ARM 接口通

时间:2017-11-18 05:47

人气:

作者:admin

标签: ARM  FPGA 

导读:基于FPGA 的嵌入式系统程序开发实现对ARM 接口通信控制模块、芯片驱动模块的程序设计-数字存储示波器采用ARM 与FPGA 双处理器结合的嵌入式系统设计方案,重点介绍在FPGA 中如何实现...

摘要: 数字存储示波器采用ARM 与FPGA处理器结合的嵌入式系统设计方案,重点介绍在FPGA 中如何实现对外围芯片通信与驱动,采用VHDL 语言,以逐层描述的设计模式,分成ARM 接口通信控制模块和外围芯片驱动功能模块,整个设计主要负责接收ARM 的控制指令,根据其指令要求,发送控制命令到其它芯片驱动功能模块,协调整个数据采样过程,确保数据按照如采样率、采样方式、触发方式等参数设置要求进行采样,确保采样数据的可靠性。

数字存储示波器作为测试技术的重要工具,被广泛应用于各个领域,并逐步取代传统模拟示波器。其采样数据是波形运算和分析的基础,直接影响到整个数字存储示波器的准确性[1]。从这点出来,提出采用现场可编程逻辑器件( FPGA) 作为数字存储示波器采样控制系统的核心,从芯片间有效协助的角度,基于FPGA 设计ARM 接口通信控制模块和外围芯片驱动功能模块,以FPGA 为核心有效地组织其它芯片,共同完成数字存储示波器数据采样过程,确保数据按需求采样,有效地提高数字存储示波器的采样效率和数据的可靠性。

1 数字存储示波器的总体设计方案

数字存储示波采用双处理器( ARM + FPGA) 的嵌入式系统设计方案[2],ARM 内嵌WINCE 操作系统,整个采样系统主要在FPGA 里完成,从功能的角度分成采样信息处理子系统与采样控制子系统,本文着重介绍采样控制子系统的驱动部分,由ARM 接口控制模块与芯片驱动模块组成。如图1 所示:

图1 数字存储示波器总体功能模块图

2 系统驱动模块设计

2. 1 ARM 接口通信控制模块设计
ARM 接口通信控制模块为主要的控制模块,如图2 所示。

图2 ARM 接口通信控制部分功能模块图

加入这个模块而不直接链接两个芯片有以下两点原因:
1) ARM 作为主控芯片的控制模块,引脚数量有限。如果ARM 接口直接与FPGA 接口相连,会占用ARM 过多的接口。
2) ARM 和FPGA 相连的信号线由于存在各种干扰,有时会出现毛刺现象[3],影响测量效果。

所以为了测量的稳定准确,需要加入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 语言[4],以文本输入作为设计输入,主要运用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 X"00" = > 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 X"01" = > 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 X"02" = > 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 X"03" = > 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 X"08" = > 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;P

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信