【P4】Verilog搭建单周期MIPS-CPU

课下

Bug_Log

1.模块实例化的信号需先定义

其实testbench见过多次了,自己写的时候还想不清。

若实例化模块时使用的信号,若事先无声明,则会自动生成1bit此名称信号,自然在多位信号传输中便出错了。使用单位信号的模块到可以省略实现声明。

2.assign的对象不为寄存器

细碎的语言基础啊。。从逻辑上也不可能对寄存器使用连续赋值。

语法检查不会报错,会在仿真时报错。

3.PC-IM地址问题

[31:0]] IM PC -> addr
[0] 0 , .data : 0x0000_0000
[1] 4
[2] 8
... ...
[3071] 12284 , .data最后一个地址
[3072] 12288 , .text : 0x0000_3000
... ...
[4095] 16380 , 此时可存入最大指令1024(=4095-3071)个
... ...

Memory使用:

  • reg[31:0] IM[0:4095]此声明下的memory从0开始;
  • $readmemh("<数据文件名>", <存储器名> [, <起始地址>, <终止地址>]); 每个被读取的数字都被存放到地址连续的存储器单元中。
    • 存储器单元的存放地址由系统任务的起始地址和结束地址说明
    • 文件中每个数据的存放地址在数据文件中说明,用@hh...h标识
上一篇:第八次实验


下一篇:软件定义网络实验八