Board从入门到精通(五):软硬件协同设计

zynq最大的优势在于,同时具备软件、硬件、io可编程,即all programmable。在设计zynq过程中,同样要建立一种意识,就是从原来单纯的软件思维(或单纯的硬件思维)中解脱,转向软硬件协同设计的开发方法。
软件设计,即基于arm的软件开发,我们第三节里面已经做过例子了,基本就是通过某一硬件地址映射寄存器与相应的硬件进行交互,这类硬件包括arm外设如gpio,emio,spi,timer等,也包括挂载到axi总线上的pl。除此之外,软件还要处理好诸如操作系统、网络等高层任务。
硬件设计,即基于fpga的逻辑开发,主要通过实例化一些现成的ip,利用状态机实现自身逻辑功能,然后实现axi接口与arm进行通信。
将软硬件结合进行设计,需要axi总线。我们反复强调了axi的重要性,可以说它决定了软硬件协同设计的成败。
关于zynq的网络教程也有很多了,像懒兔子的 ,笔者初学zynq时是按照他的教程一步步做实验的。本教程不会重复这些步骤,而是帮助初学者建立一个框架,剩下的就是自己通过查文档、做实验去填充这些具体内容。
我们大体划分一下zynq开发的框架:
首先是需求分析,确定要做什么;之后将任务进行细分,一般可以看哪些适合在fpga上实现,单独提出;剩下的则用ps。接着选择通信接口,物理链路选择gp或hp或acp,协议选axi-lite,axi-fifo或axi-stream。划分完毕,则逻辑工程师与arm工程师从这里分道扬镳,按照各自任务进行实现。
逻辑工程师需要集中精力做ip设计,将功能集成到一个用户ip中,并留出通信接口与axi通信。
arm工程师则根据需求建立arm裸机软件工程或基于嵌入式linux的工程,前者开发周期较短,后者功能较强但需要为linux做很多准备工作(引导,内核,文件系统,驱动,图形界面开发等)。虽然基于嵌入式linux的开发看上去很“酷”,但我们要把握好分寸,能用裸机实现的坚决不用操作系统,否则只会劳民伤财。
各自开发工作完成后,进入联调,arm通过读写pl映射寄存器来查看相应功能是否正常,如果不正常则需要返工修改,反复测试,直到解决问题为止。

果粉想要的功能iOS10.3曝光
1-7月东风汽车新能源汽车销量同比增长206.2%
60余位企业家探寻PCB新机会!
如何确定GaN电源的质量和可靠性
英特尔坚持物联网进化的原因是什么
Board从入门到精通(五):软硬件协同设计
电动汽车悬架动态特性仿真
西门子S7-200如何实现工作台往复运动
用于肌红蛋白检测的时间分辨荧光侧流层析技术
白光LED串联和并联连接方式介绍
一种3G移动视频监控系统设计与实现
智慧医疗不仅仅是“医院的事” 国内首个放射影像数据库建设启动
领存S2500系列高性能盘位双控存储阵列亮相
华为依靠云操作系统稳居中国服务器虚拟化市场第二
最新成果:第一块可再充电太阳能电池问世!
MediaTek发布天玑9000移动平台,携创新科技步入旗舰新世代
化身交警上岗 智能机器人开创智慧交通
英特尔CEO:加速IDM 2.0转型,推进代工服务发展
军事平台的关键任务和生命网络弹性
工业焊接机器人有哪几种焊接工艺