CHANG 发表于 2010-6-26 10:12:54

看了有些收获!

AAT 发表于 2010-6-26 10:55:54

偶是初学<br>
&nbsp; &nbsp;自己总结了下:<br>
&nbsp;&nbsp;@(posedge scl)&nbsp; &nbsp;触发语句&nbsp; &nbsp;不存在阻塞之类的问题&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp;&nbsp;楼主想讨论的问题怕是:<br>
&nbsp; &nbsp;@(posedge scl)<br>
&nbsp;&nbsp;begin<br>
&nbsp; &nbsp;...// 这里面的语句采用顺序执行<br>
&nbsp;&nbsp;end<br>
<br>
@(posedge scl)<br>
&nbsp;&nbsp;fork <br>
&nbsp;&nbsp;...//这里的语句采用并行<br>
&nbsp;&nbsp;join <br>
&nbsp;&nbsp;<br>
请大侠指教

Sunlife 发表于 2015-6-24 10:46:05


楼主,无论什么语句,只要在begin-end中的语句都是顺序执行的。behavior里面根据我的经验是不用&lt;=这样的表达式,因为很容易混淆,而且也完全没有必要。<br>
你的task里面用=和用&lt;=的区别对于task本身来讲区别不大,因为都可以通过这个task接受到一个有效的byte,但是如果同时其他信号有用到你sample的值,比如在第一个clk之后sample shift,如果用=(立即update值),那么就可以sample到第一个sda值,而如果用&lt;=(等待delta时间update值),就无法sample到。<br>
你可加一段debug程序:<br>
页: 1 [2]
查看完整版本: fpga新手请教,verilog代码问题~~~