当前位置:   article > 正文

基于FPGA的实验平台Altera Quatars II的16位单周期CPU设计_基于fpga16位cpu

基于fpga16位cpu

声明:最近很多学校的学弟学妹看到了这篇文章。这篇文章的本意是帮助学弟学妹能够更好地完成组原课设,毕竟当时我也是完成这个课设时非常痛苦,同时这还是基于我比较认真地完成了实验课的基础上,因此分享这篇文章不仅是对自己痛苦熬大夜的纪念,也希望可以起到帮助的作用,本篇文章也只是提供一个我个人设计的思路,我同届同学还有其他比我更巧妙更聪明的设计。今天查了后台发现很多私信求文件压缩包和电路图,我这边在完成这篇文章后都删除了有关文件,其实与其寄希望于我这模糊的电路图,不如多与老师交流,组原的老师们真的都很好,或者有可能的话录屏老师的讲解(实测非常有用,其实很多面临的问题老师第一节课都讲过的)。
如果有设计上的问题,欢迎评论区留言。佛系回复。

提示:此文档仅用于记录我本学期计算机组成原理课设文档,可能我们学校比较水吧,有幸拿到了优。本文档仅用于参考!

基于FPGA的实验平台Altera Quatars II的16位单周期CPU设计


前言

设计16位的单周期CPU有很多种方法,此处展示的方法并不是最优。


提示:以下是本篇文章正文内容,下面案例可供参考

1、课程设计题目

基于FPGA的实验平台Altera Quatars II的16位单周期CPU设计。

2、课程设计的目的与意义

本课程设计是学完计算机组成原理课程并进行了多个单元实验后,综合利用所学的理论知识,并结合在单元实验中所积累的计算机部件设计和调试方法,设计出一台具有自定义指令系统的简单计算机系统。所设计的系统能在基于FPGA的实验平台Quatars上运行一段程序,通过检查程序结果的正确性来判断所设计计算机系统正确性。
本课程设计属于设计型实验,不仅锻炼学生简单计算机系统的设计能力,而且通过进行主机系统底层电路的实现、故障分析与定位、系统调式等环节的锻炼,进一步提高学生分析和解决问题的能力。

3、课程设计的内容

设计单周期CPU,并调试通过。题目可以根据自己的设计内容、实现方式、所设计的计算机系统的结构为基于FPGA实验平台的单周期CPU设计与实现。

3.1 平台介绍

本课程设计的实验平台为Altera Quartus II 软件和Altera Cyclone V Starter 工具箱。实验平台要点如下:
Cyclone V是Altera FPGAs家族的一类,它面向低功耗应用。Cyclone V GX 5CSEMA5F31C6芯片有不同的转换器,按钮,LED灯,七段显示器,HDMI接口,SD卡读卡器以及其他链接等。Cyclone V GX 5CSEMA5F31C6是Starter工具箱的重要组件。

3.2 单周期CPU的主要技术指标

①支持表1中至少10条指令,其中,至少要选择1条R型指令、1条立即数运算指令、Load指令、Store指令、1条分支指令和无条件转移指令;
②能运行由自己所设计的指令系统构成的一段测试程序,测试程序应能涵盖所有指令,程序执行功能正确,并对运行结果与理论运算结果对比(本实验采用表格对比),每一步判断对错。

