有句代码读不懂,望高手指点,谢谢!!
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.
大侠们帮忙看一下吧!! 这是夏老师书里的RISC_CPU的程序,大家应该有看过吧,希望能给点意见,谢谢 你实例化 adr模块时的模块名是m_adr吗?要不是的话 就找不到pc_addr端口。其次如果你在做后仿你得把pc_addr引出来成为t_cpu的端口 这样才能调用。 本帖最后由 pxpwoa 于 2011-11-14 22:20 编辑
回复 3# jahero
实例化的模块确实错了,写成adr m_addr(.fetch(fetch),.ir_addr(ir_addr),.pc_addr(pc_addr),.addr(addr)); 你不写的是t_cpu.m_adr.pc_addr
实例化 adr m_addr
俩明显不一样么
如果改了还不对的话,告我一声 我再琢磨琢磨 本帖最后由 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);
感觉都是对应的啊 "adr m_adr(.fetch(fetch),.ir_addr(ir_addr),.pc_addr(pc_addr),.addr(addr));"
你那个括号里的pc_addr是不是在模块里声明了 你改过来以后有没有重新refresh下呢 然后再仿真 我刚看了下 你写得那个代码是测试模块里的吧 那里只是实例化了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]