将按照上述流程设计的程序在FPGA中进行测试。将FPGA串口和PC机连接,采用115 200波特率连续工作3分钟,收发均无错误字节。本文引用地址:http://www.eepw.com.cn/article/249384.htm

3.1.2 双RAM缓冲机制

由于串口外设的波特率是115 200,属于低速外设,因此在串口数据和DSP之间采用双端口RAM作为缓冲区。由于此FPGA上自带片上RAM,因此可以利用开发环境自带的IP核生成片上双端口RAM,不用额外增加片外RAM器件(图1)。双端口RAM的实体定义和读写时序:

将每个RAM中的最后一个字节作为反映RAM存储状态的状态字。RAM的状态字代表的含义如下:

bit0:1-串口接收到新数据帧 0-无新数据帧;

bit1:1-数据已经被读取 0-数据未被读取;

惯导和导引头向弹载机每6 ms传输一帧数据,将数据存储到双端口RAM中,同时将bit0置‘1’,bit1清零,即RAM状态为“新数据帧未被读取”。由于惯导和导引头的数据不同步,因此DSP每1ms就查询一次RAM的状态字。若接收到新的数据帧(bit0=1),则读取RAM数据,并将“数据被读取”位置1(bit1=1)。这样,惯导和导引头给DSP发送的数据延迟不超过1 ms,可以认为惯导和导引头的数据是实时同步的。

在串口接收数据期间,如果串口和DSP在同一时间操作RAM,可能导致DSP读取到帧错乱的数据。为了保证数据帧的完整,不使两者同时读取RAM,采用双RAM缓冲机制,即为每个串口配置2个双端口RAM的作为缓冲,如图5所示。串口数据接收程序通过查询RAMa和RAMb的状态字,若bit1=1,则将接收到的数据帧存储到对应的RAM中,完成之后将bit0置1,bit1清0,这个周期为6 ms。与此同时,DSP每1 ms查询一次RAMa和RAMb,若bit0为1,则读取对应RAM中的数据帧,同时将bit0清0。bit1置1。串口数据发送过程与接收类似,数据传输方向相反。

采用双RAM缓冲机制,使得串口和DSP不在同一时间访问同一RAM区,避免了错帧和丢帧,同时保证了数据传输的实时性。

3.2 DSP软件设计

DSP软件设计采用模块化设计方式,分为应用层和底层软件两部分。应用层软件主要实现飞控流程和飞控算法;底层软件主要实现数据格式的转换,以便通过DSP总线和FPGA进行数据交换。

3.2.1 应用层软件设计

外部的惯导和导引头6 ms产生一次数据,DSP开启1ms的定时器中断,在中断中每1 ms查询一次双端口RAM的状态字,判断是否有新数据产生,这样采集的数据延迟不会超过1 ms。飞控解算的周期为6 ms,遥测数据发送的周期为12 ms,在定时器中断程序中完成飞控解算和遥测数据发送。

中断服务程序每1 ms运行一次,每次首先查询导引头和惯导有没有更新数据,再读取新数据存储在全局结构体里。每6ms用全局结构体里得到的新数据解算一次飞控指令,得到舵机的输出角度,输出舵控指令,控制舵机。流程如图6所示。

3.2.2 底层软件设计

DSP底层软件主要完成外部数据交换和数据格式的转换。DSP通过XINTF产生读写时序(图2图3所示时序),FPGA也设计与之相匹配的时序完成两者之间的数据交换。

DSP应用层软件使用的是浮点数,而DSP和FPGA之间只能传递二进制数,因此需要按照IEEE标准进行浮点数和二进制数之间的转换。根据IEEE标准,可以用32位,即8个字节表示一个浮点数。如果将代表浮点数的4个字节组合成32位的整型数inte32,进行强制类型转换皆可以得到浮点数,转换函数如下:

将浮点数转换成整型数的方法与此类似。底层软件按照上述方法实现数据转换,供应用层调用。

4 系统验证

弹载机实物设汁制作完成之后可以利用半实物仿真平台进行测试,该半实物仿真平台由上位机、惯导、舵机和三轴转台组成。如图上位机的作用是模拟导弹动力学模型和导引头信息,并控制三轴转台运动模拟导弹姿态。导弹的运动信息由惯导测量之后发送给飞控计算机,飞控计算机根据运动信息解算出舵机控制量控制舵机转动,同时将遥测数据发送给上位机。上位机采集舵机反馈的实际角度,将其代入导弹动力学模型,计算导弹姿态,控制三轴转台,这样就形成了完整的半实物仿真回路。

仿真实验中,首先不接入飞控计算机,由仿真计算机中的控制系统数学模型直接实现控制算法,所得导弹运动轨迹如图8所示;将飞控计算机接入仿真回路,由飞控计算机实现制导控制算法所得运动轨迹如图9所示。

由图8和图9的对比可以看出,飞控计算机接入之后飞控系统工作正常,导弹飞行轨迹基本一致,飞控计算机控制效果理想。

5 结论

文中提出了一种基于DSP+FPGA的飞控计算机设计方法,在半实物仿真系统中验证了其性能,满足设计要求。解决了在多数字弹上设备存在情况下的数据帧实时同步问题。由于FPGA可以通过编程实现各种时序,所以此飞控计算机可以扩展为除了RS422外部接口外的其他多种数字设备接口,满足模块化、通用化的实际应用需求。

