作者LINAN322 (新热血阳光男孩NN)
看板Programming
标题Re: [请益] 有关nonblocking的用法,求助中...
时间Sat May 2 00:56:05 2009
嗯,那我这样子问好了,
其实我知道一种写法,
不过这是pipeline的写法,
只是觉得这样写很麻烦,感觉不是很有效率。
想要找一个更好的方法,
所以才会想到nonblocking的方式...
有更好得方法吗???
求助神大???
pipeline的写法,如下:
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呢,因为其中有相关性。
: a <= 2 * 3;
: b <= a * 2 + 3 ;
: c <= a + 2 * b ;
: d <= a + b + c ;
: 有神人可以帮我解答吗?
: 这两个差别到底再哪里?
: 对硬体资源影响会很大吗???
: 感谢~~~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.63.108.143
1F:→ LINAN322:且这样要4个CLK...有更好得方法吗??? 61.63.108.143 05/02 00:57
2F:推 ksmrt0123:这不像pipeline... 建议也可到 219.68.71.218 05/02 01:22
3F:→ ksmrt0123:electronics板问,那边也不少人懂verilog 219.68.71.218 05/02 01:23
4F:→ ksmrt0123:可试试把pipeline的每个stage分别用一个 219.68.71.218 05/02 01:30
5F:→ ksmrt0123:always block写... 219.68.71.218 05/02 01:30
6F:推 carlcarl:嗯 一般好像是用always包起来 @@ 61.227.138.19 05/02 02:26
7F:→ LINAN322:谢谢各位的建议...^^140.138.178.157 05/02 13:22