pxpwoa 发表于 2011-11-14 10:59:11

有句代码读不懂,望高手指点,谢谢!!

while(test==2)
                     @(t_cpu.m_adr.pc_addr)//fixed
                     if((t_cpu.m_adr.pc_addr%2==1)&&(t_cpu.m_adr.fetch==1))
                  begin
                        #60PC_addr<=t_cpu.m_adr.pc_addr-1;
                           IR_addr<=t_cpu.m_adr.pc_addr;
                        #340$strobe("%t   %h    %s    %h   %h",$time,PC_addr,mnemonic,IR_addr,data);
                  end

我不明白t_cpu.m_adr.pc_addr是什么意思。
t_cpu是引用的模块,adr模块是在t_cpu里引用的,pc_addr是adr模块的输入端口。
仿真的是时候出错,说Unresolved reference to 'm_adr' in t_cpu.m_adr.
大侠们帮忙看一下吧!!

pxpwoa 发表于 2011-11-14 14:59:40

这是夏老师书里的RISC_CPU的程序,大家应该有看过吧,希望能给点意见,谢谢

jahero 发表于 2011-11-14 15:55:12

你实例化 adr模块时的模块名是m_adr吗?要不是的话 就找不到pc_addr端口。其次如果你在做后仿你得把pc_addr引出来成为t_cpu的端口 这样才能调用。

pxpwoa 发表于 2011-11-14 21:35:41

本帖最后由 pxpwoa 于 2011-11-14 22:20 编辑

回复 3# jahero

实例化的模块确实错了,写成adr m_addr(.fetch(fetch),.ir_addr(ir_addr),.pc_addr(pc_addr),.addr(addr));

jahero 发表于 2011-11-14 22:10:34

你不写的是t_cpu.m_adr.pc_addr
实例化 adr m_addr
俩明显不一样么

如果改了还不对的话,告我一声 我再琢磨琢磨

pxpwoa 发表于 2011-11-14 22:19:06

本帖最后由 pxpwoa 于 2011-11-14 22:20 编辑

回复 5# jahero


    实例化的模块确实错了,但是改过来还是不行,错误提示一样的

这是cpu.v中的模块引用
      
    alu m_alu(.data(data),.accum(accum),.alu_clk(alu_clk),.opcode(opcode),
                  .alu_out(alu_out),.zero(zero));
       adr m_adr(.fetch(fetch),.ir_addr(ir_addr),.pc_addr(pc_addr),.addr(addr));
这是cputop.v中模块引用

cput_cpu(clk,reset,hale,rd,wr,addr,data);

感觉都是对应的啊

ieliao533 发表于 2011-12-9 21:41:52

"adr m_adr(.fetch(fetch),.ir_addr(ir_addr),.pc_addr(pc_addr),.addr(addr));"
你那个括号里的pc_addr是不是在模块里声明了

ieliao533 发表于 2011-12-9 21:46:21

你改过来以后有没有重新refresh下呢 然后再仿真

ieliao533 发表于 2011-12-9 22:12:20

我刚看了下 你写得那个代码是测试模块里的吧 那里只是实例化了cpu   t_cpu ();
你直接引用就行 有句代码读不懂,望高手指点,谢谢!!
while(test==2)
                     @(t_cpu.pc_addr)//fixed
                     if((t_cpu.pc_addr%2==1)&&(t_cpu.fetch==1))
                  begin
                        #60PC_addr<=t_cpu.pc_addr-1;
                           IR_addr<=t_cpu.pc_addr;
                        #340$strobe("%t   %h    %s    %h   %h",$time,PC_addr,mnemonic,IR_addr,data);
                  end
页: [1]
查看完整版本: 有句代码读不懂,望高手指点,谢谢!!