基于CPLD/FPGA的CPU设计

时间:2022-10-12 06:09:30

基于CPLD/FPGA的CPU设计

摘要:在分析CPU选型基础上,确定设计基于CPLD/FPGA的8位字长、RISC、多周期、哈佛架构CPU。通过CPU体系结构设计、CPU指令系统的设计,描述了CPU设计相关问题。

关键词:CPLD/FPGA SOC 指令系统 体系结构

中图分类号:TN702 文献标识码:A 文章编号:1007-9416(2014)02-0162-02

1 引言

随着EDA技术的发展,用硬件描述语言设计以PLD/FPGA为载体进行各种数字电路设计成为一种不可阻挡的趋势,用硬件描述语言设计CPU也成为可能,伴随作为载体的PLD/FPGA技术飞速发展,PLD/FPGA器件内集成成千上万个门,在CPLD/FPGA上不仅可以容纳CPU,还可以CPU工作所需要的电路,发展成为SOC技术,设计实现CPU是这项技术的核心。

SOC技术有多种现成产品,CPLD/FPGA生产厂家多提供SOC解决方案。如Altera为业界提供多种软核处理器,从软核处理器NiosII到ARM和Freescale流行的体系结构[1]。另一CPLD/FPGA生产厂家Xilinx也提供了类似产品。这些SOC最大特点是,它们仅针对各自厂家自己的FPGA产品,没有通用性。而设计可在不同厂家CPLD或FPGA上运行、通用SOC具有现实意义,这就是设计基于CPLD/FPGA的CPU。

CPU设计涉及:CPU类型的选取、CPU体系结构设计、CPU指令系统的设计、CPU设计、CPU检验和CPU应用五个方面内容。

2 CPU设计选型

CPU类型选取涉及四个方面:选择CPU的字长、CPU的指令类型、CPU指令执行的周期类型、CPU架构。

CPU类型按字长分为8、16、32、64位等类型。CPU字长越长,处理数据的能力越强,但所需要的资源越多。

CPU类型按的指令集类型可分为CISC和RISC两类。在进行CPU设计时,CISC和RISC两者的主要区别为指令的长度和指令的多少。相对而言RISC类型CPU指令较少,每条指令的长度相同。选择不同指令类型,会直接影响CPU指令译码部分的设计难度。选择RISC类型CPU时,可以降低指令译码部分的设计难度。

CPU类型按指令执行的时间周期类型可分为单周期和多周期两类。要进行指令执行单周期CPU设计,涉及流水线、缓存等现代计算机设计相关概念,选择多周期CPU则相对简单。

CPU类型按CPU架构分为哈佛架构和普林斯顿架构两类,普林斯顿架构CPU将指令和数据放在同一存储器内,哈佛架构CPU的存储器分为指令存储器和数据存储器两部分。选择哈佛架构可以相对减少指令的条数。

在进行CPU类型的选取时,除考虑涉及四个方面外,CPU的用途也是一个重要的考虑因素,综合考虑,选择设计8位字长、RISC、多周期、哈佛架构CPU。

3 CPU体系结构设计

在确定设计8位字长、RISC、多周期、哈佛架构CPU后,首先要进行CPU体系结构的规划设计。概念上,传统计算机由控制器、运算器、存储器、输入设备、输出设备五部分组成,控制器和运算器被制作在一起,称为CPU。CPU体系结构设计主要是运算器部分的规划,CPU设计主要是控制器设计、运算器中ALU部分设计、运算器数据通道的设计。

运算器部分是各种指令的执行、完成场所。要完成各种操作,CPU必须包括通用寄存器、标志寄存器、指令指针、指令寄存器、堆栈栈顶指针、内总线、输入输出端口等部分组成。本CPU运算器各主要部分如表1。输入输出端口理论上可以看成特殊寄存器。

4 CPU指令系统的设计

在确定设计8位字长、RISC、多周期、哈佛架构CPU及其体系结构后,接着要进行CPU指令系统的设计。指令系统的设计包括三个方面:指令系统、寻址方式、机器指令设计。

4.1 指令系统与寻址

本CPU的寻址方式只有立即寻址、直接寻址和寄存器间接寻址三类。指令系统共36条指令,分为数据传输指令、算术指令、逻辑指令、转移指令、子程序指令五类。

