ZBLOG

`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 2022/11/17 13:23:15 // Design Name: // Module Name: top // Project Name: // Target Devices: /...

`timescale 1ns / 1ps         // 定义时间精度

//////////////////////////////////////////////////////////////////////////////////
// Company:                  // 公司名
// Engineer:                 // 工程师名
// Create Date:              // 创建日期
// Design Name:              // 设计名称
// Module Name: top          // 模块名称为top
// Project Name:             // 项目名称
// Target Devices:           // 目标设备
// Tool Versions:            // 工具版本
// Description:              // 描述信息
// 
// Dependencies:             // 依赖项
// 
// Revision:
// Revision 0.01 - File Created   // 版本修订记录及注释说明
// Additional Comments:
// 
//////////////////////////////////////////////////////////////////////////////////


module top(
    input clk,                // 输入时钟信号clk,用于同步模块内部的操作和控制信号
    output [31:0] Instr,      // 输出指令数据,作为CPU模块的输入端口之一,由指令存储器Ins_memory提供给CPU使用。
    output [31:0] dataout,    // 输出数据,由数据存储器data_memory提供给CPU使用。
    output [31:0] pc,         // 输出程序计数器PC值,用于调试和监视CPU的执行状态。
    output [31:0] busB,       // 输出总线B上的数据值,由ALU或寄存器模块写入总线B中。作为数据存储器data_memory的地址输入端口之一。
    output [31:0] datain,     // 输出写入数据,由CPU模块提供给数据存储器data_memory,用于写入内存中的数据。
    output [31:0] result,     // 输出计算结果,由ALU或寄存器模块计算得出,并输出到总线B上。
    output MemWr              // 输出内存写使能信号MemWr,当CPU向数据存储器data_memory写入数据时需要置为高电平。

);

// 实例化CPU模块
    CPU cpu(
        .clk(clk),
        .Instr(Instr),
        .dataout(dataout),
        .result(result),
        .pc(pc),
        .busB(busB),
        .MemWr(MemWr)
    );
    
// 实例化指令存储器Ins_memory
    Ins_memory Ins_memory(
        .addr(pc),             // 指定地址输入端口为程序计数器PC值
        .clk(clk),             // 指定时钟信号输入端口为顶层模块的clk信号
        .Instr(Instr)          // 指定指令输出端口与CPU模块的指令输入端口连接
    );
    
// 实例化数据存储器data_memory
    data_memory data_memory(
        .addr(result),         // 指定地址输入端口为ALU或寄存器模块输出的结果值result
        .clk(clk),             // 指定时钟信号输入端口为顶层模块的clk信号
        .datain(busB),         // 指定写入数据输入端口为总线B上的值
        .MemWr(MemWr),         // 指定写使能信号输入端口为顶层模块的内存写使能信号
        .dataout(dataout)      // 指定读出数据输出端口与CPU模块的数据输出端口连接
    );
    
endmodule                      // 顶层模块结束标志

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=4653

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?