Ⅰ 我想将算法固化到FPGA芯片中,请教高手解答,有奖!谢谢!
算法,自然是通过逻辑实现的。
所以,您说的算法,也就是把一些固定的逻辑,“固化”在FPGA芯片中、
如果是基于SRAM的FPGA芯片的话,自然是掉电易失的。就跟你的电脑内存一样,掉了电,内存里头的数据都没了。所以这类芯片必须上电配置,可以用外置的PROM或者其他介质作为存储配置信息,当然也可以用电缆下载。
其实也有一些军品和宇航级FPGA采用FLASH或者熔丝与反熔丝工艺的查找表结构,那个自然就不需要上述的配置过程,下载之后就已经“固化”了。
Ⅱ 江湖救急 如何将pid算法 写入单片机中
PID用在温控系统较多,比如这篇论文,你可以参考一下:基于单片机的PID温度控制器的设计 电子毕业设计论文
Ⅲ 怎么才能写一算法,将数据元素x插入到顺序表L的适当位置保持该表的有序性
if(array[i]<=x&&array[i+1]>=x) {k[j++]=array[i];k[j++]=x;}
Ⅳ 这个怎么改才对啊
你的代码,函数在使用前没有声明;
算法也比较烦琐,我重新给你编了个
不知道行不行~!
#include <stdio.h>
int main()
{
char a[6];
int n=0;
printf("Please input n:\n");
gets(a);
char *p = &a[0];
while(*p != '\0')
{
if(*p == '0')
n++;
p++;
}
if(n>5)
printf("Input Error\n");
else
printf("%d\n",n);
return 0;
}
Ⅳ 如何将matlab的算法设计结果映射到芯片设计
这个流程比较复杂,首先你需要将你的算法变成定点的算法,然后考虑将它变成C语言的程序,芯片设计实用verilog或者是VHDL语言根据你的C语言做相应的设计。然后你就可以比对HDL的输出跟matlab的结果了。
Ⅵ 如何用开源飞控Pixhawk进行二次开发
以下所描述的都是针对px4原生固件,此外,由于固件更新过于频繁,本文描述的是15年7月的固件,主要是举例,有改动的话,自己再研究研究吧(后面换cmake编译方式了,改动蛮大)。
既然要做开发,第一步就是搭好开发环境,根据我的经验,最好是在linux环境下编译,这样效率会很快,以前在windows下编译,经常40分钟以上,这样就太影响开发了;
第二步,大概了解下固件的架构,
如果只涉及应用层的开发,那底层的nuttx系统就可以绕过去了,一般,最好先把uorb模块的机制整明白就好了,从uorb入手,了解每个话题的来源以及作用,整理数据流,清楚每个模块之间的关系即可,比如,要实现手动模式,哪些模块互相交互,auto模式,又有哪些模块起作用,
如果涉及相应算法的开发,要学会定位到相应的算法模块,甚至具体到哪些代码,比如,你想试验你的姿态估计算法,那你就将姿态估计模块替换掉即可,不过相应的接口仍需要和px4环境一样,以姿态估计为例,最后要发布你的vehicle_attitude话题,不然无法与其他模块交互;
另外,不要试图在代码中找main函数,那是单片机思维,你只需看启动脚本即可,\ROMFS\px4fmu_common\init.d\rcs;
第三步,针对你的具体情况,定位相应的模块,进行精读研究,虽然模块基本是用C++写的,但是不会C++也没关系,毕竟又不是让你写,本人倒目前为止,也不会C++,配合注释,看明白就好了,比如,整理下mavlink的控制流程;
px4原生固件模块列表:
系统命令程序
mavlink –通过串口发送和接收mavlink信息
sdlog2 –保存系统日志/飞行数据到SD卡
tests –测试系统中的测试程序
top –列出当前的进程和CPU负载
uORB – 微对象请求代理器-分发其他应用程序之间的信息
驱动
mkblctrl–blctrl电子模块驱动
esc_calib –ESC的校准工具
fmu –FMU引脚输入输出定义
gpio_led –GPIOLED驱动
gps –GPS接收器驱动
pwm –PWM的更新速率命令
sensors –传感器应用
px4io –px4io驱动
uavcan –uavcan驱动
飞行控制的程序
飞行安全和导航
commander –主要飞行安全状态机
navigator –任务,失效保护和RTL导航仪
估计姿态和位置
attitude_estimator_ekf –基于EKF的姿态估计
ekf_att_pos_estimator –基于EKF的姿态和位置估计
position_estimator_inav–惯性导航的位置估计
multirotor姿态和位置控制器
mc_att_control–multirotor姿态控制器
mc_pos_control –multirotor位置控制器
fixedwing姿态和位置控制器
fw_att_control –固定翼飞机的姿态控制
fw_pos_control_l1 –固定翼位置控制器
垂直起降姿态控制器
vtol_att_control –垂直起降姿态控制器
最后提一句,多看看官网的说明,另外根据本人的经验来看,由于大框架,代码人家都写好了,通常你要加功能,所修改的也就几行代码而已,举例说明,比如px4固件只能在手动模式解锁,假如我要修改成定高模式解锁
Ⅶ 如何将算法用在实际中
将实际问题抽象成模型,然后对应的算法来解决就行了,比如银行排队的问题就可以用队列来模拟
Ⅷ 关于上位机如何控制pixhawk
商业转载请联系作者获得授权,非商业转载请注明出处。
链接:
来源:知乎
以下所描述的都是针对px4原生固件,此外,由于固件更新过于频繁,本文描述的是15年7月的固件,主要是举例,有改动的话,自己再研究研究吧(后面换cmake编译方式了,改动蛮大)。
既然要做开发,第一步就是搭好开发环境,根据我的经验,最好是在linux环境下编译,这样效率会很快,以前在windows下编译,经常40分钟以上,这样就太影响开发了;
第二步,大概了解下固件的架构,
如果只涉及应用层的开发,那底层的nuttx系统就可以绕过去了,一般,最好先把uorb模块的机制整明白就好了,从uorb入手,了解每个话题的来源以及作用,整理数据流,清楚每个模块之间的关系即可,比如,要实现手动模式,哪些模块互相交互,auto模式,又有哪些模块起作用,
如果涉及相应算法的开发,要学会定位到相应的算法模块,甚至具体到哪些代码,比如,你想试验你的姿态估计算法,那你就将姿态估计模块替换掉即可,不过相应的接口仍需要和px4环境一样,以姿态估计为例,最后要发布你的vehicle_attitude话题,不然无法与其他模块交互;
另外,不要试图在代码中找main函数,那是单片机思维,你只需看启动脚本即可,\ROMFS\px4fmu_common\init.d\rcs;
第三步,针对你的具体情况,定位相应的模块,进行精读研究,虽然模块基本是用C++写的,但是不会C++也没关系,毕竟又不是让你写,本人倒目前为止,也不会C++,配合注释,看明白就好了,比如,整理下mavlink的控制流程;
px4原生固件模块列表:
系统命令程序
mavlink –通过串口发送和接收mavlink信息
sdlog2 –保存系统日志/飞行数据到SD卡
tests –测试系统中的测试程序
top –列出当前的进程和CPU负载
uORB – 微对象请求代理器-分发其他应用程序之间的信息
驱动
mkblctrl–blctrl电子模块驱动
esc_calib –ESC的校准工具
fmu –FMU引脚输入输出定义
gpio_led –GPIOLED驱动
gps –GPS接收器驱动
pwm –PWM的更新速率命令
sensors –传感器应用
px4io –px4io驱动
uavcan –uavcan驱动
飞行控制的程序
飞行安全和导航
commander –主要飞行安全状态机
navigator –任务,失效保护和RTL导航仪
估计姿态和位置
attitude_estimator_ekf –基于EKF的姿态估计
ekf_att_pos_estimator –基于EKF的姿态和位置估计
position_estimator_inav–惯性导航的位置估计
multirotor姿态和位置控制器
mc_att_control–multirotor姿态控制器
mc_pos_control –multirotor位置控制器
fixedwing姿态和位置控制器
fw_att_control –固定翼飞机的姿态控制
fw_pos_control_l1 –固定翼位置控制器
垂直起降姿态控制器
vtol_att_control –垂直起降姿态控制器
最后提一句,多看看官网的说明,另外根据本人的经验来看,由于大框架,代码人家都写好了,通常你要加功能,所修改的也就几行代码而已,举例说明,比如px4固件只能在手动模式解锁,假如我要修改成定高模式解锁
希望可以帮助你,欢迎采纳
Ⅸ px4怎么设定航线
px4地面站设置飞行计划,写入飞控让飞行器自主完成飞行任务。
在地图上点击第一个点,就会出现一个标记点,同时下方会显示出1号标记点的属性,例如执行的动作、GPS坐标等。航点写入成功后,需要飞控切换到AUTO模式才能执行航线。在扩展调参界面,将通道7选项设置为AUT。同时还要将遥控器7通道设置成开关方便使用。
PX4是国内较受欢迎的一款无人机,操作难度不是太高,适合新手上手。