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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

一小段Verilog HDL程序,帮忙!大侠!

[复制链接]
发表于 2007-9-28 12:46:30 | 显示全部楼层 |阅读模式

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

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

x
我是刚学的,对于Verilog HDL 不是很熟
下面这段程序是我刚写的,编译的时候没有错误
仿真的时候
HOLD_BEGIN总是为高。我想问问大侠们  我这里是不是有什么语法错误
always能后面用3个边沿触发吗?
谢谢!!小弟先谢过了!

reg HOLD_BEGIN;
always @(negedge HOLD_C or posedge DOWN_TIME or posedge RST)
begin
if (RST)HOLD_BEGIN=0;
else
HOLD_BEGIN=1;
end
发表于 2007-9-28 13:42:15 | 显示全部楼层
你的TESTBENCH怎么写的?
发表于 2007-9-28 14:01:19 | 显示全部楼层


原帖由 firekingrr 于 2007-9-28 12:46 发表
我是刚学的,对于Verilog HDL 不是很熟
下面这段程序是我刚写的,编译的时候没有错误
仿真的时候
HOLD_BEGIN总是为高。我想问问大侠们  我这里是不是有什么语法错误
always能后面用3个边沿触发吗?
谢谢! ...



没完整的看你的代码,不过从这段代码来看,确是出自初学者之手,一般能用于综合always的敏感列表中最多只会使用三个边沿触发,分别是:时钟、异步清零和异步置位,代码的风格为:
always @( posedge clk or negedge arst_n or aset_n )
      if( !arst_n ) begin           //异步清零,低有效
           //...
      end
      else if( aset_n )  begin    //异步置位,低有效
           //...
      end
      else begin                    //其他情况时
           //...
      end

而你写的那段代码据我推测是没法综合的(除非你找到了一个超级智能的综合器),因为综合工具会认为你的代码企图综合为两个时钟边沿控制的逻辑,而且一个是上升沿触发(DOWN_TIME),另一个是下降沿触发(HOLD_C),但可以仿真,因为从VerilogHDL语法角度看,没有问题,至于你说的HOLD_BEGIN总是为高,那么可能是你的激励中RST没有变高,如果RST变高,那么HOLD_BEGIN是会变为低的。
发表于 2007-9-29 09:38:01 | 显示全部楼层
不是很明白楼上的"两个时钟边沿控制的逻辑,而且一个是上升沿触发(DOWN_TIME),另一个是下降沿触发(HOLD_C)"是什么意思,你写的"posedge clk or negedge arst_n"不同样是2个触发沿么
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-9 00:46 , Processed in 0.030954 second(s), 8 queries , Gzip On, Redis On.

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