在线刊号(2278-8875)印刷版(2320-3765)
Mukesh P. Mahajan, Pramod S. Aswale和Vivek D. Ugale 印度马哈拉施特拉邦纳西克SITRC ETC系助理教授 |
有关文章载于Pubmed,谷歌学者 |
更多相关文章请访问国际电气、电子和仪器工程高级研究杂志
在基于FPGA的嵌入式应用中,特定应用的软处理器核心越来越重要,用户可以根据需要配置处理器。ARM处理器架构的简单性使其适用于低功耗应用。硬件描述语言(HDLs)是构建硬件系统的常用语言。FPGA提供了可重构的平台,因此复用设计是目前提高工作效率的普遍做法。本文采用超高速集成电路硬件描述语言(VHDL)实现了ARM处理器的数据处理指令,并在Xilinx公司基于Spartan III的FPGA上使用测试台进行了验证。
关键字 |
ARM, VHDL, FPGA,数据处理指令。 |
介绍 |
Arm处理器具有大的统一寄存器文件,加载/存储架构,其中数据处理操作只对寄存器内容进行操作,而不是直接对内存内容进行操作。简单的寻址模式,所有的加载/存储地址都是从寄存器内容和指令字段中确定的,只有统一和固定长度的指令字段,以简化指令解码[5]。ARM处理器被特别设计成小尺寸,以降低功耗和延长电池运行时间。ARM架构在每条数据处理指令中都提供了对算术逻辑单元(ALU)和移位器的控制,以最大限度地使用ALU和移位器加载和存储多个,以最大限度地提高数据吞吐量。这些对基本RISC架构的增强使得ARM处理器能够在高性能、小代码大小和低功耗之间取得良好的平衡。[4]基于FPGA的设计缩短了上市时间,增加了设计的灵活性和适应性,优化了设备利用率,节省了更少的板空间和系统功率,这在ASIC芯片中往往是不可能的。在此思路下,本文总结了我们在Xilinx基于Spartan III的FPGA上开发ARM处理器VHDL软核的最新进展。在FPGA上实现全功能ARM处理器软核的一个优势是在实现各种应用时实现完整的硬件定制。 |
相关工作 |
在ARM处理器中集成了硬件调试技术,使程序员可以看到处理器在执行代码时所发生的情况。通过这种方法,程序员可以非常快速地解决问题,缩短上市时间和整体开发成本。由于在嵌入式系统中应用的种种限制,ARM并不是纯粹的RISC架构。如今,速度不是主要的限制,但功耗和成本效益的解决方案也发挥着至关重要的作用。 |
在[1]中ARM软处理器核心实现了在FPGA背景下基于多处理器的SOC应用。所有32位指令均采用单周期数据路径和基于随机逻辑的指令解码器实现。实现了数据处理指令、算术指令、分支指令、逻辑指令和比较指令。[2]提出了虚拟ARM仿真平台,并讨论了如何使用它来减少设计时间和成本。 |
系统模型和假设 |
ARM架构被设计为允许任何小型的高性能实现。ARM处理器架构的简单性导致了非常小的实现,而小的实现允许设备具有非常低的功耗。ARM是精简指令集计算机(RISC),因为它包含了典型的RISC体系结构特征。所提出的处理器架构如图1所示 |
所提议的体系结构的主要组件是 |
1.包含16个32位寄存器的寄存器文件。 |
2.桶移位能力移32位右/左,算术/逻辑。 |
3.转子有能力旋转8位数据右/左。 |
4.转换转子8位输出到32位。 |
5.选择两个32位输入之一的多路复用器。 |
6.算术逻辑单元(ALU),用于执行数据处理指令 |
7.根据指令控制所有块的控制单元。 |
![]() |
数据处理说明 |
所提出的工作实现了ARM处理器的数据处理指令。只有当条件为真时,才执行数据处理指令。数据处理指令的指令格式如图2所示。该指令通过对一个或两个操作数执行指定的算术或逻辑运算来产生结果。第一个操作数总是一个寄存器(Rn)。根据指令中I位的值,第二个操作数可以是移位寄存器(Rm)或旋转8位立即值(Imm)。根据指令中S位的值,CPSR中的条件代码可以保留或更新为该指令的结果。 |
![]() |
某些操作(TST、TEQ、CMP、CMN)不将结果写入Rd。它们仅用于执行测试和设置结果上的条件代码,并且始终设置S位。 |
所提出的指令集如图3所示 |
![]() |
它包含以下操作的说明。 |
•算术运算。 |
•比较。 |
•逻辑操作。 |
•寄存器之间的数据移动 |
这些指令只能在寄存器上工作,不能在内存上工作。它们分别对一个或两个操作数执行特定的操作。第一个操作数总是寄存器Rn,第二个操作数通过桶移位器发送到ALU。 |
实施与结果 |
1.寄存器文件 |
![]() |
它包含16个32位的寄存器,因为我们使用的是用户模式,所有的寄存器都可以被用户访问。寄存器文件实体及其仿真结果如图4和图5所示。 |
![]() |
2.桶移装置 |
![]() |
该桶移位器有一个32位输入被转移。这个输入来自于寄存器文件。移位器有来自控制单元的其他控制输入。指令中的移位场控制着筒形移位器的操作。图6为筒形移位器的实体表示。 |
![]() |
上图为筒形移位器左算术移位的仿真结果,右算术移位的仿真结果相似 |
3.旋翼和旋转: |
![]() |
转子实体如图8所示。它具有向右或向左旋转8位数据的能力。输入来自通过控制单元的即时指令场中包含的即时数据。转子输出为8位;它被转换为32位空值 |
![]() |
转子左侧操作的仿真结果如图9所示。Cocantation运算的仿真结果如图10所示。对右旋转也进行了仿真。 |
![]() |
4.多路复用器 |
![]() |
它从两个32位输入中选择一个,来自桶移位器和Cocantation输出,给出结果给ALU。多路复用器的实体表示如图11所示。它还执行直接从用户或ALU数据Rd的输出中选择数据存储回寄存器文件。 |
![]() |
6.算术逻辑单元(ALU) |
![]() |
ALU有两个32位输入。第一个来自寄存器文件,而另一个来自移位器。ALU输出存储在寄存器文件的Rd位置。ALU有一个4位功能总线,最多允许实现16个操作码。不同的操作码及其对应的算术和逻辑操作在操作数上执行。图13和图14。给出了算术逻辑单元的实体和仿真结果。 |
![]() |
7.控制单元 |
![]() |
控制单元获取32位指令,并向体系结构中的各个模块提供控制信号。控制器根据当前指令向硬件提供输出多路复用控制、ALU函数、寄存器读写、标志、移位字段、旋转值等控制信号。实体及仿真结果如图15、图16所示。 |
![]() |
所有的结果都是使用Xilinx的ISE 8.1i工具获得的。为实现选择的目标设备是来自Spartan III家族的3s500ecp132- 5。 |
结论及未来范围 |
利用Xilinx的ISE工具在Spartan III FPGA上合成、仿真并实现了ARM软核处理器的数据处理指令。所有模块的代码都是使用VHDL编写的,并通过应用测试台进行测试。所有模块均按预期运行良好。在今后的工作中,有很多地方可以改进和进一步发展。因此,嵌入式FPGA中的ARM处理器可以用于DSP和图像处理等不同的应用。该设计可以嵌入到高端FPGA器件中,以获得更好的性能。可重构的ARM核心可用于工业验证平台。 |
参考文献 |
|