作者cscin218 (CSC)
看板Electronics
标题[问题] verilog疑问
时间Fri Oct 6 15:13:12 2017
各位大大大家好~
我在LATTICE上的CPLD测试程式却发现下列问题
首先
always @(CLK)
begin
if(Q2[3]=1)
begin
Q2 =0 ;
end
else
begin
Q2 = Q2+1;
end
end
发现连波型都没有,所以想说是不是一定要加posedge,就在测试下面程式。
always @(CLK)
begin
if(CLK)
begin
Q2 =0 ;
end
else
begin
Q2 = 1;
end
end
测试完却有波型,所以就怀疑是不是计数功能出了问题,所以就加了posedge测试。
always @(posedge CLK)
begin
if(Q2[3]=1)
begin
Q2 =0 ;
end
else
begin
Q2 = Q2+1;
end
end
测完发现功能正常
最後推断:
一开始是以为没加posedge所以无法动作,但测试了下一个程式就知道并非没posedge的关
系,最後发现好像没加posedge中的计数功能都会失效,不知道什麽原因所以上来问问各
位大大
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.37.110.129
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Electronics/M.1507273994.A.783.html
1F:推 bakerly: q2没初值,q2[3]是x,if无法判定。10/06 18:53
2F:→ BellCranell: Q2没initial value10/06 19:20
3F:推 mmonkeyboyy: 到底是谁在教HDL都没教要放初值的10/06 22:04
抱歉没有打清楚,我只撷取always的部分,我都有设定初值,但是同样是计数功能,第一
段程式执行q2却没信号,但第三段却有正常运作
※ 编辑: cscin218 (180.217.187.191), 10/06/2017 22:28:40
4F:推 ericute: 第一段可能是combinational loop导致失败吧,请问lattic10/06 23:46
5F:→ ericute: e的模拟是算真实电路模拟吗,还是纯rtl sim10/06 23:46
我第一个是真实电路的时候没波形出来,但是用modelsim模拟时却有
6F:→ Jielolz: 不贴清楚很难抓药10/07 00:18
J大
其实我想问的是关於除频器的写法,为什麽网路上查都没人用always@(clk)的写法而是都
有加正缘触发的,所以我就试了一下却发现在真实电路上无法动作
※ 编辑: cscin218 (180.217.203.132), 10/07/2017 01:08:10
7F:推 Jielolz: 没给正负缘 想像一下会怎样 10/07 01:14
没给正负缘的话,每当clk改变值时就做一次always内的流程,应该是这样子吧!?
※ 编辑: cscin218 (180.217.203.132), 10/07/2017 01:26:42
8F:推 lin089170: if(Q2[3]=1) or if(Q2[3]==1) ???10/07 08:18
9F:推 mmonkeyboyy: 楼上 nice catch 10/07 09:51
10F:推 eamansf96xs: lin大 正确10/07 10:45
不好意思今天出门现在才看到
这个是笔误,不是这个的问题…
※ 编辑: cscin218 (111.246.128.198), 10/07/2017 23:25:21
因为我用modelsim模拟时是正常的但是烧到电路中就不行,我想了解的是是不是烧到电路中有哪些用法是无法转成电路,所以导致cpld无法正常运作,想看看有没有人遇到跟我类似的事情吗?
※ 编辑: cscin218 (111.246.128.198), 10/07/2017 23:35:48
11F:→ BellCranell: 所以你有合成吗 10/07 23:44
12F:推 bakerly: 没写正负缘这电路会变成组合逻辑,你第一个电路实际上不 10/07 23:44
13F:→ bakerly: 知道会变成什麽东西。但不会是你想像的那样跑。 10/07 23:44
14F:→ bakerly: 依我对模拟器的印象也许模拟会正常,但合成後绝对不会如 10/07 23:47
15F:→ bakerly: 你想的那样跑。 10/07 23:47
16F:推 mmonkeyboyy: 楼上正解 10/08 07:29
17F:→ mmonkeyboyy: 想翻的人可以看IEEE STD1364 没有edge就是组合罗辑 10/08 07:32
18F:→ mmonkeyboyy: 至於你模拟可能可以这样跑是因为 edge除了01 还有xz 10/08 07:33
19F:→ mmonkeyboyy: 某些条件也许符合所以模拟跑得出来 具体理由我忘了 10/08 07:34
20F:推 mmonkeyboyy: 但可以得知道 你的态有可能进入了XZ 然後程式会补正 10/08 07:37
21F:→ mmonkeyboyy: 但一般这应该会有warning几乎现代的simulator都有了 10/08 07:38
22F:→ mmonkeyboyy: 除非你使用的signal都是b 然後内部就会被强制改成b 10/08 07:38
23F:→ mmonkeyboyy: 但对於synthesis来说 他才不管 他转成GATES之後就 10/08 07:39
24F:→ mmonkeyboyy: 不再考量clk (变组合罗辑了) 但simulator由於不是这 10/08 07:40
25F:→ mmonkeyboyy: 样设计的 所以才造成你可能会有结果 10/08 07:40
26F:→ mmonkeyboyy: 如果你看不懂 就当我没说 反正不重要 学到正确要 10/08 07:40
27F:→ mmonkeyboyy: 加edge就好 其他乱七八糟就不用看了 10/08 07:41
28F:→ ahoyhoy: 有glitch就死翘翘了 10/23 18:05