基于VerilogHDL简单CPU设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于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