打印

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

[复制链接]
5851|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
echenlf|  楼主 | 2010-1-16 12:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
玄德| | 2010-1-16 17:27 | 只看该作者
何时为1,何时为0,总要有条件的吧?
把条件写上就行了

使用特权

评论回复
板凳
yxwsz| | 2010-1-17 19:12 | 只看该作者
这样使用是有问题的,不管是VERILOG还是VHDL,都不能这样使用。
书面说法是导致仿真和综合结果不一致。

使用特权

评论回复
地板
16ysa| | 2010-1-17 20:50 | 只看该作者
乱了?  mark一下  等待 高人

使用特权

评论回复
5
ma9453| | 2010-1-19 19:54 | 只看该作者
VERILOG貌似不支持吧?等高人解答

使用特权

评论回复
6
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

使用特权

评论回复
7
小嘿| | 2010-1-23 13:08 | 只看该作者
oh 兰州,这样是行不通的,不,不,最好的综合器都不行,再贵的fpga都不行

使用特权

评论回复
8
sleepybear| | 2010-1-24 15:27 | 只看该作者
C跟Verilog的思想是完全不同的。不要拿来做对比。。。

使用特权

评论回复
9
xddzccn| | 2010-1-24 19:24 | 只看该作者
LZ 是不是要表达这个意思啊,看看这个电路上可以实现吗,ms不行啊 呵呵

绘图45.jpg (13.71 KB )

绘图45.jpg

使用特权

评论回复
10
echenlf|  楼主 | 2010-1-26 08:36 | 只看该作者
是这样的,WR操作后,**=1;RD操作后,**=0;

使用特权

评论回复
11
echenlf|  楼主 | 2010-1-26 08:37 | 只看该作者
怎么用Verilog 表示上面这个触发器功能呢?

使用特权

评论回复
12
tiantian001| | 2010-2-3 09:43 | 只看该作者
不可能对同一个变量在不同的 always中定义

可以在别的always中产生条件A,B,然后在同一个always中使用条件A,B实现你所说的定义

使用特权

评论回复
13
xlwxdl| | 2010-2-18 09:34 | 只看该作者
11# echenlf

使用特权

评论回复
14
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
这样做可能有毛刺。
请高手指正

使用特权

评论回复
15
SSsnail| | 2010-3-13 17:14 | 只看该作者
用硬件的思想做FPGA,你的想法硬件无法直接实现,可以通过信号传递来做到

使用特权

评论回复
16
yeti_dead| | 2010-4-2 21:13 | 只看该作者
rd与wr不是两个互斥的吗?既然是这样就不可能同时给flag赋值。这种情况能实现吧。不过lz说的我没听明白是什么意思,我认为14楼应该可以

使用特权

评论回复
17
echenlf|  楼主 | 2012-2-12 10:39 | 只看该作者
结了

使用特权

评论回复
18
echenlf|  楼主 | 2012-2-12 10:39 | 只看该作者
结了

使用特权

评论回复
19
echenlf|  楼主 | 2012-2-12 10:39 | 只看该作者
结了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

21

帖子

0

粉丝