verilog中,如何等到一个信号的结束?

比如C语言中,我们可以while(busy); 一直等待busy信号无效,再进行下一条语句;verilog中的wait不可综合,如何等待一个信号结束???

VERILOG里一般像你说的这种情况,要自己设置一个使能。当XXX条件满足的时候,这个使能信号就有效,当XXX条件不满足了的时候,这个使能信号就无效。其他模块可以通过判断使能的方法来检验是否等待,是否工作。使能信号的产生呢,你可以用计数器啊、状态机啊等等方法,具体看程序啊
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-10-21
将你要检测的信号设为敏感变量(触发源),当该变量变化时,检测到这个变量的变化,就可以执行变化后的语句。
例如当busy无效(从1变为0)时执行某操作,就可以写
always @ (negedge busy)
begin
busy边为0后执行的语句

end
括号中可以加入你要检测的其他敏感变量,比如时钟等,这时则要加入if 语句判断到底是哪个敏感变量变化了。
如果你设置的敏感变量只是某一阶段无效时才执行这些语句,而其他时候虽然无效但是不执行这些语句,则可以把上述例子中的判断放在状态机中,设置状态机的不同阶段(状态)。
第2个回答  2012-10-20
always@(busy)
if (busy==1)
后面加信号高电平时你要执行的内容。
else
后面加你busy结束的执行内容
。。。。

试试这样行么,把busy设置成敏感量,他变化时就会执行下面的语句,这样也是while的作用了。本回答被网友采纳

verilog中,如何等到一个信号的结束?
VERILOG里一般像你说的这种情况,要自己设置一个使能。当XXX条件满足的时候,这个使能信号就有效,当XXX条件不满足了的时候,这个使能信号就无效。其他模块可以通过判断使能的方法来检验是否等待,是否工作。使能信号的产生呢,你可以用计数器啊、状态机啊等等方法,具体看程序啊 ...

verilog 等几个脉冲
一般来说标准的verilog设计是做一个计数器,利用脉冲信号的上升沿来计数,等达到需要等待的个数输出一个结束信号。

请问verilog 编写i2c从器件, 怎么检测起始和结束信号??求热心人专业回 ...
setInterval(函数名,1000); t: Timer = new Timer(1000, 5); t.addEventListener(TimerEvent.TIMER,函数名); t.addEventListener(TimerEvent.TIMER_COMPLETE, 函数名); t.start();

...verilog如何实现跳出always或是停在case中的一个状态
if(button_n) \/\/这里添加一个条件判断模块,假如按键不按下就执行逻辑 \/*状态机或者逻辑块*\/ else ; \/\/else后直接跟分号,表示按键按下的时候这个always块不动作,保持原有状态 另一层楼的朋友说的方法实质是使用门控时钟,也是一种思路,不过在同步电路设计中不推荐使用门控时钟,容易引入毛...

(Verilog 基础篇)6.2 Verilog 任务
2)没有输入变量 3)没有输出或输出端的数量大于 1 Verilog 任务声明格式如下:task task_id ;port_declaration ;procedural_statement ;endtask 任务中使用关键字 input、output 和 inout 对端口进行声明。input、inout 型端口将变量从任务外部传递到内部,output、inout 型端口将任务执行完毕时的结果传...

关于verilog的assign
1. assign的基本语法:在Verilog中,使用连续赋值操作符“<=”来定义assign语句。例如,“wire_signal <= expression;”表示将表达式的结果连续赋值给wire_signal信号。这里的wire_signal可以是任何类型的线网元素,而expression则是一个可以计算并返回值的表达式。2. assign的工作方式...

写Verilog代码时,如何控制一个信号线的拉高与拉低。
将先来的数据寄存,新来的数据与之前的相比较,如果不同输出使能信号,表示有数据变化

verilog 关于阻塞与非阻塞赋值同时使用时的问题
其实时序逻辑中,信号有一定的保持时间。使用非阻塞赋值的时候,<=右边的信号变化,也不会马上对左边的信号造成影响,而是要等到一个周期之后。而组合逻辑中使用阻塞赋值,右边的信号变化,会立即对左边的信号造成影响。阻塞赋值更像是顺序执行,而非阻塞赋值更符合并行执行。比如always块中有:y = a ;y...

verilog中想让状态机停在某一个地方,不再接着执行而是直接跳到另外的...
这个容易,锁定触发条件就成。简单说就是,写完了状态机。人为的再加入一个更高级的条件信号。比如,当该信号为1的时候,状态机正常跳转。该信号为0时,各个状态保持。至于跳到另外个always中,没看懂,always都是并行的。并行结构的设计,不会像C那样跳来跳去。

在verilog设计中,给时序逻辑电路清零,有哪两种方法,如何实现?
verilog可以利用同步复位和异步复位来给时序逻辑电路清零,同步复位是需要有时钟,在时钟沿来的时候检测复位信号的值,如果复位信号有效,则对电路清零。异步复位比较简单,复位信号直接连到d触发器的复位端,一旦复位信号有效就对电路清零。

相似回答