集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 2683|回复: 8

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

[复制链接]
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
                        #60  PC_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中模块引用

cpu  t_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
                        #60  PC_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 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-24 19:41 , Processed in 0.096300 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表