基于FPGA的RISC微处理器的设计与实现

发布者:hylh2008最新更新时间:2007-06-28 来源: 广西科学院学报关键字:EDA  ASIC  寄存器 手机看文章 扫描二维码
随时随地手机看文章
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 仿真波形

主要的程序如下:
地址 机器代码 汇编语言源程序
 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数字系统设计的优越性,具有实用价值。

关键字:EDA  ASIC  寄存器 引用地址:基于FPGA的RISC微处理器的设计与实现

上一篇:基于FPGA的数字正交混频变换算法的实现
下一篇:基于FPGA的电子系统柔性设计

推荐阅读最新更新时间:2024-05-13 18:36

比特大陆ASIC芯片订单继续火爆,订单重心逐渐移往台湾
集微网消息,受比特币、以太币等加密数字货币强劲需求驱动,比特大陆的矿机ASIC芯片订单下个不停。晶圆代工几乎由台积电包揽,后段封测订单更是逐渐向台湾转移。 近日投行伯恩斯坦(Bernstein)分析师根据对75%的毛利率和65%的经营利润率的保守预期,在比特币“挖矿”行业中占据着主导地位的比特大陆,2017年的营业利润为30亿美元至40亿美元(包含矿机等业务)。而据估计,同期的Nvidia营运利润为30亿美元。此前集微网曾披露,2017年比特大陆芯片销售额达到了惊人的143亿元人民币,仅次于华为海思,成为中国第二大的IC设计公司,为其芯片代工的台积电因此获得的营收超过15亿美元,这个数字已经超过海思麒麟970带来的收益。 据悉,去
[手机便携]
基于ADmC812和DSP实时数据采集系统设计
   引言   ADmC812是ADI公司的以8051(8052)内核为控制核心的新型微转换器。由于ADmC812内部集成了大量的外围设备。它本身就是一个完全可编程、自校准、高精度的数据采集系统,可以取代传统的MCU+A/D+ROM+RAM高成本、大体积产品,尤其是它的高精度和高速度A/D模块,特别适应于智能传感、瞬时获取、数据采集和各种通信系统。但是,对于需要采集数据量大、运算复杂、实时性又要求较高的场合,由于在结构和速度上的限制,往往是无法满足要求的。本文针对这种情况,提出了基于ADmC812和DSP的数据采集系统。在这个系统中,ADmC812作为主机,完成ADC、DAC、显示、键盘等功能,而DSP作从机,专注于复杂的数据运
[应用]
STM32 BKP备份寄存器介绍
1. BKP可以用来保存数据 BKP中包括了42个16位的寄存器,共可保存84字节的内容,它们由VBAT的供电来维挂。 2. BKP内保存的数据可以被毁灭(如果有人希望恶意得到这些数据的话,令其丢失比保护数据更重要)。STM32提供了一种称之为TAMPER的机制来完成。中文译为“侵入检测”,这需要占用一个外部引脚(PC13)。 3. 如果不用侵入检测功能,那么这个外部引脚可以用作RTC校准功能,这个稍后再研究。 4. 当有系统复位/电源复位/待机模式下被唤醒这三种情况时,BKP中的值不会丢失或被复位。 先回来研究一下STM32的复位机制。以下是数据手册的相关部分。 6.1 复位 STM32F10xx
[单片机]
万业企业相关基金入股思尔芯 布局集成电路EDA领域
近日,国内领先的EDA解决方案公司国微思尔芯(上海)信息科技有限公司(“国微思尔芯”)宣布完成新一轮数亿元人民币融资。万业企业作为重要LP的上海半导体装备材料基金成功入股国微思尔芯,进而战略布局EDA产业相关赛道,投资领域涵盖芯片设计验证的完整流程。 国微思尔芯本轮融资由大基金下设的产业融资机构芯鑫融资租赁、资产管理机构中青芯鑫组建的实体领投,国投创业基金、上海半导体装备材料产业投资基金、浦东科创集团、君联资本等知名投资机构跟投。现有投资方上海临港科创投资继续追加投资,国微思尔芯控股股东及员工亦积极参与了本轮融资。此轮募集的资金,将用于打造全流程数字EDA工具平台。 据悉,国微思尔芯创立于2003年,是一家十多年来一直专注于集成电
[手机便携]
ARMv7汇编代码分析
为了分析ARMv7架构寄存器的使用,利用C程序生成ARMv7汇编,并分析之。 1、C源程序代码如下(为了简化,函数功能很简单): # cat callfunc.c #include stdio.h #include stdlib.h #include math.h int main() { int input=10; int tmp,result; tmp = func1(input); result = func2(tmp); printf( result = %d n , result); return 0; } int func1(int a) { a++; return a; } in
[单片机]
ATmega 16 单片机的SPI的相关寄存器(九)
1.SPCR SPI控制寄存器 SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0 位 7 SPIE:使能SPI中断 置位后,只要SPSR寄存器的SPIF和SREG寄存器的全局中断使能位置位,就会引发SPI中断。 位 6 SPE:使能SPI SPE置位将使能SPI。进行任何SPI操作之前必须置位SPE。 位 5 DORD:数据次序 DORD置位时数据的LSB首先发送;否则数据的MSB首先发送。 位 4 MSTR:主/从选择 MSTR置位时选择主机模式,否则为从机。如果MSTR为 1 ,SS配置为输入,但被拉低,则MSTR被清零,寄存器SPSR的SPIF置位。用户必须重新设置M
[单片机]
基于PC的开放式多轴运动控制系统开发
运动控制技术的发展是制造自动化前进的旋律,是推动新的产业革命的关键技术。运动控制器已经从以单片机或微处理器为核心的运动控制器和以专业芯片(ASIC)作为核心处理器的运动控制器,发展到了基于PC总线的以DSP和FPGA作为核心处理器的开放式运动控制器。 当今,随着计算机技术的高速发展,运动控制技术正在发生根本性的变革,由专用型封闭式开环控制模式向通用型开放式实时动态全闭环控制模式发展。开放式体系结构使运动控制系统有更好的通用性、柔性、适用性、扩展性。 一、开放式运动控制系统 按照IEEE定义,一个开放式运动控制系统应提供这样的能力来自不同卖主的种种平台上运行的应用都能够在系统上完全实现,并能和其他系统应用互操作,且具有一致性
[应用]
FPGA新兴应用趋势洞悉
以市场观点来看,许多人只会重视FPGA的大量型应用,例如用FPGA取代ASIC。   但就技术角度来看,FPGA的应用拓展就更为多样且具意义,这包括用FPGA加速高效运算、用FPGA加速电路设计验证、用FPGA取代大量性的DSP运算。   由于掩膜成本的指数性攀升,许多中等用量规模(约50万颗以下)的芯片无法如过去般以ASIC方式投产,且不得不改以FPGA投产,如此使近年来FPGA的市场不断增长。   FPGA侵蚀原有ASIC市场的用量极为可观的,此也成为近年来众人关注FPGA的首要焦点,不过也因为过于聚焦在高用量、大市场的观察,使FPGA的其它新应用发展被人所忽略,但这些应用却也极具意义。所以,以下本文将针对FPGA的
[嵌入式]
小广播
最新应用文章

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved