求助,,解决多个always对同一个赋值的问题..
新手刚学VERILOG.对于在多个always中对同一变量赋值无法综合,有木有什么解决的办法?我智商不够,,想一晚上没想出来..
比如:
always @ (posedge Input)
begin
EnableN <= 1'b0;
EnableP <= 1'b1;
...略
end
always @ (negedge Input)
begin
EnableN <= 1'b1;
EnableP <= 1'b0;
...略
end
always @ (posedge clk) //clk频率远高于Input
begin
if (EnableN == 1'b1)
...
else
...
if (EnableP == 1'b1)
...
else
...
end
咋解决.. 合并在同一个进程不就可以了 zkf0100007 发表于 2014-10-24 21:34
合并在同一个进程不就可以了
那合并在clk进程里面怎么判断Input的上升沿下降沿呢... 我只是来看看学习学习一下~~ reg inputbuf;
always @ (posedge clk) //clk频率远高于Input
begin
inputbuf <= input;
if(inputbuf &~ input) //negedge input
...
else if(~inputbuf & input) //posedge input
...
else
...
end 找到答案了{:lol:} zgbkdlm 发表于 2014-10-24 21:42
那合并在clk进程里面怎么判断Input的上升沿下降沿呢...
干嘛非要用INPUT当时钟 楼上正解,verilog HDL 始终对应着特定的数字电路,说白了就是描述一个数字电路,两个进程都对一个寄存器赋值如果不是互斥就短路了。 不就是INPUT对Enable翻转么?
组合逻辑多简单,always搞那么复杂。
assign EnableP = INPUT;
assign EnableN = ~INPUT;
搞定。 方法一:选择EnableN_1,和EnableN_2,两个信号,在这两个信号分别在两个不同的模块里面赋值,然后在用一个组合逻辑把这两个型号进行“与”或者“或”运算即可。这是一种稳妥的方法,但是比较消耗资源。
方法二:见九楼
页:
[1]