zhsj 发表于 2016-1-31 10:23:47

关于Verilog的问题

我想写一个模块,有三个输入,分别是Din,A,B,一个输出为Dout。当检测到A的上升沿时,不论B处于什么状态,输出Dout=Din。当检测到B的下降沿时,不论A处于什么状态,输出Dout=0。A的上升沿和B的下降沿不会同时到达。请问这个模块该怎么写???

陈飞龙 发表于 2016-2-13 14:36:55

always@ (posedge A or negedge B)
   if (!B)
      Dout<=0;
   else
      Dout<=Din;

zhsj 发表于 2016-2-17 18:56:26

陈飞龙 发表于 2016-2-13 14:36
always@ (posedge A or negedge B)
   if (!B)
      Dout

感谢回复!
但这样写是有问题的,如果在A上升沿到达时B的值为0,那输出岂不是成了0,而不是要求中的Din。

陈飞龙 发表于 2016-2-17 21:36:21

zhsj 发表于 2016-2-17 18:56
感谢回复!
但这样写是有问题的,如果在A上升沿到达时B的值为0,那输出岂不是成了0,而不是要求中的Din ...

你不是说A的上升沿和B的下降沿不会同时到达吗?

zhsj 发表于 2016-2-18 21:53:36

陈飞龙 发表于 2016-2-17 21:36
你不是说A的上升沿和B的下降沿不会同时到达吗?

A的上升沿和下降沿是不会同时到达,但还是有可能在A上升沿到达的时候B已经变成0了呀!如图:

nail_lin 发表于 2016-4-21 09:41:10

检测A的上升沿,B的下降沿
always @(posedge sclk)        begin
                A_1 <= A;
                A_2 <= A_1;
end
assign A_P = A_1 && ~A_2;
always @(posedge sclk)        begin
                B_1 <= B;
                B_2 <= B_1;
end
assign B_N = ~B_1 && B_2;
always @(posedge sclk)        begin
        if(A_P)
                Dout <= Din;
        if(B_N)
                Dout <= 'b0;
end

404710433 发表于 2016-4-21 09:49:16

进来看看学习一下

重生误入豪门   wap.xs7788.co/kanshu41/110771/

陈飞龙 发表于 2016-4-21 10:24:03

6666666666666
页: [1]
查看完整版本: 关于Verilog的问题