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

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 11352|回复: 9

[求助] 关于verilog中function和assign的用法,有个问题请教

[复制链接]
发表于 2011-5-19 01:20:28 | 显示全部楼层 |阅读模式

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

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

x
各位大虾好,最近在看王金明的《Verilog HDL程序设计教程》,里面有个关于function的用法的例题,自己有点想不通,虚心请教各位大虾,

     这个例题是一个8-3编码器的模块,里面用到了function和assign,最后用  assign dout=code(din);调用function。模块程序是书上给的,然后我自己编了激励,想看看波形对不对。

     因为是个8位输入的编码器,所以我的激励把8位的二进制数轮询一遍,看波形,波形是对的。但我有个问题。

     function默认的返回值是reg型的,然后又有资料说assign赋值,等号两边都应该是wire型,这时若等式右边信号有变化,都会反应到等式左边去,那么这个模块中调用function的语句assign dout=code(din); code是reg型的,那code的值变化不会反应到dout上去,所以只有一个值。  

    那为什么实际中仿真的时候code的值变化能够反应到dout上去呢?

————————————————————————————————————————————————————————————————————-——————
以下是8-3编码器的模块程序


module code8_3(din,dout);
  input[7:0] din;
  output[2:0] dout;
wire[2:0] dout;
  
  
  function [2:0] code;
    input[7:0] din;
    casex(din)
      8'b0xxx_xxxx: code=3'b000;
      8'b10xx_xxxx: code=3'b001;
      8'b110x_xxxx: code=3'b010;
      8'b1110_xxxx: code=3'b011;
      8'b1111_0xxx: code=3'b100;
      8'b1111_10xx: code=3'b101;
      8'b1111_110x: code=3'b110;
      8'b1111_1110: code=3'b111;
      default: code=3'bxxx;
    endcase
  endfunction
  
  assign dout=code(din);
endmodule
发表于 2011-5-19 06:35:15 | 显示全部楼层
code是函数,该设计调用了这个函数,所以输出当然要随着函数的输出变化了。
assign dout=code(din);
就像设计和激励一样,设计输出是reg的可是激励调用是用的是wire的。
发表于 2011-5-19 06:35:29 | 显示全部楼层
code是函数,该设计调用了这个函数,所以输出当然要随着函数的输出变化了。
assign dout=code(din);
就像设计和激励一样,设计输出是reg的可是激励调用是用的是wire的。
发表于 2011-5-19 09:50:12 | 显示全部楼层
"然后又有资料说assign赋值,等号两边都应该是wire型"

这种说法是错误的,等式右边的不一定要是wire型
 楼主| 发表于 2011-5-19 11:15:40 | 显示全部楼层




    我明白了,多谢回答
 楼主| 发表于 2011-5-19 11:17:04 | 显示全部楼层


"然后又有资料说assign赋值,等号两边都应该是wire型"

这种说法是错误的,等式右边的不一定要是wire型
AmoiBB 发表于 2011-5-19 09:50




    那就是说,等式右边是reg型时,它的变化也会反映到等式左边
发表于 2011-5-20 09:22:30 | 显示全部楼层
回复 6# 418478935


   是的
发表于 2011-5-22 15:18:30 | 显示全部楼层
神马?
发表于 2012-2-16 14:27:14 | 显示全部楼层
恩。。支持下。。function返回值为code...调用code()函数,可以在assign语句,也可以在always语句中吧。。
发表于 2012-4-27 00:24:18 | 显示全部楼层
lu guo..........
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-5-31 13:01 , Processed in 0.024507 second(s), 10 queries , Gzip On, MemCached On.

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