f p g a。 的开发流程的第一步是需求分析,在确定要实现的产品功能后,首先要做的就是芯片版卡的选择。 如果产品是一个低功耗的产品,在选择办卡的时候考虑更多的是功耗。如果是一个要求计算速度非常快的产品,在选择办卡的时候考虑更多的是算力。 f p g a。 开发流程的第二步是模块划分,模块划分就是自顶向下的设计思路,在比较复杂的功能开发过程中,需要划分成不同模块进行开发,而不同的模块组合在一起就可以实现整体功能。 f p g a。 开发流程的第三步是 r、 t、 l 级,也就是代码的编写,代码的编写也是对应到不同的模块完成的。 f p g a。 开发流程的第四步是综合前仿真,也称为功能仿真,它涉及到一些不可综合语句编写和一些语法。 f p g a。 开发流程的第五步,综合综合流程有两个目的,一是检查代码内部有没有逻辑上的错误,二是将 r、 t、 l 代码转化为门级 代码,最后都会通过综合转化成门级逻辑电路。 f p g a。 开发流程的第六步,布局布线,在门级电路上添加一些延时,在门级的电路上需要对时间进行一些控制,控制数据什么时候传输,这就需要添加延时。 f p g a。 开发流程的第七步,综合后仿真,也称为持续仿真。 f p g a。 开发流程的第八步,生成二金制代码,也称 流。 f p g a。 的核心是处理数字信号对应的,它只能识别零和一, date, 流就是由零和一构成的,也就是二禁止 f p g a 开发流程的第九步上版验证。
粉丝1.6万获赞2.3万



