历史上的今天
返回首页

历史上的今天

今天是:2025年03月22日(星期六)

2018年03月22日 | 基于32位微处理器AEMB的SoC系统验证平台设计

2018-03-22 来源:eefocus

    SoC芯片的规模一般远大于普通的ASIC,同时深亚微米工艺带来的设计困难等使得SoC设计的复杂度大大提高。仿真与验证是SoC设计流程中最复杂、最耗时的环节,约占整个芯片开发周期的50%~80%,采用先进的设计与仿真验证方法成为SoC设计成功的关键。一个简单可行的SoC验证平台,可以加快SoC系统的开发与验证过程。FPGA器件的主要开发供应商都针对自己的产品推出了SoC系统的开发验证平台,如基于Nios II微处理器的SOPC系统与基于MicroBlaze微处理器的SOPC系统等。它们功能强大,而且配有相应的开发环境与系统集成的IP核。但每个器件厂商的SOPC系统只适用于自己开发的器件,同时需要支付相应的使用费用且没有源代码,所以在学习以及普通设计开发验证中使用起来会有诸多的不便。

 

    本文采用OpenCores组织所发布的32位微处理器AEMB作为SoC系统的控制中心,通过Wishbone总线互联规范将OpenCores组织发布维护的相关IP核集成在目标SoC系统上,构成了最终的SoC验证平台。

    1 AEMB及Wishbone总线介绍

    AEMB是一款高效的开源微处理器软核,在指令上与Xilinx公司针对其器件开发的Microblaze微处理器兼容,而且在结构上还有所增强。它主要有以下特点:

    ①软核设计得非常小,相对于其他的一些微处理器软核,在物理实现上占用较少的硬件逻辑资源;

    ②支持硬件上的多线程,可以有效地执行操作系统相关的代码;

    ③AEMB是在LGPL3下开发的,所以它完全可以作为一个部分嵌入到一个大的设计中,同时非常适合一些科研院所以及高校或者个人用来学习;

    ④支持Wishbone总线规范,可以非常容易地集成其他的一些支持Wishbone总线规范的开源IP核;

    ⑤完全通过一些参数来定义系统的可配置功能,如系统的地址空间和一些其他可选的功能单元;

    ⑥在指令上99%与EDK6.2兼容,可以方便地使用已经非常成熟的开发工具链。

    Wishbone总线规范是一种片上系统IP核互连体系结构。它定义了一种IP核之间公共的逻辑接口,减轻了系统组件集成的难度,提高了系统组件的可重用性、可靠性和可移植性,加快了产品市场化的速度。Wishbone总线规范可用于软核、固核和硬核,对开发工具和目标硬件没有特殊要求,并且几乎兼容目前存在的所有综合工具,可以用多种硬件描述语言来实现。Wishbone总线提供了4种不同的IP核互连方式:

    ◆点到点(point-to-point),用于两IP核直接互连;

    ◆数据流(data flow),用于多个串行IP核之间的数据并发传输;

    ◆共享总线(shared bus),多个IP核共享一条总线;

    ◆交叉开关(crossbar switch),同时连接多个主从部件,可提高系统吞吐量。

    2 SoC系统验证平台总体框架

    SoC系统中主要包含的IP模块有:32位开源微处理器软核AEMB、中断控制器、时钟定时器、Wishbone总线、片上RAM控制器、SDRAM控制器、SSRAM控制器、Flash控制器、UART16550控制器、GPIO控制器。整个SoC系统的总体结构如图1所示。

     

