24小时热门版块排行榜    

CyRhmU.jpeg
查看: 742  |  回复: 4

亲爱的爷爷

银虫 (初入文坛)

[求助] FPGA逻辑问题求助,用Verilog编写已有1人参与

代码是题目的例子程序,但是小弟有些疑问!请看19行S1状态的代码,他处于组合逻辑always当中,是组合逻辑,跳出S1状态的条件是count==4.但是请看它对应的条件跳转计算器(44行-49行)是处于时序逻辑的!本人认为当count==4的那一瞬间处于组合逻辑的19-26行代码可以马上反应,是S1状态跳转至S2状态,既state_n==S2。但是44行-49行是时序逻辑,需要等下一个时钟周期才能判断,当下一个时钟周期到达时,此时state_c值已变成S2,使if(state_c==S1)里的代码进不去,使得count<=0无法执行,这样到S2状态时,计数器就会混乱!
但是代码又可以运行,无错。实在不理解,求大神们帮帮忙!

FPGA逻辑问题求助,用Verilog编写
代码1.png


FPGA逻辑问题求助,用Verilog编写-1
代码2.png


FPGA逻辑问题求助,用Verilog编写-2
题目.png
回复此楼
无奈!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

好大一条狗

新虫 (小有名气)

我觉得你的问题在于不知道verilog仿真器的层次化时间队列evaluation顺序。你为什么不写个testbench.v用displace和strobe看一下?一般来说,顺序是在当前time step开始时,evaluate 阻塞赋值,assign赋值,非阻塞的rhs,以上顺序随意。在当前timestep末端,非阻塞赋值lhs。下个时间。。另外alway *里面只是涵盖了所有赋值语句的lhs而已。count变化,没办法触发alway*

发自小木虫IOS客户端
2楼2016-02-25 14:02:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

happybbs163

新虫 (初入文坛)

3楼2016-03-09 12:52:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ZK_YZH

新虫 (初入文坛)

【答案】应助回帖

S2状态中的  state_n = S1;是什么意思?
S2状态根本执行不了啊。
4楼2016-03-12 23:38:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ZK_YZH

新虫 (初入文坛)

【答案】应助回帖

把上句改成state_n = S2;
我觉得当下一个时钟周期到达时,此时state_c值还是S1,此时state_n的值是S2,当这个时钟结束后,state_n才传给了state_c,此时state_c值才是S2,count为0 了。
5楼2016-03-12 23:46:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 亲爱的爷爷 的主题更新
信息提示
请填处理意见