通用计算机dsp采用,一种基于FPGA+DSP的通用飞控计算机平台设计相关推荐

  1. skew算法_一种基于FPGA的多通道高速输入信号自动de‑skew算法的制作方法

    本发明涉及高速数据采集技术,更具体的涉及一种基于FPGA的多通道高速输入信号自动de-skew算法. 背景技术: 随着对精度和速率要求越来越高,目前数据采集系统向着多通道和超高速两个方向发展.多通道高 ...

  2. 一种基于FPGA 的1080p 高清多摄像头全景视频拼接的泊车(机)

    < > 一种基于FPGA 的1080p 高清多摄像头全景视频拼接的泊车(机)实时影像系统 一.本发明要解决的实际问题 1. 汽车左右反光镜及后视镜的视角有限,导致车身周围存在盲区,在特殊驾 ...

  3. 基于FPGA的以太网控制器(MAC)设计(中)

    今天给大侠带来基于FPGA的以太网控制器(MAC)设计,由于篇幅较长,分三篇.今天带来第二篇,中篇,以太网控制器(MAC)程序的实现.话不多说,上货. 导读 当前,互联网已经极大地改变了我们的生产和生 ...

  4. 电子技术课程设计基于FPGA的音乐硬件演奏电路的设计与实现

    wx供重浩:创享日记 对话框发送:乐曲电路 免费获取完整无水印论文报告(包含电路图) 文章目录 一.设计任务要求 二.总体框图 三.选择器件 四.功能模块 五.总体设计电路图 六.结束语 一.设计任务 ...

  5. m基于FPGA的积分梳状CIC滤波器verilog设计

    目录 1.算法描述 2.仿真效果预览 3.verilog核心程序 4.完整FPGA 1.算法描述 积分梳状滤波器,是指该滤波器的冲激响应具有如下形式: 其物理框图如图所示: 可见,CIC滤波器是由两部 ...

  6. 一种基于加密域的数字图像水印算法的设计与实现(附Matlab源码)

    一种基于加密域的数字图像水印算法的设计与实现 项目介绍 毕设项目 题目:一种基于加密域的数字图像水印算法的设计与实现 随着数字媒体技术的发展,数字媒体版权的保护得到了越来越多人的重视,数字水印技术作为 ...

  7. 电机控制器,FPGA 硬件电流环 基于FPGA的永磁同步伺服控制系统的设计

    电机控制器,FPGA 硬件电流环 基于FPGA的永磁同步伺服控制系统的设计,在FPGA实现了伺服电机的矢量控制. 有坐标变换,电流环,速度环,位置环,电机反馈接口,SVPWM. Verilog ID: ...

  8. 基于FPGA的永磁同步伺服控制系统的设计,在FPGA实现了伺服电机的矢量控制

    基于FPGA的永磁同步伺服控制系统的设计,在FPGA实现了伺服电机的矢量控制, 坐标变换,电流环,速度环,位置环,电机反馈接口,SVPWM. . . 都是通过Verilog 语言来实现的,具有很高的研 ...

  9. 基于FPGA的永磁同步伺服控制系统的设计,在FPGA实现了伺服电机的矢量控制, 坐标变换,电流环,速度环,位置环,电机反馈接口,SVPWM 都是通过Verilog 语言来实现的

    基于FPGA的永磁同步伺服控制系统的设计,在FPGA实现了伺服电机的矢量控制, 坐标变换,电流环,速度环,位置环,电机反馈接口,SVPWM. . . 都是通过Verilog 语言来实现的,具有很高的研 ...

  10. 基于FPGA的永磁同步伺服控制系统的设计,在FPGA实现了伺服电机的矢量控制, 坐标变换,电流环,速度环

    基于FPGA的永磁同步伺服控制系统的设计,在FPGA实现了伺服电机的矢量控制, 坐标变换,电流环,速度环,位置环,电机反馈接口,SVPWM 都是通过Verilog 语言来实现的 FPGA 硬件电流环 ...

最新文章

  1. 计算机书籍-机器学习导论(原书第2版)
  2. 解决mysql“Access denied for user‘root‘@‘IP地址‘“问题
  3. 华为开源只用加法的神经网络:实习生领衔打造,效果不输传统CNN | CVPR 2020 Oral...
  4. 元素函数编程之美系列之栈和队列1—在O(1)的时间内得到栈的最大或者最小值...
  5. hibernate同时插入两条相同数据(偶尔)原因调查
  6. 分布式键值系统Amazon Dynamo简介
  7. 机器学习博主推荐、博文推荐
  8. js中的类、继承、闭包
  9. Sangmado 公共基础类库
  10. 安卓--selector简单使用
  11. 采用动态解析设置***
  12. linux用usermod修改密码,Linux笔记(usermod命令,用户密码管理,mkpasswd)
  13. Flyweight模式
  14. 什么是全栈工程师,为什么全栈开发用Python,Python web全栈开发究竟有多高薪?
  15. 在j2ee的web项目中,执行文件如excel、word导入,文件路径可以是“C:/Users/user/Desktop/abc/abc.xls”这样的路径吗?还是应该是工程的路径:/WEB-INF/
  16. 安卓开发教你监听手机Home键
  17. 群晖同步数据到天翼网盘
  18. 【Unity开发小技巧】Unity打包IOS端APP
  19. 避难所Android闪退,iOS/安卓版《辐射:避难所》Fallout Shelter攻略:闪退进不去解决办法...
  20. 十四届全国大学生“恩智浦”杯智能汽车竞赛信标组总结(2)

热门文章

  1. Windows XP14个小技巧
  2. C++复合类型-引用变量
  3. js基础-(二)-类和面向对象
  4. Linux安装weblogic报错“u01/app/oraInventory/“ cannot read/execute
  5. idea更换源_在Intelij IDEA中修改阿里Maven源
  6. centos 修改root密码_Liunx 下安装数据库以及修改密码
  7. python飞机大战游戏代码_python实现飞机大战小游戏
  8. java定时器 多线程_Java多线程 定时器
  9. 微信客服系统开发SDK使用教程-给好友发消息任务
  10. Vue 路由的模块化