




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
双处理器通信方案的研习与策划
双处理器之间通信方式
目前,基于FPGA的双处理器之间的通信根据通信方式来划分,主要有:共享存储器、邮箱核(mailbox)、串口通讯和DMA等四种方式。共享存储器通信是一种两个处理器之间的堵塞通信方式。在双处理器系统中,可以通过共享片上RAM的方式来实现处理器之间的数据交互。为了防止死锁的发生,需要通过设置标志位或者中断信号的方式,实现双处理器的异步接收或发送。同时发送进程和接收进程必需在两个处理器上成对消失,只有当两个处理器上的发送进程和接收进程同时到来时,两个处理器才能共同退出当前通信进程,进入下一条指令。邮箱核主要供应了两组互斥体,一个用于保证对共享存储器的唯一写访问,另外一个用于保证对共享存储器唯一的读访问。邮箱核结合片上RAM,可以实现双处理器之间的数据交换。邮箱核加片上RAM的组合方式,适合于双处理器之间的单向传输数据,具有实时性好,速度快的优点,但是对于通信的数据构造有一些要求。串口通讯在双处理器之间的数据交换主要是通过串口通信设备完成的。将系统中的处理器分为主设备和从设备,当主设备要读取从设备数据时,就向从设备发送一个读取的指令,从设备接收到指令后将数据发送到主设备中。主设备向从设备写入数据过程也是如此。这种通信方式,对于软件程序方面依靠性较小,但是传输模式单一,存在肯定的延时。DMA方式主要是用于数据量比拟大的状况下,通过对数据整块的处理,能够有效的缩减数据通信占用处理器的时间。
互联模块概要设计
通过对以上双处理器之间通信方式的优缺点分析,结合本系统通信的特点,设计出符合本系统的FIFO互联模块。在该系统中,使用的是定制IP核的方式来设计该模块,在IP核中设计相关的存放器,设计出相关的读写掌握规律。该IP核的设计主要分为以下几个方面。第一是对于系统的非实时局部而言,要在操作系统的层次上,读取FIFO缓冲区数据和将数据写入FIFO缓冲区,保证数据的读取和写入正常。在操作系统中编写该FIFO缓冲区设备的驱动,在驱动中推断该设备的读写状态。其次是对系统的实时局部而言,要在规定的时间内,将数据从该FIFO缓冲区中读取,同时将反应数据在规定的时间内写入到FIFO缓冲区中。通过对该IP核中定义的掌握存放器的读取,实时的推断该FIFO设备的状态,保证准时的读取或写入数据。第三就是要实现对该FIFO缓冲区的互斥访问,保证每次读取或者写入的数据都是完整的,确保数据的精确。通过对缓冲区的大小进展设定,当读或者写完成时,设置掌握存放器中相应的标志位,到达互斥访问的目的。
具体设计
1IP核的设计
该IP核主要的功能一是对写入的数据进展缓冲,二是对输入的数据进展分隔,保证每次读写的数据都是完整的一帧。该IP核在QuartusII环境中顶层模块如图2所示。该FIFO的缓冲区大小为128位,宽度为32。使用了一个读指针READ_POINTER和一个写指针WRITE_POINTER来掌握CPU对该缓冲区的读写,读写指针大小都设置为2。该FIFO的读写数据模型如图3所示。当对该缓冲区进展读或者写操作时,相应的指针发生变化。当读或写指针到达肯定的条件时,就设置相关存放器的状态。当从该缓冲区中读取数据完成时,就将READ_DONE置1,同时将READ_ENABLE置0,将WRITE_ENABLE置1,从而完成读操作,保证读取数据的完整性。同理,当写数据完成了,将WRITE_DONE置1,同时将READ_ENABLE置1,将WRITE_ENABLE置0,完成写操作。这样就可以掌握CPU对缓冲区的读写,保证数据的唯一性。
可以看出通过对读写标志位的推断,可以到达对该FIFO状态的推断,从而掌握读写数据的时机。整个状态的推断和掌握是通过掌握存放器(CONTROL_REG)来实现的,在掌握存放器中推断FIFO可读或者可写状态是由CONTROL_REG[7:6]来掌握的,而向FIFO中每次写入或读取数据的大小是由CONTROL_REG[1:0]来掌握的,系统可以随时读取该存放器来确定FIFO的读写状况。该IP核的掌握存放器构造如图4所示。在QuartusII下进展功能仿真如图5所示。从图5中可以看出,IP核复位后,FIFO的状态是可写的。此时,读取存放器的状态位0x80,说明该FIFO是可写的。将0x2写入到掌握存放器(CONTROL_REG[1:0])中,就确定了FIFO中每帧的大小。读取存放器,为0x82,说明数据已经写入到掌握存放器中。然后向FIFO中写入数据0x12345678和0x87654321后,可以看到WRITE_DONE置1,READ_ENABLE被置1,WRITE_ENABLE被置0,同时写指针WRITE_POINTER也是正确的,此时读取存放器,为0x42,说明写操作完成,数据可读。在后面对FIFO进展读操作可以看出,各个标志位和读写指针都是正确的,可以看到读出的数据为0x87654321和0x12345678。此时,读取存放器中数据,为0x82,说明数据可写。
2FIFO的驱动的设计
在实时局部和非实时局部之间通过FIFO传递数据,非实时局部运行的是Clinux操作系统,需要对FIFO编写驱动。在Clinux下开发FIFO设备的驱动和常规Linux下开发驱动流程一样。在Linux系统中,设备的驱动程序被组织为一组完全不同任务的函数的集合,通过这些函数使得设备操作如同文件一般。在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作一般文件一样对硬件进展操作。如open()、close()、read()、write()等等。Linux主要将设备分为两类:字符设备和块设备。字符设备是指设备发送和接收数据以字符的形式进展;而块设备则以整个数据缓冲区的形式进展。本文中FIFO设备属于字符设备,其设备驱动主要定义一下几个函数初始化完成后,对设备的读写主要是通过调用write_data()和read_data()来实现的。Clinux针对无MMU的处理器做了移植,与Linux使用虚拟内存不同,Clinux采纳真实地址方式,这样操作硬件设备特别便利。SOPC系统把存储设备,IO映射为统一编制的存储设备。
自定义IP核在双处理器中应用
1双处理器平台的搭建
依据设计的需要,构建一个完整的SOPC系统后,才能真正实现双处理器的设计。在SOPCBuilder中参加CPU1和CPU2,一个Timer,定制的FIFO组件以及sdram、flash、JTAG等外围设备。其中非实时局部的CPU1选择NIOSII/f,复位向量设置为flash,特别向量设置为sdram。另外连接CPU1的Timer要选择全功能型(Full-featured),并将该Timer的优先级设置为0。而实时局部的CPU2也要选择NIOSII/f,复位向量设置为flash,特别向量设置为sdram。
2自定义IP核功能验证
将定制的IP组件添参加到系统中,在CPU1上运行Clinux操作系统,CPU2的程序是在NIOSIIIDE环境下运行。在CPU1上运行的程序首先使用函数open()翻开该FIFO设备,然后通过读函数read()和写函数write()区读写数据,从而实现CPU1读取和发送数据。而在NIOSIIIDE环境下,使用查询方式,来读取该定制FIFO数据,使用函数IORD()存器CONTROL_REG的状态,假如为可读的,则执行读操作,假如为不行读,则什么都不执行。写数据也是如此。经过验证,数据都能按时按序到达,该IP核很好的满意了设计的需要。
完毕语
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 软件测试的可用性测试要领试题及答案
- 数据库表设计基本要求试题及答案
- 计算机四级软件测试实务案例汇编试题及答案
- 嵌入式操作系统的选择与实践试题及答案
- 在大型团队中建立高效的文档管理与查询机制试题及答案
- 行政组织改革的回顾与前瞻试题及答案
- 大连小区静默管理制度
- 娱乐会所营销管理制度
- 小学设备使用管理制度
- 冰箱生熟分离管理制度
- 山东健康集团招聘考试真题2024
- 中国2型糖尿病运动治疗指南(2024版)解读 2
- 木材行业火灾事故案例
- 公安机关对旅馆业培训
- 旱地划龙舟课件
- 中医院面试题及答案
- AI技术与可持续发展之间的关系及实践
- 离婚协议两个儿子正版(2025年版)
- 2025年广东省出版集团数字出版有限公司招聘笔试参考题库含答案解析
- 光伏施工安全措施方案
- 2024湖南衡阳县城市和农村建设投资有限公司招聘专业技术人员2人笔试参考题库附带答案详解
评论
0/150
提交评论