在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜帖子
查看: 12242|回复: 7

[求助] verilog中,module一开始声明I/O时,output和reg连用是什么意思?

[复制链接]
发表于 2012-9-11 17:30:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
以下是quartus ii中一个verilog template的一部分


   

        

                
  1. module unsigned_multiply_with_input_and_output_registers
  2. #(parameter WIDTH=8)
  3. (
  4.         input clk,
  5.         input [WIDTH-1:0] dataa,
  6.         input [WIDTH-1:0] datab,
  7.         output reg [2*WIDTH-1:0] dataout //问题就在这里...
  8. );
  9. //...

  10. endmodule
            

   

    复制代码


以前没见过 output reg 这种连用的表示,我对此的臆测是,它等价于下面的代码:



   

        

                

  1. module unsigned_multiply_with_input_and_output_registers
  2. #(parameter WIDTH=8)
  3. (
  4.         input clk,
  5.         input [WIDTH-1:0] dataa,
  6.         input [WIDTH-1:0] datab,
  7.         output  [2*WIDTH-1:0] dataout //先声明 output 变量
  8. );  reg [2*WIDTH-1:0] dataout;//再声明 reg 同名变量  //...
            

   

    复制代码


请问这样理解对吗?如果不对,这种连用是什么意思?
发表于 2012-9-11 20:19:41 | 显示全部楼层
这是verilog-2002规范
回复 支持 反对

使用道具 举报

发表于 2012-9-11 21:13:34 | 显示全部楼层
这是verilog2001的语法。
你不觉得你写的第二段代码很冗长吗?一个端口为什么要分两行来写呢?在verilog95里甚至要用3行写。
所以verilog2001引入了这种类似C的定义方法,一句话就把端口所有的属性全交代清楚了。
回复 支持 反对

使用道具 举报

发表于 2012-9-11 21:37:08 | 显示全部楼层
lz猜对 了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-11 21:46:12 | 显示全部楼层
回复 3# orlye


    连verilog95的细节都有了解,想必是为老前辈了,我是新手,多谢您的指教
回复 支持 反对

使用道具 举报

发表于 2014-3-22 11:21:18 | 显示全部楼层
verilog 2001的syntax。
回复 支持 反对

使用道具 举报

发表于 2014-3-22 12:04:02 | 显示全部楼层
hao  a   hao  hao hoa
回复 支持 反对

使用道具 举报

发表于 2021-2-3 20:22:30 | 显示全部楼层
这么写为啥spectreverilog报错呢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-8-23 02:27 , Processed in 0.028360 second(s), 3 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表