基于VerilogHDL的简单CPU设计

时间:2022-04-10 11:01:08

基于VerilogHDL的简单CPU设计

摘要:本文实现了一个基于VerilogHDL的简单CPU,系统由运算器、控制器、译码器、存储器、指令计数器五大模块构成。在对各个模块时序仿真实验的基础上,系统整体功能测试成功。系统具有良好的稳定性和灵活性,指令集易扩展。

关键词:VerilogHDL;CPU;时序仿真

中图分类号:TP334

1 引言

VerilogHDL【1】是一种硬件描述语言(HDL:HardwareDiscriptionLanguage),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。由于Verilog接近C语言的语言规则,适合进行FPGA的开发和教学工作,得到了广泛的应用。

本文基于对CPU的研究,设计并实现了一个基于Verilog的简单CPU,并成功进行了仿真实验。

2 CPU的功能和结构

2.1 CPU的功能

本CPU模型由五大部分组成,分别是运算器、控制器、译码器、存储器、指令计数器。实现了一个简单指令集,包括停机指令,加,减,与,加载,存储等指令。同时能进行数据的存储和管理【2】。

2.2 CPU的结构

图2.2.1 CPU的架构图

CPU的整体结构如上面两个图所示,各个模块协调工作,共同完成CPU的每一次任务。指令格式为“Op+0+OPD1+OPD2”其中op为3位操作码,0为固定位(或者说是没用的一位),OPD1,OPD2为6位操作数的地址(之前已经写入内存)。寻址方式固定为立即数寻址。

3 CPU主要模块的实现

3.1 运算器模块ALU

算术逻辑运算单元ALU。根据输入的6种不同操作码分别实现相应的加、减、与、加载,存储,停机等6种基本操作运算。利用这几种基本运算可以实现很多种其它运算以及逻辑判断等操作:(1)HLT停机操作。该操作将空一个指令周期,即6个时钟周期;(2)ADD相加。该操作将取存储器中的两个数据相加;(3)AND相与。该操作将存储器中的两个数据相与;(4)SUB相减。该操作将存储器中的两个数据相减;(5)LDA读数据。该操作将指令中给出地址的数据放入累加器;(6)STA写数据。该操作将数据写入内存。

3.2 控制器模块control

控制器模块【4】对整个CPU的工作进行控制,决定本次任务要执行什么样的操作。

S0,S1,S2,S3,S4,S5分别控制指令运行中的各个步骤,其中s0有效时取指令,s1有效时译码,s2有效时从内存中读数据,s3有效时启动ALU进行运算,s4有效时写数据入内存,s5有效时pc加1。即这几个输出控制一条指令的整个执行过程。Addsel是用于决定数据的地址来自哪里,为1时从存储器中取数,为0时地址来与pc.Add_en,sub_en,and_en,pass_en为使能信号控制所进行的操作。由输入的opcode决定。

3.3 译码器encoder和存储器memory

译码器能够将代码特定的含义翻译出来,将操作数和操作码分离开来,以完成不同的工作。存储器主要实现:从存储器中读出数据,和将数据写入内存的功能。

WR为写控制端,有效时,把数据写入指定的存储器单元。Rd为读控制端,当有效时,从指定存储单元读数据。Addr为写入或者读出数据的地址。DRout和Grout为把数据读出写入到DR,GR的端口。

4 系统仿真测试

4.1 系统仿真方案

系统测试代码如下:

LDA001010001011

把10和11地址数据加载到GR和DR中

ADD001010001011

把10和11地址里面的数字相加送到GR

STA001100

把GR里面的值存入12地址

SUB001010001011

把10和11地址里面的数字相减送到GR

STA001101

把GR的值存入13地址

AND001010001011

把10和11地址里面的数字相与送到GR

STA001110

把GR的值存入14地址

HALT停止一个周期

LDA001100001101

把12和13地址数据加载到GR和DR中

LDA001110

把14地址里面的内容加载到GR

4.2 测试结果

经过时序仿真,我们观察内存中121314这三个地址中数据的变化即可得出指令是否正确执行。

测试结果是正确的,系统仿真成功。

5 结束语

VerilogHDL作为FPGA开发的优势越来越被人们接纳,本文实现了一个简单地CPU模型,并进行了成功的仿真实验。系统具有良好的稳定性和灵活性,指令集易扩展。

参考文献:

[1]潘松,黄继业.EDA技术实用教程[M].北京:科学出版社.

[2]王爱英.计算机组成与结构[M].北京:清华大学出版.

[3]肖海燕,杨建波.基于硬件描述语言的简单CPU[J].现代电子技术,2011(22):178-181.

[4]周宁宁,刘胜.基于FPGA技术的CPU模型机的设计与实现[J].南京邮电学院学报,2003(1):77-80.

作者简介:刘明达(1991.09.11-),男,山东,本科在读,FPGA开发、密码学;刘晓洁(1992.2-),广东揭东,本科在读,密码学。

作者单位:武汉大学计算机学院,武汉 430072

上一篇:运用CAI破解一年级汉语拼音教学难题 下一篇:若羌红枣效益