赞
踩
目 录
1 毕业设计概述 1
1.1 毕设目的 1
1.2 设计任务 1
1.3 设计要求 1
1.4 技术指标 2
2 总体方案设计 4
2.1 单周期CPU设计 4
2.2 单周期多级中断机制设计 10
2.3 流水CPU设计 12
2.4 气泡式流水线设计 13
2.5 数据转发流水线设计 14
2.6 动态分支预测机制 15
3 详细设计与实现 17
3.1 单周期CPU 实现 17
3.2 中断机制实现 22
3.3 流水CPU实现 25
3.4 气泡式流水线实现 27
3.5 数据转发流水线实现 28
3.6 动态分支预测机制实现 30
4 实验过程与调试 34
4.1 功能测试和性能分析 34
4.2 主要故障与调试 39
4.3 实验进度 44
5 设计总结与心得 45
5.1 毕设总结 45
5.2 毕设心得 45
参考文献 47
1.2设计任务
本毕业设计的总体目标是利用FPGA以及相关外围器件,在毕业实验中完成的单周期cpu基础上,完成单周期cpu在FPGA开发板上的正确运行,并改造设计五段流水CPU,要求所设计的流水CPU系统能支持自动和单步运行方式,能正确地执行存放在主存中的程序的功能,对主要的数据流和控制流通过LED、数码管等适时的进行显示,方便监控和调试。对于五段流水,要求分别使用气泡、重定向、分支预测等方式处理数据冲突和控制冲突等,此外,还要求支持中断请求。尽可能利用EDA软件或仿真软件对模型机系统中各部件进行仿真分析和功能验证。本文转载自http://www.biyezuopin.vip/onews.asp?id=15109在学有余力的前提下,可进一步扩展相关功能。
1.3设计要求
(1)根据毕业设计指导书的要求,制定出设计方案;
(2)分析指令系统格式,指令系统功能。
(3)根据指令系统构建基本功能部件,主要数据通路。
(4)根据功能部件及数据通路连接,分析所需要的控制信号以及这些控制信号的有效形式;
(5)设计出实现指令功能的硬布线控制器;
(6)调试、数据分析、验收检查;
(7)毕业设计报告和总结。
1.4技术指标
(1)支持表 1.1的27条基本32位MIPS指令;
(2)支持教师指定的4条扩展指令,即表1.1中的最后四条指令,分别任blez、xori、sltiu和lbu;
(3)支持多级嵌套中断,利用中断触发扩展指令集测试程序;
(4)支持5段流水机制,可处理数据冒险,结构冒险,分支冒险;
(5)能运行由自己所设计的指令系统构成的一段测试程序,测试程序应能涵盖所有指令,程序执行功能正确。
(6)能运行教师提供的标准测试程序,并自动统计执行周期数。
(7)对于基本指令,测试程序一次性运行,对于扩展指令,要求单步手动执行,一次执行一段。
(8)能自动统计各类分支指令数目,如不同种类指令的条数、冒险冲突次数、插入气泡数目、load-use冲突次数、动态分支预测流水线能自动统计预测成功与失败次数。
<?xml version="1.0" encoding="UTF-8"?> <!-- Product Version: Vivado v2015.2 (64-bit) --> <!-- --> <!-- Copyright 1986-2015 Xilinx, Inc. All Rights Reserved. --> <Project Version="7" Minor="5" Path="C:/Users/ASUS/Desktop/zyks/redirect/project_1/project_1.xpr"> <DefaultLaunch Dir="$PRUNDIR"/> <Configuration> <Option Name="Id" Val="4fcdce2ae1a44ec69ee4865d0d5a53a4"/> <Option Name="Part" Val="xc7a100tcsg324-1"/> <Option Name="CompiledLibDir" Val="$PCACHEDIR/compile_simlib"/> <Option Name="SimulatorLanguage" Val="Verilog"/> <Option Name="BoardPart" Val=""/> <Option Name="ActiveSimSet" Val="sim_1"/> <Option Name="DefaultLib" Val="xil_defaultlib"/> <Option Name="EnableCoreContainer" Val="FALSE"/> <Option Name="EnableCoreContainerForIPI" Val="FALSE"/> </Configuration> <FileSets Version="1" Minor="31"> <FileSet Name="sources_1" Type="DesignSrcs" RelSrcDir="$PSRCDIR/sources_1"> <Filter Type="Srcs"/> <File Path="$PSRCDIR/sources_1/new/divider.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/halt.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/buffer.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/decodShowInDisplay.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/DM.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/MEM-WB.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/ctrl5.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/ctrl4.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/EX-MEM.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/syacall.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/RegFiletoALU.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/alu.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/branch_halt.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/redirect.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/ctrl3.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/regfile.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/ctrl2.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/loaduse.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/RegFileWrite.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/RegFileRead.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/controll.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/IR_Extern.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/ID-EX.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/IF-ID.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/SwitchFrequency.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/pc.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/npc.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/IM.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/counter.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sources_1/new/TopLayer.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <Config> <Option Name="DesignMode" Val="RTL"/> <Option Name="TopModule" Val="TopLayer"/> <Option Name="TopAutoSet" Val="TRUE"/> </Config> </FileSet> <FileSet Name="constrs_1" Type="Constrs" RelSrcDir="$PSRCDIR/constrs_1"> <Filter Type="Constrs"/> <File Path="$PSRCDIR/constrs_1/new/constraint.xdc"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> </FileInfo> </File> <Config> <Option Name="ConstrsType" Val="XDC"/> </Config> </FileSet> <FileSet Name="sim_1" Type="SimulationSrcs" RelSrcDir="$PSRCDIR/sim_1"> <Filter Type="Srcs"/> <File Path="$PSRCDIR/sim_1/new/test_top.v"> <FileInfo> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sim_1/new/test_branch.v"> <FileInfo> <Attr Name="AutoDisabled" Val="1"/> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sim_1/new/test_DM.v"> <FileInfo> <Attr Name="AutoDisabled" Val="1"/> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sim_1/new/test_id.v"> <FileInfo> <Attr Name="AutoDisabled" Val="1"/> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <File Path="$PSRCDIR/sim_1/new/test_IF_ID.v"> <FileInfo> <Attr Name="AutoDisabled" Val="1"/> <Attr Name="UsedIn" Val="synthesis"/> <Attr Name="UsedIn" Val="implementation"/> <Attr Name="UsedIn" Val="simulation"/> </FileInfo> </File> <Config> <Option Name="DesignMode" Val="RTL"/> <Option Name="TopModule" Val="test_top"/> <Option Name="TopLib" Val="xil_defaultlib"/> <Option Name="SimMode" Val="post-synthesis"/> <Option Name="SrcSet" Val="sources_1"/> <Option Name="xsim.simulate.runtime" Val="100000ns"/> <Option Name="NLNetlistMode" Val="funcsim"/> </Config> </FileSet> </FileSets> <Simulators> <Simulator Name="XSim"> <Option Name="Description" Val="Vivado Simulator"/> <Option Name="CompiledLib" Val="0"/> </Simulator> <Simulator Name="ModelSim"> <Option Name="Description" Val="ModelSim Simulator"/> </Simulator> <Simulator Name="Questa"> <Option Name="Description" Val="Questa Advanced Simulator"/> </Simulator> <Simulator Name="IES"> <Option Name="Description" Val="Incisive Enterprise Simulator (IES)"/> </Simulator> <Simulator Name="VCS"> <Option Name="Description" Val="Verilog Compiler Simulator (VCS)"/> </Simulator> <Simulator Name="Riviera"> <Option Name="Description" Val="Riviera-PRO Simulator"/> </Simulator> <Simulator Name="ActiveHDL"> <Option Name="Description" Val="Active-HDL Simulator"/> </Simulator> </Simulators> <Runs Version="1" Minor="9"> <Run Id="synth_1" Type="Ft3:Synth" SrcSet="sources_1" Part="xc7a100tcsg324-1" ConstrsSet="constrs_1" Description="Vivado Synthesis Defaults" State="current" Dir="$PRUNDIR/synth_1"> <Strategy Version="1" Minor="2"> <StratHandle Name="Vivado Synthesis Defaults" Flow="Vivado Synthesis 2015"/> <Step Id="synth_design"/> </Strategy> <GeneratedRun Dir="$PRUNDIR" File="gen_run.xml"/> </Run> <Run Id="impl_1" Type="Ft2:EntireDesign" Part="xc7a100tcsg324-1" ConstrsSet="constrs_1" Description="Vivado Implementation Defaults" State="current" Dir="$PRUNDIR/impl_1" SynthRun="synth_1"> <Strategy Version="1" Minor="2"> <StratHandle Name="Vivado Implementation Defaults" Flow="Vivado Implementation 2015"/> <Step Id="init_design"/> <Step Id="opt_design"/> <Step Id="power_opt_design"/> <Step Id="place_design"/> <Step Id="post_place_power_opt_design"/> <Step Id="phys_opt_design"/> <Step Id="route_design"/> <Step Id="post_route_phys_opt_design"/> <Step Id="write_bitstream"/> </Strategy> <GeneratedRun Dir="$PRUNDIR" File="gen_run.xml"/> </Run> </Runs> </Project>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。