利用FPGA和CPLD技术实现8位RISC微处理器的设计并进行仿真分析

20世纪80年代初兴起的risc技术一直是计算机发展的主流,risc微处理器的一些基本理论则是计算机领域的重要基础常识,但具体实现仍有难度。电子设计自动化(electronic design automation,简称eda)是现代电子设计的核心技术。利用eda技术进行电子系统设计的主要目标是完成专用集成电路(asic)的设计,而现场可编程门阵列(fpga)和复杂可编程逻辑器件(cpld)是实现这一途径的主流器件。现场可编程通用门阵列(field program mablegatearray,简称fpga)的内部具有丰富的可编程资源。fpga外部连线很少、电路简单、便于控制。fpga目前已达千万门标记(10million-gatemark),速度可达200~400mhz。本文介绍了一种基于fpga技术用vhdl(vhsichardw are description language)语言实现的8位risc微处理器,并给出了仿真综合结果。
微处理器功能、组成及指令集
本文设计的risc微处理器遵循了risc机器的一般原则:指令条数少而高效、指令长度固定、寻址方式不超过两种、大量采用寄存器、为提高指令执行速度、指令的解释采用硬联线控制等等。
risc微处理器的功能和组成
微处理器是整个计算机系统的核心,它具有如下基本功能:指令控制、操作控制、时间控制、数据加工。本文设计的微处理器主要由控制器、运算器和寄存器组成,还包括程序计数器、译码器等一些其他的必要逻辑部件。控制器是发布命令的“决策机构”,即完成协调和指挥整个计算机系统的操作。相对于控制器而言,运算器接受控制器的命令而进行动作,即运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件。存储器是记忆设备,存储单元长度是8位,用来存放程序和数据。
微处理器的指令集
微处理器的指令长度为16位定长,每条指令占两个存储单元,寻址方式仅有立即寻址、直接寻址两种。该risc微处理器选取了使用频度较高的8种指令lda、sto、jmp、add、and、xor、skz、hlt等。指令操作码占用指令字的高4位,预留了空间,便于以后指令集的扩展。指令周期是由8个时钟组成,每个时钟都要完成固定的操作。部分典型指令的操作流程图如图1所示。
图1 部分指令操作流程
关键模块的设计
risc微处理器是一个复杂的数字逻辑电路,但其基本部件的逻辑并不复杂,可以把它分为时钟产生器、指令寄存器、累加器、算术逻辑单元、数据控制器、状态控制器、程序计数器、地址多路器等单元来考虑。在硬件验证时还需要建立一些如rom/ram和地址译码器等必要的外围器件。以下是几个关键模块的设计。
时钟产生器的设计
图2 时钟产生器电路的设计
时钟产生器pulse产生的电路如图2所示,计算机的协调动作需要时间标志,它用时序信号体现,时钟产生器正是产生这些时序信号的器件。图2中时钟产生器利用外来时钟信号clk产生一系列时钟信号clk1,fetch,aluclk等,并送往微处理器的其他部件。rst控制着微处理器的复位和启动操作,当rst一进入高电平,微处理器就结束现行操作,并且只要rst停留在高电平状态,微处理器就维持复位状态。rst回到低电平后在接着到来的fetch上升沿启动微处理器开始工作。
由于时钟产生器对微处理器各种操作实施时间上的控制,所以其性能好坏从根本上决定了整个微处理器的运行质量。本设计采用的同步状态机的设计方法,使得clk1,fetch,alu_clk在跳变时间同步性能上有显著提升,为整个系统性能的提高打下良好的基础。
状态控制器的设计
状态控制器的电路图如图3所示。从实现的途径看,risc微处理器与一般的微处理器的不同之处在于,它的时序控制信号的形成部件是用硬布线逻辑实现而不是采用微程序控制。由于器件本身设计比较复杂,且对各个控制信号的时序有严格要求,所以其vhdl程序用有限状态机fsm来实现。
图3 状态控制器电路
结构体程序如下:
architecturertlofstatctlis
typemystateis(st0,st1,st2,st3,st4,st5,st6,st7);
signalcurstate:mystate;
begin
process(clk1,ena)
begin
iffallingedge(clk1) then
if(ena=’0’)then
curstate《=st0; incpc《=’0’;
load_acc《=’0’; loadpc《=’0’;
rd《=’0’; wr《=’0’; loadir《=’0’;
datactlena《=’0’; halt《=’0’;
else
case curstate is
when st0 =》。..。..
when st1 =》。..。..
when st2 =》。..。..
when st3 =》cur_state《=st4;
if(opcode=hlt)then.。..。.
else.。..。.
whenst4=》curstate《=st5;
if(opcode=jmp)then.。..。.
elsif(opcode=addoropcode=ann
oropcode=“xoooropcode”=lda)then
elsif(opcode=sto)then.。.else.。.
when st5 =》curstate《=st6;
if(opcode=addoropcode=annor
opcode=“xoooropcode”=lda)
then.。..。.
elsif(opcode=skzandzero=’1’)
then.。..。.
elsif(opcode=jmp) then.。..。.
elsif(opcode=sto) then.。..。.
else.。..。.
when st6 =》curstate《=st7;
if(opcode=sto)then.。..。.
elsif(opcode=addoropcode=ann
oropcode=xoooropcode=lda)
then.。..。.
else.。..。.
when st7 =》curstate《=st0;
if(opcode=skzandzero=’1’)then.。..。.
else.。..。.
when others=》。..。..
endcase;
endif;
endif;
endprocess;
endrtl;
算术逻辑单元alu的设计
alu是绝大多数指令必须经过的单元,所有的运算都在算术逻辑单元alu进行。alu接受指令寄存器ir送来的4位指令操作码,根据不同的指令,alu在信号alu_clk的正跳变沿触发下完成各种算术逻辑运算。微处理器各部件结构如图4所示。
软件综合与仿真和硬件实现
微处理器的软件综合与仿真
该微处理器设计共有11个基本模块,除前文分析的3个模块外,还有指令寄存器ir、累加器acc、程序计数器pc、简单的存储器rom/ram、地址多路器addr等模块。所有的模块采用quartus4.2单独综合,并调试通过,且都生成有单独的*.bsf文件,最后创建一个顶层文件top.bdf,把所有基本模块的bsf文件连接成如图4的形式。做完顶层设计后,采用quartus4.2进行综合与仿真。系统仿真的部分结果如图5所示,从图5可以看出,存放在存储器不同地址中的2个操作数3ch(00111100)和18h(00011000)相异或时,结果24h(00100100)在信号wr的上升沿触发下存入存储器中。我们可清楚地看到每条指令都是在一个指令周期中完成。数据总线data上记录着指令的运行情况,同时也可看到空闲时其呈高阻状态。
图4 微处理器各部件的结构
图5 仿真波形
主要的程序如下:
地址 机器代码 汇编语言源程序
&
nbsp; 00 11000000 jmp l1 ;l1-》pc
01 00000100
04 10100000 lda r2 ;(0e)-》r2
05 00001110
06 10000000 xorr1,r2;(r1)xor(r2)- 》(r1)
07 00001111
08 11000001 sto ;(r1)-》(0f)
0a 00000000 hlt ;stop
0b 00000000
0e 00111100
0f 00011000
微处理器的硬件实现
基于fpga的risc微处理器的最终硬件验证在杭州康芯公司生产的gw48eda系统上进行。前面的仿真结果确认无误后,选用gw48eda系统的电路模式no.5,查阅此系统的引脚对照表锁定各引脚,之后需重新编译一次,以便把引脚锁定信息编译进编程下载文件。最后把编译好的top.sof文件对目标器件fpga下载,得到满足设计要求的芯片。本设计的载体选用altera公司的cyclone系列fpga器件ep1c6q240c6,硬件验证结果表明,该risc微处理器时钟频率为23.02mhz,其功能完全达到设计要求。
结束语
本文基于fpga的微处理器具备了risc微处理器的基本功能,而且其容易优化升级。该微处理器不仅可作为一个模块用于片上系统的设计,而且也充分展示了使用fpga和vhdl进行eda数字系统设计的优越性,具有实用价值。

