电子工程师的网站
首 页 |  新闻资讯 | 最新产品 | 解决方案 | 技术参数
设计应用
电路图 | 技术资料 | 芯片资料 | 技术论坛
  现在位置: 首页 > 设计应用 > EDA/PLD > 详细信息
EDA/PLD:基于FPGA的RISC微处理器的设计与实现
来源:   时间: 2007-7-3 14:12:16    
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所示。

关键模块的设计

RISC微处理器是一个复杂的数字逻辑电路,但其基本部件的逻辑并不复杂,可以把它分为时钟产生器、指令寄存器、累加器、算术逻辑单元、数据控制器、状态控制器、程序计数器、地址多路器等单元来考虑。在硬件验证时还需要建立一些如ROM/RAM和地址译码器等必要的外围器件。以下是几个关键模块的设计。

时钟产生器的设计

时钟产生器Pulse产生的电路如图2所示,计算机的协调动作需要时间标志,它用时序信号体现,时钟产生器正是产生这些时序信号的器件。图2中时钟产生器利用外来时钟信号clk产生一系列时钟信号clk1,fetch,aluclk等,并送往微处理器的其他部件。rst控制着微处理器的复位和启动操作,当rst一进入高电平,微处理器就结束现行操作,并且只要rst停留在高电平状态,微处理器就维持复位状态。rst回到低电平后在接着到来的fetch上升沿启动微处理器开始工作。

由于时钟产生器对微处理器各种操作实施时间上的控制,所以其性能好坏从根本上决定了整个微处理器的运行质量。本设计采用的同步状态机的设计方法,使得clk1,fetch,alu_clk在跳变时间同步性能上有显著提升,为整个系统性能的提高打下良好的基础。

状态控制器的设计

状态控制器的电路图如图3所示。从实现的途径看,RISC微处理器与一般的微处理器的不同之处在于,它的时序控制信号的形成部件是用硬布线逻辑实现而不是采用微程序控制。由于器件本身设计比较复杂,且对各个控制信号的时序有严格要求,所以其VHDL程序用有限状态机FSM来实现。

结构体程序如下:

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上记录着指令的运行情况,同时也可看到空闲时其呈高阻状态。

主要的程序如下:

地址 机器代码 汇编语言源程序

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数字系统设计的优越性,具有实用价值。

相关信息
发表评论
打印本页 关闭本页
一种改进的嵌入式存储器测试算法
  摘要基于一种适合于测试静态简化故障的MarchSS算法,提出了一种改进的嵌入式随机存取存储器测试算法-MarchSSE算法。该算法在测试长度不变的情况下,不仅能测出MarchSS算法所测试的全部的功能故障,而且还能检测出MarchSS算法所遗漏的固定开路故障,以及大部分的动态故障,故障覆盖率得到了大幅度地提高。 关键词故障原语,静态故障,动态故障,存储器测试,故障覆盖率 1 引言 随着深亚...
>>详细内容
基于计算机的机床测试系统
  在工业生产测试过程中,经常要对温度、流量、压力等模拟量进行采集,对继电器、接触器等开关量进行控制,此外还有步进电机和伺服电机进行精确的位移控制。开发一种基于计算机的机床测试系统,把各种控制量集成在一起构成闭环控制系统很有必要。本文以一台计算机为主控制器,采用Windows风格接口软件,计算和测试速度快,信息处理能力强,系统集成度高,工作界面友好,操作方便,实现了多...
>>详细内容
基于FPGA的IJF数字基带编码的实现
  1 引言 20世纪80年代初,加拿大渥太华大学的费赫教授(K.Feher)领导的科研小组发明了IJF-OQPSK调制技术。IJF-OQPSK中文名称叫做无码间干扰和抖动-交错正交相移键控。他是现代数字恒包络调制技术中新型的调制技术之一。 进行这种调制时,首先要对数字基带信号进行IJF编码,将其变换成一种无码间干扰和抖动、频谱主瓣窄、具有快速滚降的基带波形,然后再用OQPSK调制。这样,调制后的基...
>>详细内容
光电传感器应用
  光电传感器是一种小型电子设备,它可以检测出其接收到的光强的变化。早期的用来检测物体有无的光电传感器是一种小的金属圆柱形设备,发射器带一个校准镜头,将光聚焦射向接收器,接收器出电缆将这套装置接到一个真空管放大器上。在金属圆筒内有一个小的白炽灯做为光源。这些小而坚固的白炽灯传感器就是今天光电传感器的雏形。    LED(发光二极管)   发光二极管最早出现在19世纪...
>>详细内容
新型环保线绕电阻器的应用特性及可靠性分析
  0 引言 随着电子技术的迅速发展,电阻器作为电子元件中的一个基本组成部分仍在不断发展。由于采用新技术和自动化生产,电阻器无论从生产规模和质量方面都达到了新水平。目前我国内地有300~400家企业生产电阻,电阻产量约为3 000亿只,约占全球产量的30%,随着消费电子产品、GPS模块和数字机顶盒的需求上升,内地的电阻产业将稳步成长,产量还将进一步增长。同时在技术上不仅能做出精...
>>详细内容
基于Au1200的多媒体播放终端设计
  1 引言 随着多媒体技术和网络技术的不断发展,在楼宇电视广告播放技术上,网络化的播放系统将逐渐取代现行的广告机本地播放方式。多样化、实时化的发布模式以及智能化、人性化的管理平台,将推动楼宇电视广告行业的发展。 在网络化的播放系统中,具有联网功能的多媒体播放终端是一个关键设备,它可以播放图片、音乐、视频、文字,成了整个播放系统不可分割的一部分。在新一代的播放系...
>>详细内容
已有(
)位对此新闻感兴趣的网发发表了看法 >>更多评论
内 容:
     
 
热点新闻
一周排行
关于我们 | 服务项目 | 付款方式 | 广告服务 | 联系我们 | 友情链接 | 投诉 建议 合作 | 网站地图 | 加入收藏
Copyright © 2007-2008 WEEQOO.COM Corp.All Rights Reserved. 版权所有 经营许可证编号:浙B2-20050339 法律声明
维库电子旗下网站:维库电子市场网 | ChinaICMart | 维库电子开发网 | 维库电子人才网
总部:杭州市下城区朝晖路182号国都发展大厦1号楼80A
电话:0571-85889139-8007 QQ:303939539 | MSN:zh1226@hotmail.com |  邮箱:laz8258@163.com dzsc51@163.com