基于MicroBlaze软核的SOPC系统设计
器来实现的,实现以后被传到链接器,生成链接脚本。
1.3.2 通信与同步
利用Shared Memory模块通信是处理器之间最常用的通信方式。其通信接口函数如下:
SHM_WRITEAREA();/*向Shared Memory中写数据*/
SHM_READAREA();/*从Shared Memory中读数据*/
利用Mailbox模块可以实现处理器之间的信息传递和中断。这在软件设计中主要体现在以下代码行中:
XMbox_WriteBloeking();/*向Mailbox中写数据*/
XMbox_ReadBlocking();/*从Mailbox中读数据*/
在软件应用设计中,两个处理器之间的同步是通过Mutex Locks实现的,它的状态有LOCK和UNLOCK之分。Mutex状态的操作主要体现在以下命令行中:
MLOCK(); /*使用之前LOCK*/
MUNLOCK();/*使用之后UNLOCK*/
软件的调试(debug)需要手工地选择处理器,两个处理器不可以同时调试。在XMD Console中的调试命令主要有:
debugconfig-reset_on_run disable/*下载时避免复位*/
dow executable.elf /*下载ELF文件*/run /*运行*/
2 实验结果
本设计采用调试模块分别对两个处理器进行调试,通过超级终端输出测试结果。
2.1 Mailbox的测试结果
通过Mailbox可以实现处理器之间的中断和通信。两处理器首先通过交换字符串“helo BOY”的形式汇合(rendezvous),以此来证明两个处理器的连接情况。在这里,每次发送的数据包为2 044字节,共发送了3个数据包,都能成功地发送。经验证,每次发送的信息量最大为4 096字节,可以重复发送。
2.2 Mutex的测试结果
通过Mutex可以实现两处理器的同步。当两个MicroBlaze处理器访问共享资源时,可以用Mutex核修改临界区域里共享资源的值。临界区域里的值是随着处理器的访问而更新的。在没有输出时处理器会锁定Mutex核,有输出时解锁Mutex核。同步使得控制台的输出结果正确可用,不会出现混乱的状态。
2.3 Shared Memory的测试结果
通过Shared Memory实现处理器之间的通信。处理器O首先向共享存储器中写入一个32位的数据并设置一个共享flag表明数据可用,等待处理器1读取这个数据。然后,处理器1从共享存储器中读取处理器0写入的数据并设置一个共享flag表明它已经读取了这个数据。双处理器会重复这样的过程,直到达到所设置的最大数目12。
结语
本文以MieroBlaze软核为基础,利用XPS作平台来设计双MieroBlaze处理器片上系统,此片上系统可以很好地实现两软核处理器间的通信和中断功能,该系统在Xilinx公司的XUPV5-LX110T开发板上得到实现,在超级终端中得到验证。本设计的优点是把处理器核之间的通信、中断、同步放在了同一系统中进行研究,深入研究了处理器之间的中断控制。下一步要做的工作是更多核的片上系统设计和操作系统移植。
MicroBlaze SOPC 相关文章:
- 双MicroBlaze软核处理器的SOPC系统设计(01-27)
- MicroBlaze在硬件加速中的应用技术(06-05)
- 基于Microblaze软核FSL总线的门光子计数器设计与实现(06-05)
- 全新EDK8.1简化嵌入式设计(06-04)
- 符合ISO/IEC18000-6C标准的RFID读写器数字基带系统设计(06-04)
- 基于MicroBlaze的AXI总线实时时钟IP核设计(12-13)