张胜 李方云 曹家庆
摘要:在QuartusII6.0的IDE环境下利用VHDL技术设计并实现了一个基于CycloneⅡ系列的FPGA芯片的16位模型机,能够实现加减乘除算术运算、与或非逻辑运算以及进行算术左右移运算。对模型机各部件设计、编译和仿真成功后,下载到SOPC/EDA实验平台进行测试,达到了预期效果。
关键词:CPU设计;VHDL;Quartus II;FPGA
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2018)13-0275-04
近年来,随着电子设计自动化技术的不断发展,基于现场可编程(FPGA)技术设计嵌入式CPU突破了原有的技术瓶颈,使产品的开发周期大为缩短,性价比也大幅提高。特别是随着硬件描述语言(VHDL)综合工具功能和性能的提高,计算机中许多重要的元器件,甚至是整个CPU都用硬件描述语言来设计和表达,形成了所谓的单片系统——SOC和SOPC。
本文是计算机组成原理课程中综合实验的内容之一,以计算机基本组成和原理为基础,利用EDA中的VHDL技术在CycloneⅡ系列的FPGA芯片上设计、实现一个16位模型计算机,主要侧重于CPU设计,要求能夠实现加减乘除算术运算、与或非逻辑运算以及左右移运算等基本功能。
一、模型机的硬件设计
简易16位模型机模块设计如图1所示,包括的部件有存储器(RAM)、内存缓存寄存器(MBR)、内存地址寄存器(MAR)、控制器(CU)、程序计数器(PC)、指令寄存器(IR)、缓冲寄存器(BR)、累加器(ACC)、乘法寄存器(MR)和运算器(ALU)。图中带箭头的粗线表示模型机的数据流,带箭头的细线表示模型机中的控制信息(CS)。系统将累加器和乘法寄存器一并设计在运算器中。
二、指令系统设计
1.指令设计。系统采用单地址指令结构,指令字包含操作码和地址码两部分,前者描述指令的功能,如加减乘除、与或非、左右移等,后者指明数据在内部存储器的位置。为了简便起见,内部存储器大小设定为256×16bits,操作码和地址码各占8位。系统中指令集如表1所示,[x]表示内存地址为x的内容,例如,指令字(03C8)16表示加指令,其功能是将内存地址C8存储单元的值与ACC的值相加后结果存入ACC中。
2.微指令设计。微指令由操作控制字段(16位)和顺序控制字段(8位)组成。前者是CU产生的16位控制信号,实现对各部件的操作控制,后者通过逻辑判断完成下一条微指令的寻址。微指令中操作控制字段功能分配如表2所示。其中,C[3..0]是ALU的操作选择信号,可控制执行设计的16种算术逻辑操作之一。本系统选用了10种方式,对ACC进行清零、加减乘除、与或非和移位操作。C[5..4]是MBR的输入选择信号,01传入主存信息,10传入ALU计算结果信息。C[7..6]是MAR的输入选择信号,01传入MAR信息寻找下一条数据信息,10传入PC信号寻找下一条指令。C[9..8]是PC的控制选择信号,01是PC+1定位下一条指令地址,10是传入MBR[7..0]的数据地址。C[10]控制是否将缓存高8位信息传入IR,对其进行译码。C[11]控制是否将缓存信息传入BR,对其进行ALU计算。C[12]控制CU是否终止操作,即结束模型机工作。C[15]控制对主存的写和读。通过这些控制信号使模型机按时序正常运行。
3.微程序设计。系统采用微程序控制器对指令进行译码。每条指令对应一个微程序。指令周期包括取指周期(T1、T2、T3三个时钟周期)和执行周期(T4、T5、T6、T7等若干个时钟周期)两部分,各指令对应的微操作如表3所示。
三、系统仿真与测试
逻辑电路的设计与仿真是在QuartusII6.0的环境下完成的,硬件测试平台为杭州康芯电子有限公司在“SOPC/EDA组成原理实验开发系统”上完成。
测试程序代码与数据通过编辑lpm_ram_dq0配置文件ram.mif,并将其保存在与实验电路CPU.bdf工程所在的文件夹中,与实验电路CPU.bdf一同编译后,得到下载文件CPU.sof。ram.mif内容如图2所示,内存地址[00]至[1B]为测试代码,[A0]至[B2]为测试数据。其中,[00]至[1C]测试表1中列示的算术和逻辑命令,[0D]至[17]为计算1—100的整数求和(结果为5050),[18]至[1A]表示将求和的结果除5,用来测试除法指令。
1.仿真测试。设计波形激励文件,进行波形仿真,仿真结果如图3所示。从仿真结果看,达到了预期的设计要求,因文章篇幅限制,图中列示了部分仿真结果。
2.下载至实验平台测试。在SOPC/EDA组成原理实验开发系统上进行FPGA芯片类型的选择、内部电路模式选择及引脚绑定。(1)芯片选择:Cyclone系列的EP1C6Q240C8。(2)时钟信号:clk选用clock2(=4khz),ram_clk选用clock0(=8khz)。(3)内部电路模式:0号电路。(4)Reset信号:键8。(5)数码管:左边高4位为ACC值,右边低4位为BR值。实验结果达到了设计要求。
四、结语
本文利用了VHDL技术设计并实现了一个简易的16位模型机,能够实现简单的算术逻辑运算,让学生能够深入理解计算机的基本组成、内部结构和工作原理,为后续计算机软硬件课程学习打下了良好的基础。由于时间关系,本系统设计仍然存在某些不足,如时序控制、指令系统过于简单、没有考虑运算结果(如溢出、负值、零值等)对控制器的影响等问题,但是该模型机基本能够实现计算机系统中所用的关键指令。
参考文献:
[1]潘松,潘明.现代计算机组成原理[M].北京:科学出版社,2007.
[2]陈嫒,黄贤英.基于EDA技术的定向型计算机硬件设计[J].微计算机信息,2007,23(29):289-291.
[3]徐爱萍,张玉萍,涂国庆.基于VHDL之CPU设计与实践[J].实验室研究与探索,2014,33(5):120-124.
[4]徐志永,李永红.基于FPGA的嵌入式处理器SOC的设计[J].仪表技术,2007,(5):19-21.
[5]陆玲霞,姚维,高健.基于VHDL的FPGA新实验开发——简易处理器实现[J].实验室研究与探索,2013,32(11):269-272.