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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1937|回复: 6

[求助] verilog代码问题

[复制链接]
发表于 2021-11-23 10:41:17 | 显示全部楼层 |阅读模式

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

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

x
各位大神,想请教一个问题:

在每个时钟CLK上升沿采样,使能信号EN初始为低,输出VREF为低;EN变为高,VREF变为不定态;四个周期后,如果EN还为高,则VREF变成1,如果EN变为低,VREF以后一直保持不定态。
这个逻辑的verilog怎么写??
我写的过程中:使能信号EN初始为低,输出VREF为低如果EN变为低,VREF以后一直保持不定态。这两句出现了矛盾,不知道怎样写才能解决。谢谢!!

发表于 2021-11-23 11:03:59 | 显示全部楼层
en为高以后,加个计数器,如果计数器的值大于3(从0开始计),再根据en的值决定vref的值
发表于 2021-11-23 11:09:31 | 显示全部楼层
增加一个标志,在EN上升沿时置1,在这个标志为1时,不判断EN为低的情况
发表于 2021-11-23 11:27:06 | 显示全部楼层
加个counter
 楼主| 发表于 2021-11-23 14:23:50 | 显示全部楼层
本帖最后由 小花321 于 2021-11-23 14:30 编辑


smarthb 发表于 2021-11-23 11:03
en为高以后,加个计数器,如果计数器的值大于3(从0开始计),再根据en的值决定vref的值 ...


谢谢你的意见,请问我这样写对吗?我试了下结果还是一样的,如果把最后5行else的内容去掉就对了,因为是边沿触发,这样只写if,不写else应该是保持前面的结果,也不会形成锁存器,应该就没问题了 22.PNG
发表于 2021-11-23 15:23:29 | 显示全部楼层
用状态机比if else简洁吧
发表于 2021-11-23 15:46:51 | 显示全部楼层


小花321 发表于 2021-11-23 14:23
谢谢你的意见,请问我这样写对吗?我试了下结果还是一样的,如果把最后5行else的内容去掉就对了,因为是边 ...


你这不是verilog代码,是C语言的表达方式吧,verilog代码不是这么写的.主体代码,简写给lz做个参考:
state0  : begin
                   if( en )  vref <= 1'bz;
                   else      vref <= 1'b0;
                   if(en) state <= state1;
                   else       state <= state0;
               end
state1   :  begin
                     state1 <= state1;
                     cnt <= cnt + 1;
                     if( cnt > 3)
                         vref <= en ? 1'b1 : 1'bz;
               end

按照lz的表述,只有初始化的时候检测一次en的状态,如果需要不定时检测,上述的状态机(状态转移条件)需要做改动。                                             

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-24 20:36 , Processed in 0.021395 second(s), 8 queries , Gzip On, Redis On.

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