基于FPGA的计算机组成原理及探索
【摘 要】计算机组成原理是一门紧密联系硬件的计算机基础核心课程,主要内容包括CPU 设计、存储器层次结构、I/O 设备接口、指令集、系统架构等。通过对FPGA的计算机组成原理探索极大地提高工作效率,FPGA 的可编程特性使得系统的性能改进和扩充变得非常方便和简易。
【关键词】FPGA;组成原理;探索
前言:
近年来已经开始探索使用FPGA(现场可编程门阵列,Field Programmable Gate Array)组织计算机组成原理课程的实验。与传统硬件电路相比,FPGA 具有可编程、高集成度、开发周期短、硬件升级空间大等优点。
一、FPGA 技术的发展现状
FPGA是英文FieldProgrammableGateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输入输出模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分。
FPGA的基本特点主要有:1、采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。2、FPGA可做其它全定制或半定制ASIC电路的测试样片。3、FPGA内部有丰富的触发器和I/O引脚。4、FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。5、FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。掉电后,FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。与FPGA对应的还有DSP处理器,DSP处理器速度虽然很快,并对许多DSP应用来说很有用,但仍有一些应用要求性能再进一步提升,而FPGA提供了更高的性能。FPGA可以生成一个定制硬件设计,从而控制逻辑能够在硬件中实现,不必再利用精确的时钟周期来实现控制功能。此外,通过裁减硬件架构,FPGA可以提供额外的性能。
二、FPGA设计原则
在FPGA设计中,有许多重要的原则和规律可循,掌握这些原则和规律,人们可以设计出许多高性能的电子系统。
(1)硬件原则
硬件原则主要针对HDL代码编写而言的。硬件描述语言,它通过对硬件的抽象,最终实现在芯片内部的实际电路。因此评判一段HDL代码的优劣的最终标准是:其描述并实现的硬件电路的性能(主要是指面积和速度)。评价一个设计的代码水平,主要从设计工程师所构想的硬件实现方案的效率以及合理性来分析。
(2)系统原则
一个硬件系统,通过何种方式进行模块划分与任务分配,使用算法和实现功能,以及FPGA的规模估算、数据接口设计等,具体到FPGA的设计就要求对设计的全局有个宏观上的合理安排。一般来说实时性要求高、频率快、功耗小的功能模块适合使用CPLD实现。而FPGA与CPLD相比,更适合实现规模较大、频率较高、寄存器资源使用较多的设计。
(3)面积和速度的平衡与互换原则
这是在进行FPGA设计时的一个重要原则。这里“面积”是指一种设计所要消耗FPGA/CPLD的逻辑资源的数量,对于FPGA可以用所消耗的触发器(FF)和查找表(LUT)来衡量,更一般的衡量方式可以用设计所占用的等价逻辑门数。“速度”是指设计在芯片上稳定运行,所能够达到的最高频率,这个频率由设计的时序状况决定,和设计满足的时钟周期,时钟建立时间(ClockSetupTime),时钟保持时间(ClockHoldTime)等众多时序特征量密切相关。面积和速度是对立统一的矛盾体。要求一个设计同时具备运行频率最高而且面积最小是不现实的。科学的设计方法是在满足设计时序要求的前提下,占用最小的芯片面积。或者在所规定的面积下,频率更高。
(4)同步设计原则
采用同步时序设计是FPGA设计的一个重要原则。它可以使静态时序分析变得简单而且可靠,能有效地避免毛刺的影响,使设计更加有效,还可以减小环境对芯片的影响。在遵循这一原则的时候,应该尽可能的在设计中使用同一时钟,时钟走全局网络,同时避免使用混合时钟采样数据。
三、基于FPGA的计算机组成原理实验设计
1、基于FPGA的计数器设计
我们安排了一个在FPGA上实现计数器的实验,用Verilog语言编写一段简单的代码实现用FPGA板上的LED灯进行计数的目的。通过这个实验可以初步掌握FPGA分频、计数的原理。
实验流程包括以下几个步骤:①完成逻辑设计部分;②用ISE自带的仿真器进行仿真,确保逻辑无误;③通过ADEPT和USB数据线下载到FPGA实验板上进行功能验证。
2、基于FPGA的简单ALU设计
BASYS2实验板中一共提供8个开关键,实验中需要用2个开关键控制ALU,2个开关键选择输出,因此我们要复用4个开关键。寄存器A、寄存器B、寄存器C没有在FPGA上指定。ALU通过FPGA核心芯片实现,具体的功能要求包括:开关组A用FPGA中的一组4位开关键实现,这组开关键既是寄存器A又是寄存器B的输入源,通过按钮组A实现复用;寄存器A和寄存器B需要具备清零功能和锁存功能,锁存功能不能替代为D触发器的功能,否则结果不能保存在寄存__器中,也就不能在LED中输出。ALU需要实现6种基本操作:加、减、乘、除、移位和清零,并把结果存入寄存器C中。多路选择器由一个开关组控制,可以显示寄存器A、寄存器B、寄存器C和0这4种结果,最终结果需要在FPGA实验板上用LED灯体现出来。
3、基于FPGA的简单CPU设计
(1)预存储指令模块。主要功能是存储一定数目的指令。现代计算机系统中有许多指令的类型,最经典的划分包括RISC、CISC和VLIW等,我们约定指令的类型为32位RISC指令并约定指令格式。
(2)控制器模块。控制器在整个系统中非常重要,负责整个系统的任务调配,而控制器又可以继续细化出以下几个子模块:取指令模块、判断指令类型模块、提取操作数模块和返回操作结果模块。各个模块的功能如下:①取指令模块:控制器需要提供循环取指令的机制;②判断指令类型模块:控制器需要根据对应位上的数字判断指令类型,返回相应的信息给提取操作数模块;③提取操作数模块:根据指令类型提取相应的操作数并把指令类型和操作数送给接下来处理的器件;④返回操作结果模块:等待器件返回最后的处理结果,得到结果后采取对应的操作。
(3)寄存器组模块。寄存器组模块实现的主要功能是模拟CPU内的高速寄存器组。这个模块要实现3个基本操作:寄存器的读写和返回相应的结果给控制器。
(4)ALU模块。ALU模块是整个CPU系统里面的另一个核心,需要实现逻辑计算的功能,包括加减乘除、移位、清零、取反、按位与、按位或、返回操作结果等。多种指令的类型都涉及ALU模块,因此ALU模块也常常是优化的核心。
(5)PC寄存器模块。该模块用来控制需要提取指令的位置。
(6)内存模块。该模块主要功能是模拟CPU的内存功能,提供基本读写和返回结果操作。在实验设计中可以通过建立多个模块实现组合功能,并且实现每个模块间的通信,因此要在控制器中加入一个实例化的模块。在这么多模块中,除了控制器外,其他模块实现的功能都比较独立和简单。控制器需要把时序都调整好并且将每个模块都连接起来,这是实验设计的一个难点。
4结语
基于FPGA的计算机组成原理的探索,加深了对计算机组成的认识,它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点,具有极大地开发价值。
参考文献:
[1]李丽萍,盛琳阳.基于EDA技术的计算机组成原理实验课开放性教学模式研究[J].计算机教育,2010(10):55-57.
[2]杨海钢,孙嘉斌,王慰.FPGA器件设计技术发展综述[J].电子与信息学报,2010,32(3):714-727.
[3]王静霞,朱明程.FPGA技术发展综述[J].中国集成电路,2002(4):1-6.
[4]周宁宁,程春玲.基于FPGA技术的计算机组成原理实验系统[J].现代电子技术,2005(1):23-35.
下一篇:步进电机控制系统设计