玩过 ipg 的朋友应该都知道啊, ipg 开发起来非常的麻烦,特别适合基于 cpu 或者是 gpu 这些软件开发,相比比如说我们要玩一个 raspberry pi, 那么直接连上电源,连上外设,然后开始写我们的拍子人去开发就可以了。 但是相比之下啊, ipj 完全是两个概念,传统的开发方法要用特别的硬件设计语言,像 very log vstl 或者是 c's very log, 以及相应的仿真和测试的方法,这个学起来就非常麻烦了。此外呢,还需要用到特别的开发软件,比如说三零四的尾巴豆或者是 witch, 这个也需要大量的学习成本。 就如此啊, ipg 的变异和调试的时间也很长,一个普通大小的这种工业级的 ipg 设计啊,变异时间通常也需要几个小时之久,这个就劝退了很多开发者 应用场上。所以呢, fpj 一直是很多开发者又爱又恨的存在。一方面, fpj 有各种好处,比如说可以用来做并行计算和硬件加速,同时呢功耗又非常低。但是呢,另外一方面呢, ipg 的学习和开发的方法非常的复杂,甚至于繁琐,这个也是制约 fpj 大规模 发展的这种最主要的因素。但是呢,包括 k 二二零在内的科亚系列 su 界的开发方法就有很大的不同了, 我们不需要 ytes, 不需要使用二条语言,而是通过拍森语言进行开发,就能很快的跑起来一个应用。那么对于 kr 二零来说,他还有个非常重要的特性,就是能支持运行机器人操作系统 rose two, 他虽然名字里有操作系统,但实际并不是像 windows linex 那样的操作系统,他更多的是一个中间键和编程框架,包含了一整套开元的软件库和工具, 专门用来做机器人的编程。那么 rose 的作用呢,就是抽象机器人控制和传感器驱动的过程,能让不同的协议和器件之间能够相互通信,那么起到了一个总线的作用,不需要交互协议,所有的控制呢,都用 c 或者是拍死来完成。 接下来呢,我们就一起来看一下啊,如何使用 k r 二六零来开发一个机械臂控制系统。 去年我们玩 k v 二六零的时候啊,用的是三零四的官方势力,那么在很短的时间之内就完成了一个视觉加速器的开发,那么这次呢,用 k 二二六零 我们挑战一下更高难度,想尝试一下实际开发起来是一种怎样的体验,也想体验一下这个 rose two 系统的使用,以及这种开发方式带来的好处。那么机械臂的控制啊,是机器人领域的主要应用之一,我们要实现的功 其实并不是特别的复杂,就是通过摄像头定位不同颜色的小方块,然后呢,通过机械臂对小方块进行抓取和分类放置,我们用的都是现成的机械臂硬件。 智慧军大佬自言一切肯定没办法相比,那么我们这次开发的主要目的其实就是评估 kr 二六零和 ros 系统的硬性,看看他是不是真的像赛凌斯宣传里说的那么好用。 那么我们确定了功能之后,就是梳理出来具体的开发步骤,主要呢就分以下这么几步,第一步,配置 k 二零的无版图环境,我们接下来做的所有开发都是要基于无帮图操的系统,那么所以这一步呢就是基础, 具体的做法呢,可以参考三零四给出的一些步骤。链接呢,我放在了下方的评论区里。不过呢需要注意的是啊,这里需要选择支持 k 二二六零的无光图版本,不能随便下,这个呢就要到三零四的官网找到无光 方图,在操把二十二零四 lts 的这个镜像,确保他支持 kr 零,然后下载并且烧录到 sd 卡里。 稍录好 sd 卡之后啊,就是要把线缆插到 k 二六零上,注意啊,仪态网口不要插错,那同时呢也要插上 sd 卡,连接键盘鼠标上面启动无光图这一步。最后呢就是为无光图设置一下三零四的开发环境,用这里的几个命令就可以了。 好了,第二步就是配置 k 二二六零的 rose two 环境,那么对于 k 二零乌邦图这样的环境来说啊,目前可能只有一种或者是少数几种 rose two 的版本, 那么在安装之前需要先安装一系列的依赖配置员,然后呢再下载 ros 的这种包进行安装,这部分内容我就快进了,所有的命令行和代码 还有文档我们都开元了,有条件的小伙伴啊,可以去试试看。安装好之后呢,可以做一些简单的信息收发的这些测试,没问题的话就证明 rose two 已经正常运行在 k r 二六零上。第三步,在 k r 六零上安装猪皮 live, 方便调试,先下载依赖配置一下,远程登录,然后重启一下就好了。 第四步,搭建机械臂的硬件结构。这一步啊其实独立于 ip 节开发,我们用的呢是现成的机械臂硬件,主要设计一些组装和调试的工作。某宝上其实有很多机械臂开发键在卖,但是呢,大家在买的时候一定要注意问清楚控制接口到底是什么协议,这个我们其实踩了一个大坑,后面呢我们会介绍。 第五步就是开发实际的功能了,功能主要包含两块,一个呢是对机械臂动作的控制,一块呢是通过摄像头进行物体和颜色的识别。那么对于机械臂动作的控制啊,要 通过动作组来实现,每个动作组包含初始化、复位、抓取、转移、放置这五个基本的行动。那么每个行动或者行为的本质其实就是对机械臂力对座机进行控制,比如控制座机旋转的角度和方向等等, 这些都可以通过拍散来进行精确的编程控制。因为我们支持多个颜色的物体啊,在多个区域进行抓取和放置,因此每个行为又包含了很多个动作,比如说同样一个抓取的动作,在不同的区域就要控制座机转动的次数、角度和顺序,这些呢就组成了一个动作组, 那么我们把每个动作都做成了一个函数,然后呢通过不同函数的组合调用,又组成了更高层的函数来完成不同的行为。这样一级一级下来啊,呈现给最上层用户的就是几个可以调用的函数接口,当然了,最后这些都会用 boss 继承起来。摄像头识别的部分是用 open cv 来实现,主要的工作呢有两个部分,分别是颜色识别以及物体中心坐标定位。每个部分具体操作我们就不一一介绍了,我列在屏幕上,感兴趣的朋友们呢?可以暂停或者是截屏保存, 别着急啊。还有第六步,也就是最后一步,也就是把这些分力的功能通过 ros 连接起来,相当于前一步我们做的都是一个一个的砖块,现在呢,可以把砖切成房子了。那么除了识别算法和控制算法, ross 还可以直接驱动摄像头, 并且通过 cv bridge 把摄像头图像传输给识别算法,识别出物体的轮廓和坐标之后自动判断下一步要执行的动作。然后呢,在 ros 里发送给机械币完成执行。
