基于VHDL语言的4位CPU的功能实现与仿真

时间:2022-08-01 09:49:44

基于VHDL语言的4位CPU的功能实现与仿真

摘要:随着芯片的复杂程度越来越高,传统的基于电路图的设计方法已不能胜任,采用诸如VHDL这样的硬件描述语言进行数字电路设计的自顶向下的设计方法――EDA方法应运而生。本文根据CPU所具有的基本功能,用VHDL语言在CPLD上实现CPU功能,并给出源程序。

关键词:VHDL;CPLDCPU

中图分类号:TP312 文献标识码:B文章编号:1009-9166(2008)33(c)-0049-01

CPU因其在各大系统中处于核心位置而在硬件电路设计中备受关注,但因其结构复杂,所涉专业背景多而不被一般人掌握。CPU设计极具代表性,虽发展日新月异,但就其基本原理而言大同小异。VHDL语言是符合IEEE标准的当今世界最为流行的硬件描述语言。下文通过对CPU结构模型的简化,依托综合实验平台,所描述的简易4位CPU,能实现加、减、乘、移位等操作。

一、系统功能设计。精简CPU结构模型,运用Altera公司的MAX7000s系列芯片,依托综合实验板,运用状态机实现了微机指令系统。其指令的分析和执行过程与微机中的CPU相似,能完成简单的算数运算和逻辑运算。

二、设计与实现。(一)、简易4位CPU的基本结构单元。1)程序计数器;2)输入与MAR(Memory Access Register);3)16×8RAM;4)指令寄存器;5)累加器(Accumulator);6)二进制显示(Binary Display);7)B寄存器(B Register);8)输出寄存器(Output Register);9)运算器(Calculater)

(二)、寻址方式介绍。本设计中的4位CPU指令共有8个且可分为两种类型,如下表:

对状态机的主要部分的描述和注释:IF(clk'event AND clk='0')THEN--时钟下降沿触发

IF(run='1')THEN--如果CPU运行信号为

CASE pstate IS

WHEN s0=>nstate

f1:=true;--标志f1置true

IF(breg="00000000")THEN--如果B寄存器值为0

mar

END IF;

WHEN s1=>nstate

IF(breg="00000000")THEN--如果B寄存器值为0

IF(flag=true)THEN --标志为true

pc

flag:=false;--标志flag置false

END IF;--如果不满足条件,是因为正执行多次移位的指令

END IF;--只有移位完才能执行下一条指令,所以程序计数器数值不变

(四)、简易4位CPU功能仿真(加法)。以下是计算10+15+17-20=1C(十六进制加减计算)的VHDL源程序,这部分将写入ROM中:ARCHITECTURE rtl OF ROM16x8_1 IS

BEGIN

dataout

"00011010" WHEN (address="0001" AND ce='0') ELSE

"00011011" WHEN (address="0010" AND ce='0') ELSE

"00101100" WHEN (address="0011" AND ce='0') ELSE

"11100000" WHEN (address="0100" AND ce='0') ELSE

"11110000" WHEN (address="0101" AND ce='0') ELSE

"00010000" WHEN (address="1001" AND ce='0') ELSE

"00010101" WHEN (address="1010" AND ce='0') ELSE

"00010111" WHEn (address="1011" AND ce='0') ELSE

"00100000" WHEN (address="1100" AND ce='0') ELSE

"00000000";

END ARCHITECTURE rtl;

10+15+17-20=1C(十六进制加减计算)仿真波形图如下:

总结:采用自顶向下的设计方法,将复杂的CPU有效划分位状态机模型再进行设计和编程,并用QuartusII软件进行了仿真,最终在MAX7000s综合电路板上验证通过,很好地模拟了CPU的工作过程。但此设计亦有不足之处:1.没有直接实现除法;2.算数没有优先级。另外,综合开发板上的MAX7000s系列性能过低也是制约设计复杂的数字电路障碍之一。

作者单位:北京邮电大学电信工程学院

作者简介:吉祥(1986年-),男,汉族,上海长宁区人,北京邮电大学 电信工程学院2005级电子信息工程本科生。

参考文献:

[1]张亦华,延明.数字电路EDA入门――VHDL程序实例集[M].北京.北京邮电大学出版社.2002

[2]姜立东.VHDL语言程序设计及应用[M].北京:北京邮电大学出版社.2004

[3]付永庆.VHDL语言及应用[M].北京:高等教育出版社.2004

本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

上一篇:发电机氢气纯度超标的研究与治理 下一篇:信号发生器的设计