马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
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,可是我还是觉得这样写可能有问题,我不知道怎么向他们证明这一点,求大牛们多多指教啊? |