RISVC 单周期处理器数据路径和测试平台

问题描述 投票:0回答:1

在本实验中,假设您将所有控制信号作为输入。

我似乎无法正确连接所有东西。我需要我的波形配置看起来像这样,但不知怎的,我最终得到了杜松子酒 x 和 z 的所有东西。我该如何解决。我已经附上了我需要的图表! 参数以及输入和输出已给出,不可编辑,因此我没有包含它们!


wire [7:0] d;
wire [7:0] q; 
wire [7:2] PC;
wire [7:0] PCPlus4;
wire MemRead;            
wire MemWrite;           
wire [8:2] addr;         
wire [31:0] write_data;  
wire [31:0] read_data;   
wire [31:0] instruction;
wire [4:0] rg_rd_addr1, rg_rd_addr2, rg_wrt_addr;
wire Sel;  
wire [31:0] D1;      
wire [31:0] D2;     
wire [31:0] Y; 
wire [31:0] A_in;    
wire [31:0] B_in;   
wire [3:0] ALU_Sel;   
wire [31:0] ALU_Out;  
wire Carry_Out;        
wire Zero;             
wire Overflow;       
wire [31:0] WriteBack_Data;
wire [31:0] InstCode;    // Instruction input to ImmGen
wire [31:0] ImmOut; 

FlipFlop flipflop_instance (
    .d(PCPlus4),
    .clk(clk),
    .reset(reset),
    .q(PC)
);

InstMem instruction_memory (
    .addr(PC[9:4]),      
    .instruction(instruction)
);

assign rg_rd_addr1 = instruction[19:15];
assign rg_rd_addr2 = instruction[24:20];
assign rg_wrt_addr = instruction[11:7];

assign opcode = instruction[6:0];
assign funct3 = instruction[14:12];
assign funct7 = instruction[31:25];

// Instantiate RegFile
RegFile reg_file (
    .clk(clk),
    .reset(reset),
    .rg_wrt_en(reg_write),
    .rg_rd_addr1(instruction[19:15]),
    .rg_rd_addr2(instruction[24:20]),
    .rg_wrt_addr(instruction[11:7]),
    .rg_rd_data1(Reg1),
    .rg_rd_data2(Reg2)
);

ImmGen immediate_generator (
    .InstCode(InstCode),
    .ImmOut(ExImm)
);

Mux_32_To_1 mux_1 (
    .S(alu_src),
    .D1(Reg2),
    .D2(ExtImm),
    .Y(SrcB)
);

alu_32 my_alu (
    .A_in(Reg1),
    .B_in(SrcB), 
    .ALU_Sel(ALU_Sel), 
    .ALU_Out(alu_result), 
    .Carry_Out(Carry_Out),
    .Zero(Zero),      
    .Overflow(OverFlow) 
);

DataMem data_memory (
    .MemRead(mem_read),
    .MemWrite(mem_write),
    .addr(alu_result),
    .write_data(write_data),
    .read_data(D2)
);
Mux_32_To_1 mux_2 (
    .S(mem2reg),
    .D1(Reg2),
    .D2(ExtImm),
    .Y(WriteBack_Data)
);

endmodule `
verilog cpu-architecture vivado
1个回答
0
投票

有几个问题。

  1. 您尚未在提供的代码中实例化

    Adder
    Adder
    模块应派生
    PCPlus4
    ,并将其馈送到
    FlipFlop
    。您看到所有
    X
    是因为 PCPlus4 不是由任何在触发器输出处生成
    X
    的逻辑驱动,然后这些
    Xs
    传播到整个 .

  2. reg_write
    未被驱动。它应该来自测试台。同样,还有更多信号来自测试平台。请提供您的测试台以供进一步说明。

© www.soinside.com 2019 - 2024. All rights reserved.