作者SILee (working for what?)
看板Programming
标题Re: [请益] 有关nonblocking的用法,求助中...
时间Sat May 2 03:21:20 2009
※ 引述《LINAN322 (新热血阳光男孩NN)》之铭言:
: 嗯,那我这样子问好了,
: 其实我知道一种写法,
: 不过这是pipeline的写法,
: 只是觉得这样写很麻烦,感觉不是很有效率。
: 想要找一个更好的方法,
: 所以才会想到nonblocking的方式...
: 有更好得方法吗???
: 求助神大???
: pipeline的写法,如下:
这样写并不会synthesis出pipeline
因为你每一次clock trigger时就只会执行一个case
这跟pipeline的behavior不一样
充其量只能说是一个state machine
: case (i)
: 1: begin
: a = 2 * 3;
: i=i+1;
: end
: 2: begin
: b = a * 2 + 3 ;
: i=i+1;
: end
: 3: begin
: c = a + 2 * b ;
: i=i+1;
: end
: 4: begin
: d = a + b + c ;
: i=i+1;
: end
: default: begin
: i=i+1;
: end
: ※ 引述《LINAN322 (新热血阳光男孩NN)》之铭言:
: : 想请教一下有关verilog的问题
: : 有关於blocking的写法。
: : 小弟目前写code都是用blocking的写法,
: : 但是看书,很少人用blocking的写法,
: : 都是用unblocking的。
: : 很奇怪,因为我目前写的code都是可以合成的,
: : 但是不清楚这样写是不是很伤硬体的资源。
: : 如四行数学式的运算:
: : 1. a = 2 * 3
: : 2. b = a * 2 + 3
: : 3. c = a + 2 * b
: : 4. d = a + b + c
: : 因为我用blocking的写法,且a,b,c,d均有相关,所以如下:
: : a = 2 * 3;
: : b = a * 2 + 3 ;
: : c = a + 2 * b ;
: : d = a + b + c ;
: : 所以我这样写,不过我非常的没有自信,因为没有书给我任何的佐证
: : 所以我非常疑惑,虽然我可以合成。
: : 但是我去烧入至fpga,正确的演算法结果可以跑出吗?还是一定会有问题?
: : 其实我懂得unblocking,但是用unblocking写,我很不习惯。
: : 只是不懂得unblocking的设计方式。
: : 如果是这样写,
: : 那我怎麽让他delay呢,因为其中有相关性。
你原本这个写法才是一个4 stages pipeline的写法
每一次clock trigger时data会往前一个stage forward
还有我不清楚你要delay干麻?
依你这个algorithm来说
non-blocking的写法跟你原本的blocking写法
在最後的output结果上只差在於它会delay 3个clock cycles
但是不要忘记,切pipeline可以提升clock rate
所以delay 3个clock cycles对於整体的timming上应该没什麽差
如果你就是硬要他在一个clock之内作完
那就写成combinational circuit就好了
何必还要多用那麽多个registers?
: : a <= 2 * 3;
: : b <= a * 2 + 3 ;
: : c <= a + 2 * b ;
: : d <= a + b + c ;
: : 有神人可以帮我解答吗?
: : 这两个差别到底再哪里?
: : 对硬体资源影响会很大吗???
: : 感谢~~~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.59.105.115
1F:推 LINAN322:谢谢你喔,我转去Electronics...140.138.178.157 05/02 13:38
2F:→ LINAN322:再次感谢...^^140.138.178.157 05/02 13:38