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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6279|回复: 10

求助关于verilog的一个问题

[复制链接]
发表于 2007-12-20 09:57:21 | 显示全部楼层 |阅读模式

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

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

x
module PWM//
    (
        input CLK,
        input N,//延时的时钟周期
        input CLK_ab,
       output pwmab, pwmba
);
  reg  pwmab_temp=0;
  reg  pwmba_temp=0;//
always @(CLK_ab)
begin
      if(CLK_ab==0)
      begin
       pwmab_temp=0;
       #N  pwmba_temp=1;
        end
    if(CLK_ab==1)
      begin
       pwmba_temp=0;
       #N  pwmab_temp=1;
      end
end
assign pwmab=pwmab_temp;
assign pwmba=pwmba_temp;
endmodule
这段程序有什么问题啊??怎么老是说
Warning (10240): Verilog HDL Always Construct warning at PWM.v(23): inferring latch(es) for variable "pwmab_temp", which holds its previous value in one or more paths through the always construct

请高手帮忙看看
发表于 2007-12-20 10:00:17 | 显示全部楼层
这个warning是说产生了锁存器
另外,这个代码应该是个TB吧?
 楼主| 发表于 2007-12-20 10:09:32 | 显示全部楼层
TB是什么??
发表于 2007-12-20 11:00:22 | 显示全部楼层

你这是在写软件

你这是写软件
coding style问题,写的时候你一定没先去想它的硬件实现
首先module ports里面两个时钟。如果不是CLK GENERATOR,不能这么写
其次触发器没有reset.现在工艺库里面基本触发器怎么会没有异步reset呢
#N...这个是bench写法,怎么综合。你应该用简单状态机或者至少2个always来写。

周围有个人一步步指导,后面就会好的:)
发表于 2007-12-20 11:01:32 | 显示全部楼层
把两个if改成if。。。else结构应伽i就不会出现警告了
另外你这个代码中的CLK输入并没用到
这个代码也是不可综合的,除非是对某ip核的例化
 楼主| 发表于 2007-12-20 11:08:07 | 显示全部楼层
谢谢大家
我把if。。if改了(是不是因为有可能出现条件不满足的情况,所以用锁存器来保存??),但是程序还是和我相像的不一样。。
那`timescale 10ns/1ns怎么用CLK实现啊?我写CLK是想实现这个功能的,但是后面的东西没想好还没写。
发表于 2007-12-20 11:13:14 | 显示全部楼层
latch的问题是因为你#N那块造成的
解释器错误以为同一个always块的同一分支一会1一会0,误解了你的意思

如果不是这块写的有问题,一般时序逻辑里面不会综合成latch的
 楼主| 发表于 2007-12-20 11:16:33 | 显示全部楼层
不太理解。。。
 楼主| 发表于 2007-12-20 14:19:05 | 显示全部楼层
谁能给个例子看看么??
发表于 2007-12-20 22:02:04 | 显示全部楼层
你这段代码只能在仿真时可用, 不能作为综合的输入.
你想要的功能是什么呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

GMT+8, 2025-5-15 11:26 , Processed in 0.040767 second(s), 9 queries , Gzip On, MemCached On.

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