打印

verilog 顶层模块调用子模块 子模块调用子模块的疑问

[复制链接]
16601|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
XLDZZ|  楼主 | 2011-8-4 16:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 XLDZZ 于 2011-8-4 17:00 编辑

verilog 顶层模块调用子模块 子模块调用子模块的疑问
问题是这样的 我写了3个模块 M1 M2 M3
其中M1,2是子模块 M3是顶层模块
设计思想是想把输入信号SYSCLK,JDL(顶层模块定义的输入端口)通过M1模块产生CLK,JDL_N_O,
JDL_P_O,的输出信号(M1的输出信号 即通过内部wire连接到M2的输入端口,产生M2的输出信号
ST,在把ST通过内部wire连接到顶层模块M3的输出口
顶层模块的输入(即综合编译后的模块)口是SYSCLK,JDL(SYSCLK,JDL是子模块M1的输入端口)
输出口是ST(ST是子模块M2的输出端口).
子模块M1的输入口的信号是SYSCLK,JDL. 输出信号是CLK,JDL_N_O,JDL_P_O;
M1输出信号是子模块M2的输入信号(M2的输入信号是CLK,N1,P1) M2的输出信号
是顶层模块的输出信号ST

M1 I_M1                    
(
.SYSCLK (SYSCLK),  //此信号在顶层模块信号列表中定义  在内部定义为wire
.JDL    (JDL),     //此信号在顶层模块信号列表中定义  在内部定义为wire
.CLK    (CLK),     //此信号在顶层模块信号列表中没有定义  
                           //在内部定义为wire 用于驱动M2模块的时钟

        .JDL_N_O (N),      //此信号在顶层模块信号列表中没有定义 内部信号  
                           //在内部定义为wire 用于M2模块的输入信号激励
        
        .JDL_P_O (P)       //此信号在顶层模块信号列表中没有定义 内部信号  
                           //在内部定义为wire 用于M2模块的输入信号激励
);

M2 I_M2
   (
  
.CLK (CLK),     //内部信号
.N1 (N1  ),    //内部信号
.P1 (P1  ),    //内部信号
.ST     (ST )      //M3顶层模块的输出
);
现在编译报错Error: Node instance "I_M2" instantiates undefined entity "M2"
以上还请高手指点 本人比较笨也比较菜鸟

相关帖子

沙发
XLDZZ|  楼主 | 2011-8-7 11:21 | 只看该作者
木有人回答??

使用特权

评论回复
板凳
xiaoyuan_ly| | 2011-8-7 21:46 | 只看该作者
模块之间的连接,需要顶层或高层模块中定义其信号(也包括模块层次之间的连接),就相当于你自己在画电路连接线,所以说FPGA很是“猥琐”。

使用特权

评论回复
地板
hbicecream| | 2011-8-8 12:59 | 只看该作者
wire N1;
wire P1;

你的N和N1应该是同一个信号吧?

使用特权

评论回复
5
XLDZZ|  楼主 | 2011-8-10 18:19 | 只看该作者
哦 原来是这样

也就是说 M1 M2模块之间的互联线也要在主模块中的端口列表中声明

那么 如果M1的输出是A 是REG量  M2的输入是B是wire量 那么可以直接相连吗

使用特权

评论回复
6
echenlf| | 2011-8-11 15:36 | 只看该作者
把整个程序贴出来看看

使用特权

评论回复
7
XLDZZ|  楼主 | 2011-8-11 16:43 | 只看该作者
6# echenlf

太长了 而且是几个模块分开写的 我自己慢慢摸索吧

得知答案后告诉大家

使用特权

评论回复
8
liuzenglong| | 2011-8-13 22:56 | 只看该作者
inout  用定义wire或reg?

使用特权

评论回复
9
XLDZZ|  楼主 | 2011-8-14 11:23 | 只看该作者
inout口到不难理解 这个看看单片机的双向口结构就理解了

大把资料的  

就是有些地方感觉fpga不太符合人的正常思维

比如说 设计另个模块U1 U2

U1的输入是UA1 UB1 输出是UC1 UD1
U2的输入时UA2 UB2 输出是UC2

其中U1的输出是U2的输入 也就是不对外输出的  也就是内部连线wire
真正和外部链接的是UA1 UB1(输入)UC2(输出)

按我的理解只要输入输出端口声明UA1 UB1 UC2就可以了 干嘛还要声明UC1 UD1 UA2 UB2这些
内部连线呢 ?????

以上只是本菜鸟的想法

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

64

主题

182

帖子

0

粉丝