表1 指令格式
# 指令 15~12 11~10 9~8 7~6 5~3 2~0 指令功能
1 or 0 rs rt rd 0 0 $rd= $rs or $rt
2 and 0 rs rt rd 0 1 $rd = $rs & $rt
3 add 0 rs rt rd 0 2 $rd = $rs + $rt
4 sub 0 rs rt rd 0 3 $rd = $rs - $rt
5 sllv 0 rs rt rd 0 4 $rd = $rs - $rt
6 srlv 0 rs rt rd 0 5 $rd = $rs >> $rt
7 srav 0 rs rt rd 0 6 $rd = $rs >> $rt 算术右移
8 slt 0 rs rt rd 0 7 r d = ( rd = ( rd=(rs < $rt) ? 1 :0
# 指令 15~12 11~10 9~8 7~0 指令功能
9 DISP 1 rs rt immediate-u DISP[imm] = $rs
10 lui 2 0 rt immediate-u $rt = imm << 8
11 ori 3 rs rt immediate-u $rt = $rs
12 andi 4 rs rt immediate-u $rt = $rs & imm
13 addi 5 rs rt immediate-s $rt = $rs + imm
14 lw 6 rs rt immediate-s r t = M E M [ rt = MEM[ rt=MEM[rs + imm]
15 sw 7 rs rt immediate-s MEM[$rs+imm] = $rt
16 beq 8 rs rt offset-s beq =?
17 bne 9 rs rt offset-s bne != ?
18 bqt 10 rs rt offset-s bgt >?(有符号比较)

|#| 指令 | 15~12 | 11~0 |指令功能|
|–|–|–|–|–|–|–|
| 19 | jump | 11 |jump address|jump|
| 20 | halt | 12 |0|halt (时钟暂停) |

代码如下(示例):

3.3 R型指令

在这里插入图片描述

图1 R型指令的指令格式

R型指令有4位操作码,两个源寄存器选择码,右操作数选择码,目标寄存器选择码,功能码。R型指令操作码func都为0000,用功能码区别每个指令。具体如图1、表2、表3、表4所示。

表2 R型指令分析
# 指令 15~12 11~10 9~8 7~6 5~3 2~0 指令功能
1 or 0 rs rt rd 0 0 $rd= $rs or $rt
2 and 0 rs rt rd 0 1 $rd = $rs & $rt
3 add 0 rs rt rd 0 2 $rd = $rs + $rt
4 sub 0 rs rt rd 0 3 $rd = $rs - $rt
5 sllv 0 rs rt rd 0 4 $rd = $rs - $rt
6 srlv 0 rs rt rd 0 5 $rd = $rs >> $rt
7 srav 0 rs rt rd 0 6 $rd = $rs >> $rt 算术右移
8 slt 0 rs rt rd 0 7 r d = ( rd = ( rd=(rs < $rt) ? 1 :0
表3 R型指令功能说明
指令 op func 功能说明 指令操作结果
or 0000 0000 $rd = $rs or $rt 运算结果返回目标寄存器rd
and 0000 0001 $rd = $rs & $rt 运算结果返回目标寄存器rd
add 0000 0010 $rd = $rs + $rt 运算结果返回目标寄存器rd
sub 0000 0011 $rd = $rs - $rt 运算结果返回目标寄存器rd
sllv 0000 0100 rt寄存器数据逻辑左移位rs位,回写到rd 运算结果返回目标寄存器rd
srlv 0000 0101 rt寄存器数据逻辑右移位rs位,回写到rd 运算结果返回目标寄存器rd
srav 0000 0110 rt寄存器数据算数右移位rs位,回写到rd 运算结果返回目标寄存器rd
slt 0000 0111 r d = ( rd = ( rd=(rs < $rt) ? 1 :0 运算结果返回目标寄存器rd
表4 R型指令运算测试代码
汇编码 预期执行结果
add $r0 $r1 #r0 $r0=0x000A
sub $r2 $r1 #r2 $r2=0x0000
or $r3 $r1 #r2 $r2=0x0005
and $r1 $r3 #r0 $r0=0x0005
sllv $r0 $r2 #r3 $r3=0x0100
srlv $r1 $r2 #r3 $r3=0x0000
srav $r0 $r2 #r3 $r2=0x0005
srav $r0 $r2 #r3 $r2=0x0005

3.4 I型指令

在这里插入图片描述

图2 I型指令的指令格式

I型指令有4位操作码,一个源寄存器选择码,目标寄存器选择码,八位立即数。I型指令与立即数进行与、或、加、位移运算。具体如图2、表5、表6、表7所示。

表5 I型指令分析

|#| 指令 |15~12| 11~10| 9~8| 7~0| 指令功能|
|–|–|–|–|–|–|–|–|
|9| lui |1 |0 |rt| immediate-u | r t = i m m < < 8 ∣ 10 ∣ o r i ∣ 2 ∣ r s ∣ r t ∣ i m m e d i a t e − u ∣ rt = imm << 8 |10| ori |2| rs| rt |immediate-u | rt=imm<<810ori2rsrtimmediateurt = $rs | imm
|11| andi| 3| rs| rt |immediate-u| $rt = $rs & imm
|12| addi| 4| rs| rt| immediate-s| $rt = $rs + imm

表6 I型指令功能说明
指令 op 功能说明 执行结果
lui 0001 $rt = imm << 8 运算结果回写寄存器rt
ori 0010 $rt = $rs imm 运算结果回写寄存器rt
andi 0011 $rt = $rs & imm 运算结果回写寄存器rt
addi 0100 $rt = $rs + imm 运算结果回写寄存器rt
表7 I型指令运算测试代码
汇编码 预期执行结果
add $r0 $r1 #r0 $r0=0x000A
sub $r2 $r1 #r2
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号