微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 求教verilog 代码解释和@ 的用法

求教verilog 代码解释和@ 的用法

时间:10-02 整理:3721RD 点击:
task read_word;
begin
   @(negedge clk);
   readp = 1;
   @(posedge clk) #5;
   readp = 0;
end
endtask
请问上面这段verilog代码是什么意思,“@”没有和always在一起用, 却单独使用,头一次见到,@有什么用法,请教各位,多谢多谢!

就是等待后面的条件才能触发往下走

这个我也还真没见过,同求解

    正解。

看书不比你在这里问强嘛?这是最基本的语法,跟电路无关的东西,只有在tb里才用的到。

二楼的朋友说得对,这个是用在测试代码中的,有点像wait(...),但是@(posedge ...)是边沿触发的~,只有等到这个时间触发了,仿真才回往下进行~

正解,就是在等到这个事件触发条件的满足,满足了才往下走。

书上说得很清楚呢,任务的使用。

这种代码只用在仿真,在实际的综合代码中很少这么用的

这样理解:
initial块只执行一次,always块会一直被执行。所以可以这样写时钟:initial clk = 0; always #10 clk = ~clk;对吧?
那么再说@,那是个触发条件的标识符,后面跟的是条件表达式,比如posedge clk或者*。如果是电平信号,用wait。
总之,把always和@分开理解,一个是块标识,一个是触发条件标识。

个人觉得加不加always都可以吧,理解用途就成了

这一般是仿真用的行为模型,就是等到条件满足后才会执行后面的语句。

这是 tb 里面任务用的,建议看一下verilog 语言里面的任务

是等待满足后面的条件,然后进行下一步。

testbench里经常会用到的基本语法,看书去

晕 每个人都说看书去 为什么我就没有看到书上有啊。那一本书啊



    《高级verilog设计》有#5,应该是属于testbeach,但是在该书中,这种@的形式,是可以综合成状态机的。我综合过!

学习了~

always和@分开理解,一个是块标识,一个是触发条件标识  同意

应该是在testbench里面用到的

给一个触发的边沿!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top