基于fpga的简单risc_cup设计

基于fpga的简单risc_cup设计

ID:6333309

大小:195.00 KB

页数:16页

时间:2018-01-10

基于fpga的简单risc_cup设计_第1页
基于fpga的简单risc_cup设计_第2页
基于fpga的简单risc_cup设计_第3页
基于fpga的简单risc_cup设计_第4页
基于fpga的简单risc_cup设计_第5页
资源描述:

《基于fpga的简单risc_cup设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于FPGA的简单RISC_CUP设计计算机科学学院计算机科学与计算专业09061059蓝潇莹摘要:CPU即中央处理单元,它是计算机的核心部件。RISC即精减指令集计算机。它是一种20世纪80年代才出现的CPU,与一般的CPU相比不仅仅是简化了指令系统,而且还通过简化指令系统使计算机结果更加简单合理,从而提高了运算速度。关键字:FPGARISC_CPU取指令分析指令执行指令一、总体概述计算机进行信息处理可分为两个步骤:(1)将数据和程序(即指令序列)输入到计算机的存储器中;(2)从第一条指令的地址起开始执行该程序,得到程序所需的结果,结束运行。它必须具有以下基本功能:取指令——当程序已在存

2、储器中时,首先根据程序入口地址取出一条程序,为此发出指令地址及控制信号。分析指令——即指令译码,这是对当前取得的指令进行分析,指出它要求什么操作,并产生相应的操作控制命令。执行指令——根据分析指令时产生的“操作命令”形成相应的操作控制信号序列,通过运算器、存储器及输入/输出设备的执行,实现每条指令的功能,其中包括对运算结果的处理以及下条指令的形成。RISC_CPU是一个复杂的数字逻辑电路,但他的基本部件的逻辑并不复杂。我们可以把它分成8个基本部件来考虑:(1)时钟发生器;(2)指令寄存器;(1)累加器;(2)RISC_CPU算术逻辑运算单元;(3)数据控制器;(4)状态控制器;(5)程序计

3、数器;(6)地址多路器。三、总体框图RISC_CPU中部件的相互连接关系三、各模块功能说明及主要程序代码(1)时钟发生器时钟发生器clk_gen利用外来的时钟信号clk生成一系列时钟信号clk1、fetch、alu_clk,并送往CPU其他部件。其中,fetch是外来时钟clk的8分频信号,利用fetch的上升沿来触发CPU控制器来执行一条指令,同时fetch信号还将控制地址多路器输出指令地址和数据地址;clk1信号用于指令寄存器、累加器、状态控制器的时钟信号;alu_clk则用于触发算术逻辑运算单元。如下为时钟发生器原理图:其主要的verilog代码见下面模块:moduleCLC_GEN

4、(clk,reset,clk1,clk2,clk4,fetch,alu_clk);inputclk,reset;outputclk1,clk2,clk4,fetch,alu_clk;wireclk,reset;regclk2,clk4,fetch,alu_clk;reg[7:0]state;parameters1=8'b00000001,s2=8'b00000010,s3=8'b00000100,s4=8'b00001000,s5=8'b00010000,s6=8'b00100000,s7=8'b01000000,s8=8'b10000000,idle=8'b00000000;assign

5、clk1=~clk;always@(negedgeclk)if(reset)beginclk2<=0;clk4<=1;fetch<=0;alu_clk<=0;state<=idle;endelsebegincase(state)s1:beginclk2<=~clk2;alu_clk<=~alu_clk;state<=s2;ends2:beginclk2<=~clk2;clk4<=~clk4;alu_clk<=~alu_clk;state<=s3;ends3:beginclk2<=~clk2;state<=s4;ends4:beginclk2<=~clk2;clk4<=~clk;fetch<

6、=~fetch;state<=s5;ends5:beginclk2<=~clk2;state<=s5;ends6:beginclk2<=~clk2;clk4<=~clk;state<=s7;ends7:beginclk2<=~clk2;state<=s8;ends8:beginclk2<=~clk2;clk4<=~clk;fetch<=~fetch;state<=s1;endidle:state<=s1;default:state<=idle;endcaseendEndmodule(1)指令寄存器指令寄存器的触发时钟是clk1,在clk1正沿触发下,寄存器将数据总线送来的指令存入高8位或低

7、8位寄存器中,但并不是每个clk1的上升沿都寄存数据总线的数据,因为数据总线上有时传输指令,有时传输数据。什么时候寄存,什么时候不寄存由CPU状态控制器的load_ir信号控制。而当前取得是高8位还是低8位,由变量state记录。State为0表示取的是高8位,存入高8为寄存器时,同时将变量state置为1.下次再寄存时,由于state为1,可知取的是低8位,存入低8位寄存器中。主要的verilog代码见下面模块:mod

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。