第一范文网 - 专业文章范例文档资料分享平台

课程设计cpu

来源:用户分享 时间:2025/5/20 1:11:18 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

哈尔滨理工大学

软件学院

课程设计报告

课 程 片上计算机系统 题 目 CPU模型机设计 班 级 集成14-2班

专 业 集成电路设计与集成系统 学 生 宋鸿飞 学 号

指导教师 崔林海

2016年 07 月 8日

索 引:

1.课程设计的目的及要求………………………………………3 2.处理器的设计思想和设计内容………………………………3 3.设计处理器的结构和实现方法………………………………3 4.模型机的指令系统……………………………………………4 5.处理器的状态跳转操作过程…………………………………4 6. CPU的Verilog代码……………………………………………7 7. 模型机在Quartus II环境下的应用…………………………16 8. 仿真波形………………………………………………………16 9. 课程设计的总结………………………………………………18

一. 课程设计的目:

目的:了解Quartus II软件的应用,学习Quartus II环境下设计CPU的基本过程;掌握CPU设计代码的含义以及CPU的工作原理;了解CPU与内存RAM间的连接数据的传输过程;学习在Quartus II环境下建立模型机的具体过程。融会贯通本课程各章节的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识。学习设计和调试计算机的基本步骤和方法,提高使用软件仿真工具和集成电路的基本技能。培养科学研究的独立工作能力,取得工程设计与组装调试的实践和经验。

二. 处理器的设计思想和设计内容:

我设计的是16位cpu,5位的操作码,18条指令,其中包含了4种寻址方式。内存容量为2k。

这个CPU是参考学姐的程序,在学姐的程序的基础上增加了一些指令得到的。

三. 设计处理器的结构和实现方法:

(指令格式)

格式1:寄存器寻址方式

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP Rx Ry 空白 格式2:立即数寻址方式 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP I 空白 格式3:无操作数寻址方式 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP 空白 空白 格式4:直接寻址方式 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OP Addr 内存(2的11次方) 四. 模型机的指令系统

CPU的指令集: 操作码指令 OP 格式 IR(15..12) 00000 00001 00010 00011 00100 00101 00110 00111 3 2 1 1 1 1 1 1 指 令 的 助 记 符 Idle Load Data Move Rx Ry Add Rx Ry Sub Rx Ry AND Rx Ry OR Rx Ry XOR Rx Ry 无操作 PC=PC+1 R0?I 立即数操作 Rx ?(Ry) PC=PC+1 Rx ?(Rx)+(Ry) PC=PC+1 Rx ?(Rx)-(Ry) PC=PC+1 Rx ?(Rx) AND(Ry) PC=PC+1 Rx ?(Rx) OR (Ry) PC=PC+1 Rx ?(Rx) XOR (Ry)

PC=PC+1 指 令 的 内 容 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 1 1 1 1 1 4 4 4 4 3 NAND Rx Ry NOT Rx SHR Rx Ry SHL Rx Ry SWAP Rx Ry JMP Addr JZ Addr READ WRITE STOP Rx ?(Rx)NAND(Ry) PC=PC+1 Rx ?NOT (Rx) PC=PC+1 逻辑循环右移PC=PC+1 逻辑循环左移PC=PC+1 A?(Ry) Ry?(Rx) Rx?(A) PC=PC+1 PC?Addr PC=PC+1 If (R0)=0 then PC?Addr else PC=PC+1 R0?(Addr) PC=PC+1 Addr?(R0) PC=PC+1 无操作 PC保持不变 五. 处理器的状态跳转操作过程:

(一)、模型机每一状态下的操作及状态跳转 当前状执行操作 态 St_0 取指令 IR(15..0)?M_data_in(15..0) St_1 IF OP=Load THEN R0?”000000000000”||IR(10..7) IF OP=Move THEN Rx ?(Ry) IF OP= Shr THEN Rx ?(Ry) 逻辑循环右移 IF OP= Shl THEN Rx ?(Ry) 逻辑循环左移 IF OP= Add THEN A?(Ry) IF OP= Sub THEN A?(Ry) IF OP=NAND THEN A?(Ry) IF OP=OR THEN A?(Ry) IF OP= AND THEN A?(Ry) IF OP=NOT THEN A?(Ry) IF OP= XOR THEN A?(Ry) IF OP= Swap THEN A?(Ry) IF OP=Stop THEN NULL IF OP=Idle THEN NULL IF OP=Jmp THEN NULL IF OP=Jz THEN NULL IF OP=Read THEN NULL 次态与读下一条指令的有关的操作 St_1 Write-Read?’0’ PC=PC+1 MAR?PC IF(OP=Stop)THEN St_1 ELSE St_2 END IF St_2 St_3 IF OP=Write THEN NULL IF OP= Load OR OP=Move OR OP=Shr OR OP=Shl OR OP=Idle THEN NULL IF OP= Add THEN Rx ?(Rx)+A IF OP= Sub THEN Rx ?(Rx)-A IF OP= AND THEN Rx ?(Rx)ANDA IF OP= NOT THEN Rx ?(Rx) NOT A IF OP= NAND THEN Rx ?(Rx)NANDA IF OP= OR THEN Rx ?(Rx)ORA IF OP= XOR THEN Rx ?(Rx) XORA IF OP= Swap THEN Ry?(Rx) IF (OP= Jmp OR OP=Jz) THEN NULL IF( OP=ReadOROP=Write ) THEN NULL IF OP= Swap THEN Ry?(Rx) St_0 Write-Read?’0’ St_3 Write-Read?’0’ St_4 St_0 Write-Read?’0’ IF OPE= Read OR OPE= Write OR St_4 OPE=Jump OR OPE=Jz) THEN PC:=PC+1; IR?Data_in Write-Read?’0’ IF OP= Jz THEN St_5 IF (R0)=0 THEN Write-Read?’0’ (PC?IR(10..0) MAR?IR(10..0)) ELSE MAR?PC IF OP= Jmp THEN (PC?IR(10..0) MAR?IR(10..0)) IF OP= Read THEN MAR?IR(10..0) IF OP= Write THEN MAR?IR(10..0) MDA?R0 IF(OPE=Jump)OR(OPE=Jz) St_0;MAR?PC; Write-Read?’0’ IF(OPE=Read) St_6;MAR?PC; Write-Read?’0’ St_6;MAR?PC; Write-Read?’0’ St_5 St_6 IF OP=Read THEN R0=M_data_in; St_0 Write-Read?’1’ 6. CPU的代码

module cpu(reset, clock, Write_Read, M_address, M_data_in, M_data_out, overflow); input reset; input clock;

output Write_Read; output [10:0] M_address; input [15:0] M_data_in; output [15:0] M_data_out; output overflow; reg overflow; reg [15:0] IR; reg [15:0] MDR; reg [10:0] MAR; reg [2:0] status;

parameter [4:0] Idle=5'd0, load=5'd1,

move=5'd2, addp=5'd3, subp=5'd4, andp=5'd5, orp=5'd6, xorp=5'd7, nandp=5'd8, notp=5'd9, shrp=5'd10, shlp=5'd11, swap=5'd12, jmp=5'd13, jz=5'd14, read=5'd15, write=5'd16, stop=5'd17; always @(negedge reset or negedge clock ) begin: status_change if (reset == 1'b0) status <= 0; else

case (status) 0 :

status <= 1; 1 :

搜索更多关于: 课程设计cpu 的文档
课程设计cpu.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1iig65z81401k8300wxv0h1ll01f5u01c6y_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top