wangwenjia 发表于 2011-5-16 08:59:11

请教多个alwars里面对同个变量赋值报错问题

always @(negedge nRST)
begin
   reg_dat<= 0;
end

always @(posedge clk)
begin
reg_dat 《= reg_dat +1;
end       

如此写法在 Quartus 里面是报出错的
可要实现这样的功能,要如何表达呢?

leacom 发表于 2011-5-16 10:42:11

nRST是异步复位信号?
应该和clk放到同一个always里面去

lslong 发表于 2011-5-16 11:01:25

回复【楼主位】wangwenjia
-----------------------------------------------------------------------

一个变量不能在多个always块中被赋值。应该为:
always @(posedge clk or negedge nRST)
begin
   if(!nRST)
       reg_dat<= 0;
   else
       reg_dat 《= reg_dat +1;
end

lslong 发表于 2011-5-16 11:05:31

回复【楼主位】wangwenjia
-----------------------------------------------------------------------

sorry 上面的赋值符号写错了(应是 '<=' )

always @(posedge clk or negedge nRST)
begin
   if(!nRST)
       reg_dat <= 0;
   else
       reg_dat <= reg_dat +1;
end

wangwenjia 发表于 2011-5-16 13:07:00

【1楼】 leacom
nRST是异步复位信号?
应该和clk放到同一个always里面去
-----------------------------------------------------------------------------
是的复位信号


【3楼】 lslong 大龙
-----------------------------------------------------------------------------
谢谢 我试下

brahen 发表于 2011-5-16 21:08:19

3楼正解。

wangyanke520 发表于 2011-7-31 17:21:57

回复【2楼】lslong 大龙
回复【楼主位】wangwenjia
-----------------------------------------------------------------------
一个变量不能在多个always块中被赋值。应该为:
always @(posedge clk or negedge nrst)
begin
   if(!nrst)
       reg_dat&lt;= 0;
   else
       reg_dat 《= reg_dat +1;
end

-----------------------------------------------------------------------

说出了原因。
页: [1]
查看完整版本: 请教多个alwars里面对同个变量赋值报错问题