(1)数据传输指令。数据传输指令共7条,实现立即数到通用寄存器、acc与通用寄存器间、直接地址与acc间、直接地址与acc间、通用寄存器指示的间接地址到acc、程序空间到ACC的数据传递。(2)算术指令。算术指令仅有加、减两种,共4条指令。每种运算由立即数与acc、通用寄存器与acc两条组成。传统的带进位运算没有提供,可以靠进位条件转移与立即数1与acc运算两条实现。(3)逻辑指令。逻辑指令包括逻辑运算、移位运算、比较测试运算组成,共有13条指令。逻辑运算有and、or、xor、not四种,共有7条指令。其中and、or、xor指令的操作数为acc和立即数、acc和通用寄存器,not指令的操作数只有acc。移位运算由逻辑左移和逻辑右移一位指令组成,移位对象为通用寄存器,不用制定移位次数。共有2条指令。比较测试运算只有比较、测试指令组成,共有4条指令。比较测试运算操作数为acc和立即数、acc和通用寄存器。(4)转移指令。转移指令包括条件转移和无条件转移两类,共7条指令。条件转移测试进位标志位、零标志位、奇偶标志位,为0或为1进行转移,共6条。(5)子程序指令。子程序指令由子程序执行有关的5条指令组成。包括子程序调用指令、子程序返回指令、中断返回指令、通用寄存器压入堆栈指令、弹出堆栈给通用寄存器指令。

4.2 机器指令设计

机器指令设计主要涉及指令操作码、寄存器编码两方面。指令操作码是各条指令的数值标识,指令操作码依指令是否含有存储器地址操作,分为操作对象有存储器地址、无地址操作两类进行编码。

(1)有地址操作的指令编码。有地址操作的指令共有12条指令,它们的指令操作码为4位,从二进制0000至1011,占用16位机器指令的D15-D12,操作码后跟12位地址值,占用16位机器指令的D11-D0,其中通用寄存器指示的间接地址到acc的数据传输指令,12位地址值为任意值。(2)无地址操作的指令编码。无地址操作的指令共有24条指令,指令操作码都以二进制11开始,占用16位机器指令的D15-D14。此类指令可以分为三类:隐含地址操作指令、带立即数指令、其他指令。1)隐含地址操作指令编码。隐含地址操作指令指子程序返回、中断返回、压栈、出栈四条指令,它们的操作对象都隐含存储器。隐含地址操作指令16位机器指令的D13-D12值取二进制11,D11-D8依次取二进制0000至0011以区分各条指令;子程序返回、中断返回指令没有操作数,D7-D0取0000000;压栈、出栈指令D7-D3取00000,D2-D0分给寄存器编码。2)带立即数指令编码。带立即数指令的源操作数是立即数,它们机器指令的D13-D12取二进制00,D11-D8依次取二进制0000至1011以区分不同指令,D7-D0分给立即数。3)其他指令。此类指令分为双操作数和单操作数两种,它们机器指令的D13-D12取二进制01,D11-D8依次取二进制0000至1011以区分不同指令,D7-D6取二进制00,D5-D3分给目的操作数acc,D2-D0分给源操作数。对于not、左移、右移指令D7-D0取二进制00000000。

4.3 寄存器编码

寄存器编码采用3位,标识5个8位寄存器。

CPU的体系结构设计与指令系统的设计互为关联,CPU在上结构的改变,必然引起指令系统的调整,反之亦然。CPU的体系结构设计和指令系统在设计时,要反复调整。

本CPU没有设计对SP寄存器的读写操作,CPU初始化是SP寄存器被设置为0XFFF,PC初始化值从0X001开始,地址0X000是中断程序的入口地址,放置一条JMP指令转入真正的中断服务程序。

5 CPU设计、检验及应用

CPU采用Verilog HDL进行描述,将设计分成运算器、控制器两部分,运算器由ALU、寄存器、存储器接口组成。控制器通过读取指令暂存寄存器数据,再通过译码、执行、写结果等阶段,完成指令的执行。

CPU的检验没有采用传统的仿真方法实现,采用指令编写汇编程序的方法进行。再通过数码管、VGA、PS/2、A/D、D/A等简单实验实现CPU检验及应用。

6 结语

典型的计算机平台有更多的寄存器、更多的数据类型、更强大的ALU、更丰富的指令集。然而,这些主要还是数量上的区别[2]。现在流行的CPU设计,它们多基于FPGA来实现,本设计由于采用通用设计,可在CPLD或FPGA上实现,并且不依赖于固定公司的CPLD或FPGA产品,这是本设计的最大优点。

参考文献

[1]附加处理器.http://.cn/devices/processor/additional/ipm-index.jsp.

[2]尼萨,周维译.计算机系统要素:从零开始构建现代计算机[M].北京:电子工业出版社,2007.p6.

上一篇:摇摆不定是HTC的最大失误 下一篇:中国大学如何出世与入世