请教:如何在不同always中对同一变量赋值?

[复制链接]
7265|18
 楼主| echenlf 发表于 2010-1-16 12:07 | 显示全部楼层 |阅读模式
有一标志变量**,我想在一个always中赋1,另一个always中赋0,但verilog是不支持的,该怎么做呢?
玄德 发表于 2010-1-16 17:27 | 显示全部楼层
何时为1,何时为0,总要有条件的吧?
把条件写上就行了
yxwsz 发表于 2010-1-17 19:12 | 显示全部楼层
这样使用是有问题的,不管是VERILOG还是VHDL,都不能这样使用。
书面说法是导致仿真和综合结果不一致。
16ysa 发表于 2010-1-17 20:50 | 显示全部楼层
乱了?  mark一下  等待 高人
ma9453 发表于 2010-1-19 19:54 | 显示全部楼层
VERILOG貌似不支持吧?等高人解答
 楼主| echenlf 发表于 2010-1-21 15:57 | 显示全部楼层
好象是可以了,但总觉得没有C语言中在不同函数中对同一变量赋值方便,请高手看是否可行。
module(reset,clk,wr,rd,add,status)
input reset,clk,wr,rd;
input  [2:0] add;
output status;

wire [7:0] cs;
wire **;
reg [3:0] counter;

assign cs = ~(1<<add);
assign ** = cs[1] | wr;
always @ (posedge clk)
begin
    if (!reset)counter <= 0;
    else
       begin
            if(counter=7)counter<=0;
            else counter<= counter + 1;
      end
end

always @(negedge wr)
begin
       if(!cs[2])....... //do something
end

always @(posedge counter[3] or negedge **)  
begin
        if(!**) status <= 0;
       else if (counter[3])status <=1;
end

endmodule
小嘿 发表于 2010-1-23 13:08 | 显示全部楼层
oh 兰州,这样是行不通的,不,不,最好的综合器都不行,再贵的fpga都不行
sleepybear 发表于 2010-1-24 15:27 | 显示全部楼层
C跟Verilog的思想是完全不同的。不要拿来做对比。。。
xddzccn 发表于 2010-1-24 19:24 | 显示全部楼层
LZ 是不是要表达这个意思啊,看看这个电路上可以实现吗,ms不行啊 呵呵

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| echenlf 发表于 2010-1-26 08:36 | 显示全部楼层
是这样的,WR操作后,**=1;RD操作后,**=0;

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| echenlf 发表于 2010-1-26 08:37 | 显示全部楼层
怎么用Verilog 表示上面这个触发器功能呢?
tiantian001 发表于 2010-2-3 09:43 | 显示全部楼层
不可能对同一个变量在不同的 always中定义

可以在别的always中产生条件A,B,然后在同一个always中使用条件A,B实现你所说的定义
xlwxdl 发表于 2010-2-18 09:34 | 显示全部楼层
xlwxdl 发表于 2010-2-18 09:46 | 显示全部楼层
楼主,你把我弄糊涂了,cs是8位的,你还有其他用吗?貌似只用了2位啊。具体说下思路吧。还有他那个触发器可以用一个always单独实现啊。always@(wr or rd)
                                  begin
                                                            if(wr)
                                                                    flag<=1'b1;
                                                             if(rd)
                                                                    flag<=1'b0;
                                                   end
这样做可能有毛刺。
请高手指正
SSsnail 发表于 2010-3-13 17:14 | 显示全部楼层
用硬件的思想做FPGA,你的想法硬件无法直接实现,可以通过信号传递来做到
yeti_dead 发表于 2010-4-2 21:13 | 显示全部楼层
rd与wr不是两个互斥的吗?既然是这样就不可能同时给flag赋值。这种情况能实现吧。不过lz说的我没听明白是什么意思,我认为14楼应该可以
 楼主| echenlf 发表于 2012-2-12 10:39 | 显示全部楼层
 楼主| echenlf 发表于 2012-2-12 10:39 | 显示全部楼层
 楼主| echenlf 发表于 2012-2-12 10:39 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

21

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部