图1 SoC系统总体结构

    为了方便后续开发与应用,本SoC系统中的Wishbone总线仲裁采用了开源的IP软核wb_conmax。其为8×16的结构,即在该Wishbone总线模块中可以使用8个主设备与16个从设备。本系统中使用了8个从设备接口和2个主设备接口。AEMB软核中没有提供时钟定时器与中断控制器,为了正常使用该软核,本系统中加入了中断控制器和时钟定时器,这两个控制器是作为从设备添加进来的。针对一些对存储空间需求很少的应用,系统将片上RAM作为主存储器。然而,FPGA片上存储器的空间是非常有限的,为了能够运行需要大量存储空间的操作系统,以及让系统正常上电启动,就需要外部存储器作为系统的主存储器。所以,系统中还添加了SDRAM、SSRAM控制器及Flash存储器。UART16550控制器和GPIO控制器作为2个从设备连接在系统中。

    3 SoC系统验证平台具体构建

    3.1 AEMB版本的选择与配置

    AEMB软核采用最新的EDK62版本。本设计的目的在于整个SoC系统验证平台的构建,对微处理器性能及整个SoC系统的具体应用性能没有要求。为了简化设计,将AEMB软核中可配置的一些优化选项全部禁掉。这样不仅省去了对FPGA硬件逻辑资源的占用,而且也避免了因一些具体细节使用不当而带来的诸多问题。

    3.2 片上RAM的生成

    为了减少对FPGA逻辑资源的占用,同时又能够满足最基本的启动代码的存放与运行,将片内存储器的大小设为4 KB。使用ALTEra公司的FPGA开发环境QuartusII 9.0中的MegaWizard Plug-In Manager工具,来生成设定大小为4 KB的片上RAM。EDA开发工具生成的片上存储文件仅是具有相关存储器地址、数据及读写控制信号的一个HDL描述文件。为了能够在本SoC系统中使用,需要将其包装成符合Wishbone总线接口的一个从设备,以挂接在系统的Wishbone总线上。

    3.3 片外存储控制器的配置

    在该SoC系统上,片外存储控制器主要有SDRAM、Flash、SSRAM控制器。根据台湾友晶公司的DE2-70开发板上实际存储芯片的需要,对控制器的数据总线宽度与地址总线宽度作相应的修改与定制。一般情况下,SDRAM作为系统的主存储器,Flash用来存储系统的一些固化程序。在对一些实时系统进行时间参数测量的过程中,为了减小程序运行空间中时序的不稳定性影响,一般情况下测试程序都是在SSRAM器件中运行的。

    作为存储器件的物理芯片,数据总线的端口基本上都是双向的,而在片内系统中数据端口基本上都是单向的。这些片外存储控制器在进行物理板级的连接时需要对相应的数据端口作处理。以Flash控制器为例,数据总线的双向I/O口具体实现RTL代码如下:

    其他的存储器(如SDRAM、SSRAM)的数据总线双向I/O的实现,也都是采用这种方法来完成的。


    3.4 中断控制器与时钟定时器的配置

    中断控制器主要用于接收外部中断源的中断请求,并对中断请求进行处理后再向CPU发出中断请求,等待CPU响应中断并进行处理。在CPU响应中断的过程中,中断控制器仍然负责管理外部中断源的中断请求,从而实现中断的嵌套与禁止。在本设计中,中断控制器的逻辑结构如图2所示。所采用的中断控制器主要负责接收片内IP核及片外器件所发出的中断请求,然后根据一定的优先级与规则将中断发送给微处理器。微处理器可以通过设置与读取相应的中断寄存器来管理查看中断优先级与中断状态。     

 

图2 终端控制器逻辑结构

    时钟定时器主要是作为操作系统的时钟滴答定时器,本质上就是一个简单的计数器。在每个系统时钟来到时计数器会自动加1,当计数器的值达到设定数值时便产生1次时钟中断。PTC是OpenCores组织发布的一个支持Wishbone总线接口的脉冲定时计数器。其不仅可以作为时钟定时器,还可以通过配置寄存器的设置产生PWM脉冲输出。本SoC系统中主要是使用PTC的定时器功能。

    3.5 地址空间的分配

    根据DE2-70开发板上各器件的特点与AEMB微处理器的中断例外向量表及wb_conmax的逻辑实现,系统地址空间分配结果为:

     

    4 SoC系统的FPGA综合实现

    针对DE2-70开发板在进行SoC系统的FPGA综合时选用CycloneII系列器件EP2C70F896C6。系统时钟频率预设为50 MHz,不加额外约束条件下进行综合,综合后的逻辑资源占用报告如图3所示。     

图3 SOC系统FPGA综合后逻辑资源使用情况

    通过时序分析报告可知,该SoC系统在满足时序的前提下,系统实际运行频率可达到65.31 MHz。

    5 SoC系统验证平台软件支持

    考虑到SoC验证平台所包含的硬件部件与该平台的具体应用,系统软件主要构成如图4所示。Mini Bootloader负责应用程序从Flash器件向程序运行空间的加载。在DE2-70开发板上,借助于NiosII开发工具与开发板自带的基于NiosII的SOPC硬件系统,烧写Flash很方便。系统启动时可以从Flash开始启动,完成应用程序的拷贝后再跳转到主程序运行的存储器空间。在本系统中,为了使编程更加方便,将拷贝程序放在片上RAM中存储。系统从片上RAM开始启动,完成应用程从Flash到SDRAM的拷贝之后,跳转到SDRAM开始执行应用程序。     

     

图4 SoC系统软件支持

    AEMB微处理器在指令上与MICroBlaze达到99%的兼容,而后者的应用程序及操作系统的开发已经有非常成熟的范例。操作系统的移植主要是完成对硬件地址空间的修改与操作系统一些底层初始化代码的编写。最终在该SoC系统验证平台上完成了μC/OS-II的移植工作。

    结 语

    本文基于32位微处理器AEMB设计了一款SoC系统验证平台,给出了SoC系统经过FPGA综合后的逻辑资源占用情况,以及系统能够运行的最高时钟频率。该平台已在台湾友晶公司的DE2-70开发板上完成了FPGA验证。


推荐阅读

史海拾趣

Altonics公司的发展小趣事

Altonics公司创始人在XXXX年创建了这家公司,初期面临着资金短缺、市场竞争激烈和技术人才缺乏的困境。然而,创始人凭借对电子技术的深刻理解和敏锐的市场洞察力,决定专注于工业自动化控制领域的研发与生产。经过不懈的努力,公司成功开发出一款高性能的自动化控制设备,受到了市场的广泛认可,为公司的后续发展奠定了坚实的基础。