通过DMA模式控制串口传输的方法
中美贸易争议升温 美下一步可能瞄准消费性电子
小米有品上架一款小沐智能马桶盖AI版 断网情况下也能本地语音控制智能马桶盖的各个功能
三星Galaxy Note 10系列即将发布国行版内置8GB+256GB组合支持25W快充
低功耗冷链资产管理RFID芯片SI24R2F+介绍
利用FPGA和CPLD技术实现8位RISC微处理器的设计并进行仿真分析
机器人焊接设备有什么功能
负反馈式的宽带放大电路图模块设计
主机windows+ubuntu虚拟机联网传输实例
一篇文章告诉你一个硬件工程师到底需要做什么
虹科案例|亚太赫兹雷达实现金属腐蚀与食品药品包装的无损检测
iPhone新机背后有什么秘密?iPhone中的PCB板需要什么技术支持?
KDDI表示5G设备是否采用华为产品还尚未确定
芯趋势 芯商机丨2022 ELEXCON 深圳国际电子展圆满落幕
西门子PLC转以太网模块在建材矿粉磨系统中的应用案例
LoRa的带宽、频率测试
示波器的使用方法及使用技巧
AI神经网络实现模拟量子系统的突破
国星Mini LED应用市场规模扩大,视不可挡
5脚继电器接线方法