31条指令单周期cpu设计(Verilog)-(十)上代码→顶层模块设计总结
- 说在前面
开发环境:Vivado
语言:Verilog
cpu框架:Mips
控制器:组合逻辑
- 设计思路
按照预先设计好的数据通路图将各个模块连接起来
`timescale 1ns / 1ps
module cpu(input clk,input reset,input [31:0] inst,input [31:0] rdata,output [31:0] pc,output [31:0] addr,output [31:0] wdata,output IM_R,output DM_CS,output DM_R,output DM_W);//--------------------------------//控制信号(除有关存储器)wire PC_CLK; //wire PC_ENA; //wire M1; //wire M2; //wire M3; //wire M4; //wire M5; //wire M6; //wire M7; //wire M8; //wire M9; //wire M10; //wire M11; //wire [3:0] ALUC; //wire RF_W; //wire RF_CLK; //wire C_EXT16; ////--------------------------------//运算标志位wire zero; //wire carry; //wire negative; //wire overflow; //wire add_overflow; ////--------------------------------// wire [31:0] INS; //译码后指令//--------------------------------//数据通路(除有关存储器)wire [31:0] D_ALU; //wire [31:0] D_PC; //wire [31:0] D_RF; //wire [31:0] D_Rs; //wire [31:0] D_Rt; //wire [31:0] D_IM; //wire [31:0] D_DM; //wire [31:0] D_Mux1; //wire [31:0] D_Mux2; //wire [31:0] D_Mux3; //wire [4:0] D_Mux4; //wire [4:0] D_Mux5; //wire [31:0] D_Mux6; //wire [31:0] D_Mux7; //wire [31:0] D_Mux8; //wire [31:0] D_Mux9; //wire [31:0] D_Mux10; //wire D_Mux11; ////wire [31:0] D_EXT1; //wire [31:0] D_EXT5; //wire [31:0] D_EXT16; //wire [31:0] D_EXT18; //wire [31:0] D_ADD; //wire [31:0] D_ADD8; //wire [31:0] D_NPC; //wire [31:0] D_ii; //assign PC_ENA = 1;//--------------------------------//外部通路连接assign pc = D_PC;assign addr = D_ALU;assign wdata = D_Rt;//--------------------------------//指令译码instr_dec cpu_ins (inst, INS);operation cpu_opcode (clk,zero,INS,PC_CLK,IM_R,M1,M2,M3,M4,M5,M6,M7,M9,M10,ALUC,RF_W,RF_CLK,DM_W,DM_R,DM_CS,C_EXT16);//--------------------------------//部件pcreg pc_out (PC_CLK, reset, PC_ENA, D_Mux1, D_PC);alu cpu_alu (D_Mux9, D_Mux10, ALUC[3:0], D_ALU, zero, carry, negative, overflow);regfile cpu_ref (RF_CLK, reset, RF_W, overflow, inst[25:21], inst[20:16], D_Mux5, D_Mux6,D_Rs, D_Rt);mux cpu_mux1 (D_Mux3, D_Mux2, M1, D_Mux1);mux cpu_mux2 (D_NPC, D_ADD, M2, D_Mux2);mux cpu_mux3 (D_ii, D_Rs, M3, D_Mux3);mux5 cpu_mux4 (inst[10:6], D_Rs[4:0], {INS[30],M4},D_Mux4);mux5 cpu_mux5 (inst[15:11],inst[20:16],{INS[30],M5},D_Mux5);mux cpu_mux6 (D_Mux7, D_ADD8, M6, D_Mux6);mux cpu_mux7 (D_ALU, rdata, M7, D_Mux7);mux cpu_mux9 (D_EXT5, D_Rs, M9, D_Mux9);mux cpu_mux10 (D_Rt, D_EXT16, M10, D_Mux10);extend5 cpu_ext5 (D_Mux4, D_EXT5);extend16 cpu_ext16 (inst[15:0], C_EXT16, D_EXT16);extend18 cpu_ext18 (inst[15:0], D_EXT18);add cpu_add (D_EXT18, D_NPC, D_ADD, add_overflow);add8 cpu_add8 (D_PC, D_ADD8);npc cpu_npc (D_PC, reset, D_NPC);II cpu_ii (D_PC[31:28],inst[25:0], D_ii);endmodule
- 总结
总算把鸽的写完了,我觉得这个系列的重点在前面的设计部分,后面的代码可以自己写,只要掌握了整个流程写起来还是挺简单的,就是工作量很大,如果想要自己写的话就看前面几篇即可,代码部分可以不看了。
31条指令单周期cpu设计(Verilog)-(一)相关软件
31条指令单周期cpu设计(Verilog)-(二)总体设计
31条指令单周期cpu设计(Verilog)-(三)指令分析
31条指令单周期cpu设计(Verilog)-(四)数据输入输出关系表
31条指令单周期cpu设计(Verilog)-(五)整体数据通路图设计
31条指令单周期cpu设计(Verilog)-(六)指令操作时间表设计
31条指令单周期cpu设计(Verilog)-(七)整体代码结构
31条指令单周期cpu设计(Verilog)-(八)上代码→指令译码以及控制器
31条指令单周期cpu设计(Verilog)-(九)上代码→基本模块
31条指令单周期cpu设计(Verilog)-(十)上代码→顶层模块设计总结相关推荐
- 31条指令单周期cpu设计(Verilog)-(二)总体设计
目录 31条指令单周期cpu设计(Verilog)-(一)相关软件 31条指令单周期cpu设计(Verilog)-(二)总体设计 31条指令单周期cpu设计(Verilog)-(三)指令分析 ...
- 31条指令单周期cpu设计(Verilog)-(三)指令分析
说在前面 开发环境:Vivado 语言:Verilog cpu框架:Mips 控制器:组合逻辑 鸽鸽鸽... 指令分析流程 确定一条指令所需要的具体操作 分析该条指令涉及的部件 确定各个部件的输入输出 ...
- 31条指令单周期cpu设计(Verilog)-(四)数据输入输出关系表
说在前面 开发环境:Vivado 语言:Verilog cpu框架:Mips 控制器:组合逻辑 表格作用 这张表用于设计整体的数据通路图 (在第二篇中已经给出来了),而这张总图是用于设计Verilog ...
- 31条指令单周期cpu设计(Verilog)-(六)指令操作时间表设计
说在前面 开发环境:Vivado 语言:Verilog cpu框架:Mips 控制器:组合逻辑 这张表格又是干啥的呢(+_+)? 废话少说,用来设计控制器的 (红色方框) 设计流程 1. 表头为3 ...
- 31条指令单周期cpu设计(Verilog)-(八)上代码→指令译码以及控制器
说在前面 开发环境:Vivado 语言:Verilog cpu框架:Mips 控制器:组合逻辑 指令译码器 我们需要根据一条32位的指令的结构确定是哪一条指令 可以根据操作码(op)以及功能码(fun ...
- 31条指令单周期cpu设计(Verilog)-(七)整体代码结构
说在前面 开发环境:Vivado 语言:Verilog cpu框架:Mips 控制器:组合逻辑 结构 sccpu:顶层模块 cpu_ins:指令译码器 cpu_opcode:控制器 其他均是基本模块( ...
- 31条指令单周期cpu设计(Verilog)-(一)相关软件
说在前面 开发环境:Vivado 语言:Verilog cpu框架:Mips 计算机组成原理课程终于结束了,由于以下均为课程学习过程中的内容,所以难免存在各种错误,各位大佬轻喷 相关软件 vivado ...
- 31条指令单周期cpu设计(Verilog)-(五)整体数据通路图设计
说在前面 开发环境:Vivado 语言:Verilog cpu框架:Mips 控制器:组合逻辑 这张图是用来干啥的? 我们在用verilog实现这个cpu的时候,一般是先把各个部件单独写一个modul ...
- 31条指令单周期cpu设计(Verilog)-(九)上代码→基本模块
不再赘述,直接上 mux `timescale 1ns / 1ns module mux(input [31:0] a,input [31:0] b,input choose,output reg [ ...
最新文章
- 微信小程序去掉左上角的返回箭头
- 针对SAP OData 模型Addresssable属性的不同处理
- webstorm前端调用后端接口_软件测试面试题:怎么去判断一个bug是前端问题还是后端问题...
- 常用的前端跨域的几种方式
- Mr.J-- jQuery学习笔记(二十七)--DOM操作方法(删除获取文本)
- switch全部游戏列表_敢把游戏当教材,免费提供给学生!EA今年将推出7款NS作品!...
- 【JMX】JMX 远程 连接 The client has been closed
- 麓山滨江2021高考成绩查询,长沙2021高考成绩排名榜单,长沙各高中高考成绩喜报...
- 测试可变字符序列stringBuilder
- 图形学笔记1.直线扫描转换与devC的图形库ege扩展
- STM32-雨滴传感器
- win10系统怎么删除远程桌面连接记录
- 供应商管理系统SRM
- 群晖docker签到京豆_在群晖Docker上的部署qBittorrent
- 采用circlize包绘制Circos图
- 奥迪坚技术革新带动信用卡呼叫中心管理升级
- vue的组件通信方式
- 正确率、召回率、F值例子
- IO流(输入流与输出流)
- 大学生应该如何选择服务器
热门文章
- 教你低成本甚至免费开通微信小程序商城
- 40XXX队技术员交接事项(5):双靶定向井施工小结
- 【MATLAB基础】创建一个包含十名学生姓名学号和各学生六个科目成绩的结构体,并对成绩数据进行简单处理,并对十名学生按照成绩排序
- slicer安装_3D Slicer中文教程(二)—软件功能界面介绍
- 组合数学$2鸽巢原理与容斥原理
- 「科聪应用案列」助力汽车制造业进一步“智能化”提升
- android textview全角,bug-textview半角,英文展示不全
- Android内嵌Unity开发简单的3D动态模型
- 基于matlab的图像二维小波分解算法仿真
- dropdownList选中