06-Minisys-1单周期CPU控制器的设计

一、06-Minisys-1单周期CPU控制器的设计(1)

1.主要内容:
  1. 创建一个项目
  2. 单周期CPU控制器设计

项目初始文件http://www.njyangqs.com/soc/download/

2.创建一个项目
  1. 先确保初始文件包已安装在C盘的minisys1_classfiles目录下
    在这里插入图片描述
  2. 打开vivado(2015.4),创建新项目,在C盘minisys1下
    在这里插入图片描述
  3. 添加source files时,C盘-minisys1_classfiles-minisys,勾选copy。
    在这里插入图片描述
    在这里插入图片描述4. 添加约束文件,xdc文件夹,勾上copy。
    在这里插入图片描述
  4. 选择器件,Artix-7家族,fgg484封装,-1速度,选最下面的器件。
    在这里插入图片描述
  5. 所有.v文件都不完整,需要补充完整
    在这里插入图片描述
// ifetc32.v

`timescale 1ns / 1ps
//
module Ifetc32(Instruction,PC_plus_4_out,Add_result,Read_data_1,Branch,nBranch,Jmp,Jal,Jrn,Zero,clock,reset,opcplus4);
    output[31:0] Instruction;			// 输出指令
    output[31:0] PC_plus_4_out;
    input[31:0]  Add_result;
    input[31:0]  Read_data_1;
    input        Branch;
    input        nBranch;
    input        Jmp;
    input        Jal;
    input        Jrn;
    input        Zero;
    input        clock,reset;
    output[31:0] opcplus4;

    
    wire[31:0]   PC_plus_4;
    reg[31:0]	  PC;
    reg[31:0]    next_PC; 
    wire[31:0]   Jpadr;
    reg[31:0]    opcplus4;
    
   //分配64KB ROM,编译器实际只用 64KB ROM
    prgrom instmem(
        .clka(clock),         // input wire clka
        .addra(PC[15:2]),     // input wire [13 : 0] addra
        .douta(Jpadr)         // output wire [31 : 0] douta
    );
    

    assign Instruction = Jpadr;              //  取出指令

    always @* begin                          // beq $n ,$m if $n=$m branch   bne if $n /=$m branch jr
        
    end
    
   always @(negedge clock) begin
     
     
   end
endmodule

// idecode32.v
`timescale 1ns / 1ps
//

module Idecode32(read_data_1,read_data_2,Instruction,read_data,ALU_result,
                 Jal,RegWrite,MemtoReg,RegDst,Sign_extend,clock,reset,
                 opcplus4,read_register_1_address);
    output[31:0] read_data_1;
    output[31:0] read_data_2;
    input[31:0]  Instruction;
    input[31:0]  read_data;   				//  从DATA RAM or I/O port取出的数据
    input[31:0]  ALU_result;   				//  需要扩展立即数到32位
    input        Jal; 
    input        RegWrite;
    input        MemorIOtoReg;
    input        RegDst;
    output[31:0] Sign_extend;
    input		 clock,reset;
    input[31:0]  opcplus4;                 // 来自取指单元,JAL中用
    output[4:0] read_register_1_address;
    
    wire[31:0] read_data_1;
    wire[31:0] read_data_2
  • 3
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值