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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2155|回复: 3

[求助] 关于function的使用问题,求牛人帮忙看看

[复制链接]
发表于 2011-11-10 10:32:14 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 我爱的公崽 于 2011-11-10 13:50 编辑

function valid_channel;
input valid_in;
input [11:0] datai_channel_d;
input [11:0] Hmark,Lmark;
begin
valid_channel = (datai_channel_d > Hmark)? 0 : (
       (datai_channel_d < Lmark)? 1 : valid_in
       );
end
endfunction

always @(posedge clk50m or posedge rst50m)
if (rst50m)
begin
valid_b = 1;
valid_a = 0;
valid_c = 0;
valid_d = 0;
end
else
begin
valid_b = valid_channel(valid_b, datai_chb_0, Hmark_chc ,Lmark_chc);
if(valid_b == 0)
begin
  valid_a = valid_channel(valid_a, datai_cha_0, Hmark_chc ,Lmark_chc);
  if(valid_a == 0)
  begin
   valid_c = valid_channel(valid_c, datai_chc_0, Hmark_chc ,Lmark_chc);
   if(valid_c == 0)
   valid_d = 1;
  end
end
end
这样使用function可以吗?在这里时序逻辑电路中使用阻塞赋值不会有问题吗?我看夏宇闻的《verilog数字系统设计教程》中说:时序电路建模时,用非阻塞赋值。关于这段代码,我设计一个testbench在ISE12.4中仿真是没有问题,综合也没有发现latch warning,可是我还是觉得这样写可能有问题,我不知道怎么向他们证明这一点,求大牛们多多指教啊?
发表于 2011-11-10 21:54:55 | 显示全部楼层
function不能带有延迟的东西。。。
发表于 2011-11-11 00:52:16 | 显示全部楼层
诡异的写法....时序和组合电路,夹杂在一起...
我觉得会有毛刺问题..
发表于 2011-11-12 09:16:37 | 显示全部楼层
function是不会产生latch的,对与你下面的always块明显可以分开,每个用一个always块,这样结构清晰,也不会有你现在想问的这些纠结问题.不知道你的功能是否正确。单从语法上来说问题不打,但是这种代码像是软件工程师写的,根本没有逻辑电路设计工程师的感觉,写这种代码只能说还没入门。都是国内一些教课书害的,还是多看看国外的原著进步比较大。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-28 03:38 , Processed in 0.019037 second(s), 10 queries , Gzip On, Redis On.

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