集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 3071|回复: 6

大家帮我分析一下,谢谢!

[复制链接]
danieldx 发表于 2011-2-18 10:21:20 | 显示全部楼层 |阅读模式
module sync_reset(clock,rst_n,d,q);
input[2:0] d;
input clock;
input rst_n;
output[2:0]  q;
  
reg[2:0]  d;
reg[2:0]  q;


  always@(posedge clock)
  if(!rst_n)
    q[2:0]<=3'b000;
  else
    q[2:0]<=d[2:0];
  endmodule
==================================
为什么编译时会报错:
** Error: F:/code/sync_reset.v(7): Port mode is incompatible with declaration: d
请赐教!!!
 楼主| danieldx 发表于 2011-2-18 10:23:26 | 显示全部楼层
如果要把d和q都定义为寄存器变量,应该怎么改?
wangxia6112 发表于 2011-2-18 11:01:37 | 显示全部楼层
d[2:0]不能定义为reg型。程序如下。
module sync_reset(clock,rst_n,d,q);
input[2:0] d;
input clock;
input rst_n;
output[2:0]  q;
  
reg[2:0]  q;


  always@(posedge clock)
  if(!rst_n)
    q[2:0]<=3'b000;
  else
    q[2:0]<=d[2:0];
  endmodule

此时d默认为wire型,你也可以添加一句,wire [2:0]d。
 楼主| danieldx 发表于 2011-2-18 11:13:14 | 显示全部楼层
恩 为什么d不能定义成reg型呢?
reg型变量可以赋给另外一个reg型变量的,对吧?
zhouliang 发表于 2011-2-18 11:41:45 | 显示全部楼层
d是输入值,变量是程序运行时其值可以改变的量,input连变量都不是,怎么可以定义成reg型变量呢
 楼主| danieldx 发表于 2011-2-18 13:36:47 | 显示全部楼层
那既然input不是变量,为什么d定义成线网类型变量又可以呢?
zhouliang 发表于 2011-2-18 15:11:11 | 显示全部楼层
a,不好意思,我把它当成VHDL了,我又查了一下,在Verilog HDL模块中的输入/输出信号类型缺省时自动定义为wire型。reg型对应于触发器或寄存器这一类记忆功能,而input变量是不具备这一性质的。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

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

GMT+8, 2024-12-29 14:29 , Processed in 0.059465 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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