AiT Semiconductor Inc公司的发展小趣事

对于半导体行业来说,产品质量是企业的生命线。AiT公司一直注重质量管理,从原材料采购到产品生产、检测等各个环节都严格把关。他们引进了先进的质量管理体系和检测设备,确保每一件产品都符合高标准的质量要求。同时,公司还建立了完善的客户服务体系,及时解决客户在使用过程中遇到的问题。这些举措使得AiT公司的产品在市场上赢得了良好的口碑和客户信任。

华瓷(Chinocera)公司的发展小趣事

随着公司实力的增强和市场份额的扩大,华瓷开始将目光投向国际市场。公司积极参加国际陶瓷及电子行业的展会,与国际同行交流学习,同时大力推广自身的品牌和产品。通过多年的努力,华瓷的陶瓷材料在国际市场上获得了广泛的认可,成功打入欧洲、北美等高端市场。

浙江东亚电子(DongYa)公司的发展小趣事

浙江东亚电子一直将品质管理作为公司发展的重要基石。公司建立了完善的质量管理体系,从原材料采购到产品制造、销售等各个环节都严格把关。此外,公司还积极参与行业标准和规范的制定工作,不断提升自身的品质管理水平。

Analog公司的发展小趣事

浙江东亚电子注重企业文化的建设,致力于为员工提供一个良好的工作环境和发展平台。公司关注员工的学习和成长,为员工提供持续长效的发展机会和有竞争力的薪酬。同时,公司还积极开展各类文化活动和社会公益活动,增强员工的归属感和凝聚力。

这些故事框架展示了浙江东亚电子在电子行业中发展起来的几个重要方面。通过技术创新、产业布局拓展、国际市场开拓、品质管理提升和企业文化建设等方面的努力,公司不断壮大自身实力,成为行业内的佼佼者。

台湾晶豪(ESMT)公司的发展小趣事

随着电子行业的不断发展,晶豪科技也积极应对市场变化。公司扩大代工厂的晶圆开工规模,以满足不断增长的客户需求。这一举措不仅使公司能够更灵活地应对市场波动,还为客户提供了更稳定的产品供应。同时,随着晶圆开工量的增加,公司的销售额也实现了稳步增长。

问答坊 | AI 解惑

RFID原理介绍及应用

RFID原理介绍及应用.…

查看全部问答>

DIY示波器V2.0 最新进展-04.21

使用了一段时间altera 提供的cyclone开发板,觉得板子上的存储器资源特别充足。 存储器 256-Mbit DDR SDRAM 1-Mbyte同步 SRAM 16-Mbytes闪存 但是外设比较少,比较难进行前期的学习,为了能在示波器开发之前熟悉开发板,我们决定先进行显 ...…

查看全部问答>

关于堆栈溢出?

小弟的开发环境: PMC8387(MIPS)+threadx操作系统 我做了一个实验,一个线程只有1024byte, 但是我生情一个局部变量为1029,系统出现异常, 我想问下系统是如何处理这种异常,又为什么进入 watchdog中断?…

查看全部问答>

大电阻测定

不知各位,有没有做过大电阻测定的电路,电阻在10兆欧以上。…

查看全部问答>

STTIME3问题

Error[Pe020]: identifier "TIM3" is undefined C:\\Users\\shenghua\\Desktop\\LCDDemo(lcd+led+buttom)\\LCDDemo\\project\\main.c 378 为什么  TIM3  没有定义啊?…

查看全部问答>

STM32无刷电机驱动

我的驱动电路是L6390D+STGP10NC60KD,现在用显示波器量LIN,HIN输入正常,现在问题是LVG输出15伏的波型正常,HVG只输出不正常的波形,7-8伏.有没有解答?ST的技术支持,都不知那里找. 下载 (49.45 KB) 2010-6-7 10:30 …

查看全部问答>

PCB板过孔电阻过大什么原因

碰到一个很棘手的问题,整版沉金仍出现一些过孔电阻过大,不知道是不是板厂没沉金而是沉的铜导致过孔氧化电阻过大。 现在2K板子看着慢慢的从良品走向不良品,请问有什么方法解决这个问题,是否是板厂沉金没沉好,还是其他问题导致过孔电阻大,求大 ...…

查看全部问答>

LED照明基础知识培训PPT教材--需者收藏!

replyreload += \',\' + 1371516;这个PPT资料是个讲述LED照明比较基础的知识,是本人收藏的,并非本人制作,发出来,期望做LED照明的新朋友有所启发和收藏!希望对大家有帮助!        LED是一种由半导体材料制成的组件,是一 ...…

查看全部问答>

求助,串口输入数据后用nRF24L01进行无线传输

这个主程序是将要发送的数据直接写进程序中,然后通过nRF24L01进行无线传输,现在需要改成通过串口输入一个数据之后在进行无线传输,该怎么改?求教各位大神!我是新手~~ #include \"stm32f4xx.h\" #include \"usart.h\" #include \"NRF24L01/NR ...…

查看全部问答>