




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编号 毕业设计论文课题名称 基于FPGA的CPU设计 期 别 05 级二零零九年六月摘要:从CPU的总体结构到局部功能的实现采用了自顶向下的设计方法和模块化的设计思想,利用Xilinx公司的Spartan II系列FPGA,设计实现了八位CPU软核。在FPGA内部不仅实现了CPU必需的算术逻辑器、寄存器堆、指令缓冲、跳转计数、指令集,而且针对FPGA内部的结构特点对设计进行了地址和数据的优化。关键字:Verilog HDL RISC_CPU FPGA目 录2 RISC_CPU的结构52.1 引言52.2 RISC_CPU结构52.2.1 时钟发生器52.2.2 指令寄存器62.2.3 累加器72.2.4 算术运算器72.2.5 数据控制器82.2.6 地址多路器82.2.7 程序计数器92.2.8 状态控制器92.2.9 外围模块103 RISC_CPU操作和时序123.1 系统的复位和启动操作123.2 总线读操作123.3 总线写操作124 RISC_CPU寻址方式和指令系统135 微处理器指令146 汇 编157 RISC_CPU模块的调试167.1 RISC_CPU模块的前仿真167.2 RISC_CPU模块的综合177.3 RISC_CPU模块的优化和布局布线238 总 结25致 谢26参考资料271 引言随着数字通信和工业控制领域的高速发展,要求专用集成电路ASIC(Application Specific IC)的功能越来越强,功耗越来越低,生产周期越来越短,这些都对芯片设计提出了巨大的挑战,传统的芯片设计方法已经不能适应复杂的应用需求了。简单来说,SoC是一种将多个独立的VLSI(超大规模集成电路)设计拼合在一起,来成某一应用所需的全部功能的集成电路。SoC(System on a Chip)以其高集成度,低功耗等优点越来越受欢迎。开发人员不必从单个逻辑门开始去设计ASIC,而是应用己有IC芯片的功能模块,称为核(core),或知识产权(IP)宏单元进行快速设计,效率大为提高。CPU 的IP核是SoC技术的核心,开发出具有自主知识产权的CPU IP核对我国在电子技术方面跟上世界先进的步伐,提高信息产业在世界上的核心竟争力有重大意义。通常一个完整的SOC集成了中央处理器核(CPU Core)、数字信号处理器核(DSP Core)、存储器核(Memory Core)、射频处理器核(RF Processor)、数模转换器(DAC)和模数转换器(ADC)等部分。在这其中,中央处理器核即CPU是最重要的组成部分,由它来完成简单的数据处理,内存的调度,中断处理等操作。2 RISC_CPU的结构2.1 引言RISC_CPU是一个复杂的数字逻辑电路,但是它的基本部件的逻辑并不复杂。从第四章我们知道可把它分成八个基本部件:1)时钟发生器2)指令寄存器3)累加器4)RISC_CPU算术逻辑运算单元5)数据控制器6)状态控制器7)程序计数器8)地址多路器其中时钟发生器利用外来时钟信号进行分频生成一系列时钟信号,送往其他部件用作时钟信号。各部件之间的相互操作关系则由状态控制器来控制。各部件的具体结构和逻辑关系在下面的小节里逐一进行介绍。2.2 RISC_CPU结构2.2.1 时钟发生器时钟发生器 clkgen 利用外来时钟信号clk 来生成一系列时钟信号clk1、fetch、alu_clk 送往CPU的其他部件。其中fetch是外来时钟 clk 的八分频信号。利用fetch的上升沿来触发CPU控制器开始执行一条指令,同时fetch信号还将控制地址多路器输出指令地址和数据地址。clk1信号用作指令寄存器、累加器、状态控制器的时钟信号。alu_clk 则用于触发算术逻辑运算单元。时钟发生器clkgen的波形见下图2.2.1所示:其Verilog HDL程序见下面的模块: clkclk1clk2clk4fetchalu_clk图2.2.1 时钟发生器clkgen的波形2.2.2 指令寄存器顾名思义,指令寄存器用于寄存指令。指令寄存器的触发时钟是clk1,在clk1的正沿触发下,寄存器将数据总线送来的指令存入高8位或低8位寄存器中。但并不是每个clk1的上升沿都寄存数据总线的数据,因为数据总线上有时传输指令,有时传输数据。什么时候寄存,什么时候不寄存由CPU状态控制器的load_ir信号控制。load_ir信号通过ena 口输入到指令寄存器。复位后,指令寄存器被清为零。每条指令为2个字节,即16位。高3位是操作码,低13位是地址。(CPU的地址总线为13位,寻址空间为8K字节。)本设计的数据总线为8位,所以每条指令需取两次。先取高8位,后取低8位。而当前取的是高8位还是低8位,由变量state记录。state为零表示取的高8位,存入高8位寄存器,同时将变量state置为1。下次再寄存时,由于state为1,可知取的是低8位,存入低8位寄存器中。2.2.3 累加器累加器用于存放当前的结果,它也是双目运算其中一个数据来源。复位后,累加器的值是零。当累加器通过ena口收到来自CPU状态控制器load_acc信号时,在clk1时钟正跳沿时就收到来自于数据总线的数据。2.2.4 算术运算器算术逻辑运算单元 根据输入的8种不同操作码分别实现相应的加、与、异或、跳转等8种基本操作运算。利用这几种基本运算可以实现很多种其它运算以及逻辑判断等操作。2.2.5 数据控制器数据控制器的作用是控制累加器数据输出,由于数据总线是各种操作时传送数据的公共通道,不同的情况下传送不同的内容。有时要传输指令,有时要传送RAM区或接口的数据。累加器的数据只有在需要往RAM区或端口写时才允许输出,否则应呈现高阻态,以允许其它部件使用数据总线。 所以任何部件往总线上输出数据时,都需要一控制信号。而此控制信号的启、停,则由CPU状态控制器输出的各信号控制决定。数据控制器何时输出累加器的数据则由状态控制器输出的控制信号datactl_ena决定。2.2.6 地址多路器地址多路器用于选择输出的地址是PC(程序计数)地址还是数据/端口地址。每个指令周期的前4个时钟周期用于从ROM中读取指令,输出的应是PC地址。后4个时钟周期用于对RAM或端口的读写,该地址由指令中给出。地址的选择输出信号由时钟信号的8分频信号fetch提供。2.2.7 程序计数器程序计数器用于提供指令地址。以便读取指令,指令按地址顺序存放在存储器中。有两种途径可形成指令地址:其一是顺序执行的情况,其二是遇到要改变顺序执行程序的情况,例如执行JMP指令后,需要形成新的指令地址。下面就来详细说明PC地址是如何建立的。复位后,指令指针为零,即每次CPU重新启动将从ROM的零地址开始读取指令并执行。每条指令执行完需2个时钟,这时pc_addr已被增2,指向下一条指令。(因为每条指令占两个字节。)如果正执行的指令是跳转语句,这时CPU状态控制器将会输出load_pc信号,通过load口进入程序计数器。程序计数器(pc_addr)将装入目标地址(ir_addr),而不是增2。2.2.8 状态控制器状态控制器由两部分组成:状态机(上图中的MACHINE部分)状态控制器(上图中的MACHINECTL部分)状态机控制器接受复位信号RST,当RST有效时通过信号ena使其为0,输入到状态机中停止状态机的工作。状态控制器的VerilogHDL程序见下面模块:/-/module machinectl( ena, fetch, rst);output ena;input fetch, rst;reg ena;always (posedge fetch or posedge rst)beginif(rst)ena=0;elseena=1;endendmodule/-/状态机是CPU的控制核心,用于产生一系列的控制信号,启动或停止某些部件。CPU何时进行读指令读写I/O端口,RAM区等操作,都是由状态机来控制的。状态机的当前状态,由变量state记录,state的值就是当前这个指令周期中已经过的时钟数(从零计起)。 指令周期是由8个时钟周期组成,每个时钟周期都要完成固定的操作。1) 第0个时钟,因为CPU状态控制器的输出:rd和load_ir为高电平,其余均为低电平。指令寄存器寄存由ROM送来的高8位指令代码。2) 第1个时钟,与上一时钟相比只是inc_pc从0变为1故PC增1,ROM送来低8位指令代码,指令寄存器寄存该8位代码。3) 第2个时钟,空操作。4) 第3个时钟,PC增1,指向下一条指令。若操作符为HLT,则输出信号HLT为高。如果操作符不为HLT,除了PC增一外(指向下一条指令),其它各控制线输出为零。5) 第4个时钟,若操作符为AND、ADD、XOR或LDA,读相应地址的数据;若为JMP,将目的地址送给程序计数器;若为STO,输出累加器数据。6) 第5个时钟,若操作符为ANDD、ADD或XORR,算术运算器就进行相应的运算;若为LDA,就把数据通过算术运算器送给累加器;若为SKZ,先判断累加器的值是否为0,如果为0,PC就增1,否则保持原值;若为JMP,锁存目的地址;若为STO,将数据写入地址处。7) 第6个时钟,空操作。8) 第7个时钟,若操作符为SKZ且累加器值为0,则PC值再增1,跳过一条指令,否则PC无变化。2.2.9 外围模块为了对RISC_CPU进行测试,需要有存储测试程序的ROM和装载数据的RAM、地址译码器。下面来简单介绍一下:1.地址译码器module addr_decode( addr, rom_sel, ram_sel);output rom_sel, ram_sel;input 12:0 addr;reg rom_sel, ram_sel;always ( addr )begincasex(addr)13b1_1xxx_xxxx_xxxx:rom_sel,ram_sel=2b01;13b0_xxxx_xxxx_xxxx:rom_sel,ram_sel=2b10;13b1_0xxx_xxxx_xxxx:rom_sel,ram_sel=2b10;default:rom_sel,ram_sel=2b00;endcaseendendmodule地址译码器用于产生选通信号,选通ROM或RAM。FFFFH-1800H RAM1800H-0000H ROM2.RAM和ROMmodule ram( data, addr, ena, read, write );inout 7:0 data;input 9:0 addr;input ena;input read, write;reg 7:0 ram 10h3ff:0;assign data = ( read & ena )? ramaddr : 8hzz;always (posedge write)beginramaddrnew code00000000-00000000000000001-000000011Encoding state machine work.machine_synplcty(verilog)-state7:0Original code-new code000-00000000001-00000011Writing Analyst data base C:vlogexeex17_2rev_1cpu.srmWriting Verilog Netlist and constraint filesWriting.vqm output for QuartusWriting Cross reference file for Quartus to C:vlogexeex17_2rev_1cpu.xrfWriting Verilog Simulation filesFound clock cpuclk with period 12.50nsFound clock machineinc_pc_derived_clock with period 12.50ns#START OF TIMING REPORT#Timing Report written on Fri Jul 01 10:11:03 2009Top view: cpuRequested Frequency: 80.0MHzWire load mode: topPaths requested: 5Constraint File(s):N:MT195This timing report estimates place and route data.Please look at the place and route timing report for final timing.N:MT197Clock constraints cover only FF-to-FF paths associated with the clock.Performance Summary*Worst slack in design:10.158 Requested Estimated Requested Estimate Clock ClockStarting Clock Frequency Frequency Period Period Slack Type Group.cpuclk 80.0MHz 427.0MHz 12.500 2.342 10.158 inferred Inferrd_clkgroup_0machineinc_pc_derived_clock 80.0MHz 427.0MHz 12.500 2.342 10.158 derived Inferrd_clkgroup_0 Clock Relationships* Detailed Report for Clock:cpuclk Starting Points with Worst Slack* Starting ArrivalInstance Reference Type Pin Net Time Slack Clockm_accum.accum0 cpuclk stratixii_lcell_ff regout accum_0 0.095 10.158m_accum.accum1 cpuclk stratixii_lcell_ff regout accum_1 0.095 10.194 Ending Points with Worst Slack*Worst Path Information*Path information for path number 1:Requested Period: 12.500-Setup time: 0.403=Required time: 12.097-Propagation time: 1.939=Slack (critical): 10.158Number of logic level(s): 9Starting point: m_accum.accum0/regoutEnding point: m_alu.alu_out7/adatasdataThe start point is clocked by cpuclkrisingon pin clkThe end point is clocked by cpuclkrisingon pin clkInstance/Net Pin Pin Arrival No. ofName Type Name Dir Delay Time Fan Out(s)m_accum.accum0 stratixii_lcell_ff regout Out 0.095 0.095 accum_0 Net - - 0.621 - 4m_alu.un2_alu_out_carry_0 stratixii_lcell_comb dataf In 0.716 m_alu.un2_alu_out_carry_0 stratixii_lcell_comb cout Out 0.312 1.028 un2_alu_out_carry_0 Net - - 0.000 1m_alu.un2_alu_out_carry_1 stratixii_lcell_comb cin In 1.028 - Total path delay(propagation time+setup) of 2.342 is 1.307(55.8%)logic and 1.035(44.2%) route. Detailed Report for Clock:machine_synplctyinc_pc_derived_clock Starting Points with Worst Slack*m_counter.pc_addr0 inc_pc_clock stratixii_lcell_ff regout pa_addr_c_0 0.095 10.661m_counter.pc_addr1 inc_pc_clock stratixii_lcell_ff regout pa_addr_c_1 0.095 10.697 Ending Points with Worst Slack*Path information for path number 1:Requested Period: 12.500-Setup time: 0.247=Required time: 12.253-Propagation time: 1.592=Slack (non-critical): 10.661Number of logic level(s): 13Starting point: m_accum.accum0/regoutEnding point: m_alu.alu_out12/datainThe start point is clocked by machine_synplctyinc_pc_derived_clockrisingon pin clkThe end point is clocked by machine_synplctyinc_pc_derived_clock risingon pin clkInstance/Net Pin Pin Arrival No. ofName Type Name Dir Delay Time Fan Out(s)m_counter.pc_addr0 stratixii_lcell_ff regout Out 0.095 0.095 pc_addr_c_0 Net - - 0.621 - 3m_counter.pc_addr_c0 stratixii_lcell_comb datad In 0.716 m_counter.pc_addr_c0 stratixii_lcell_comb cout Out 0.354 1.070 pc_addr_c0_cout Net - - 0.000 1 Total path delay (propagation time+setup)of 1.839 is 1.218(66.2%) logic and 0.621(33.8%) route.#END OF TIMING REPORT#START 0F AREA REPORT#Design xiew:work.cpu(verilog)Selecting part EP2S15F484C3N:FA174The following device usager repert estimates place and route data.Please look at the place and route report for final resource usage.Total combinational functions 76ALUT usage by number of inputs7 input functions 06 input functions 85 input functions 74 input functions 6=3 input functions 55ALUTs by mode normal mode 55 extrended LUT mode 0Found clock clk with period 100nsFound clock alu_clk with period 100nsFound clock fetch with period 100nsFound clock inc_pc with period 100nsEnabling timing driven placement for new ACF file.All Constraints processed!Mapper successful!Process took 7.03 seconds realtime, 7.1 seconds cputime/-RISC_CPU芯片综合结果报告结束-/在以上的报告文件中,揭示了综合器对综合过程和结果的分析,有极其重要的意义。它能帮助设计者了解
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025河南三门峡卢氏县国有资本投资运营有限公司招聘6人笔试参考题库附带答案详解
- 2025榆林能源集团有限公司招聘工作人员(473人)笔试参考题库附带答案详解
- 2025广东清远市广佛产业园区运营管理有限公司招聘2人笔试参考题库附带答案详解
- 2025年湖南高速养护工程有限公司第二批招聘46人笔试参考题库附带答案详解
- 2025年江苏东信人力资源有限公司招聘笔试参考题库附带答案详解
- 2025年国网浙江省电力有限公司高校毕业生招聘(第二批)笔试参考题库附带答案详解
- 2025年合肥市浩悦环境工程有限公司招聘5人笔试参考题库附带答案详解
- 2025年中国东方食品投资有限公司校园招聘若干人笔试参考题库附带答案详解
- 2025山东烟台市蓬莱区城市建设投资集团有限公司招聘22人笔试参考题库附带答案详解
- 2025内蒙古土地资源收储投资(集团)招聘94名专业人员(第十一批)笔试参考题库附带答案详解
- 手机行业售后管理制度
- 肇庆端州正西社区评估报告
- 朝天椒栽培技术课件
- 科研伦理与学术规范-课后作业答案
- -首次执行衔接问题-行政
- 斯蒂芬金英语介绍
- 秋天的雨 省赛获奖
- JJF 1015-2014计量器具型式评价通用规范
- GB/T 8332-2008泡沫塑料燃烧性能试验方法水平燃烧法
- GB/T 38597-2020低挥发性有机化合物含量涂料产品技术要求
- GB/T 21073-2007环氧涂层七丝预应力钢绞线
评论
0/150
提交评论