wyc199288 发表于 2015-4-7 20:38:19

为什么led等不翻转呢?我是小白

always @ (key)
begin
   led=~led;
end

key是一个按键,按下低电平。led是一个led。硬件电路很简单没问题。
是不是什么按键防抖的问题。理论上,key有变化,就翻转,应该没错了。
我不是很明白,希望有人指导。我是小白

马辰旭 发表于 2015-4-7 21:16:52

这是什么编程语言呐

天下无棱 发表于 2015-4-7 21:19:27

led【0】有初始化吗?

天下无棱 发表于 2015-4-7 21:19:53

马辰旭 发表于 2015-4-7 21:16
这是什么编程语言呐

verilog FPGA的

wyc199288 发表于 2015-4-8 11:14:08

马辰旭 发表于 2015-4-7 21:16
这是什么编程语言呐

verilog啊

wyc199288 发表于 2015-4-8 11:16:48

zeroXone 发表于 2015-4-7 21:53
阻塞说错了 好久没写过了去查了一通。

你这要实现的应该是用非阻塞的表达式   ...

感谢你的回复!阻塞和非阻塞我都试了,结果都一样。不过听说,always里面不要放wire型变量,除了clk。尽量放reg或者clk。否则可能接受不到变化。

具体原因我也不清楚,但是我测试是这么回事。

ahong2hao 发表于 2015-4-8 11:24:45


wire flag=(key_r1&~key_r0)?1'b1:1'b0;



always@(posedge clk )
begin       
                key_r0<=key;
                key_r1<=key_r0;


                if(flag==1)
                begin
                        led<=~led;
                end
end


这样试试?

honeybear 发表于 2015-4-8 11:25:15

always @ (key)
begin
   if(key==0)
       led=1;
   else
      led=0;
end
写成这样看看有没有反应

yinqian2015 发表于 2015-4-8 14:05:50

按楼主的写法,得出的RTL视图应该为:(见附件)。当然怎么按按键都没用了。下面这段代码就可以用了。
module led(
          key0,led0
          );
                       
input key0;
output led0;

reg led0_r;

always @(*)
begin
if(key0)
   led0_r=1'b1;
else
   led0_r=1'b0;
end

assign led0=led0_r;                       
                       
endmodule

yuyu87 发表于 2015-4-9 09:09:56

你引脚分配了吧?程序应该没有问题的啊,

yuyu87 发表于 2015-4-9 09:10:18

马辰旭 发表于 2015-4-7 21:16
这是什么编程语言呐

在FPGA论坛,当然是verilog啦

wyc199288 发表于 2015-4-9 09:35:51

honeybear 发表于 2015-4-8 11:25
always @ (key)
begin
   if(key==0)


只要key在always里面,都不行了……

wyc199288 发表于 2015-4-9 09:36:53

yinqian2015 发表于 2015-4-8 14:05
按楼主的写法,得出的RTL视图应该为:(见附件)。当然怎么按按键都没用了。下面这段代码就可以用了。
modu ...

这个可以!请问知道,key为什么不能放在always里面吗?

wyc199288 发表于 2015-4-9 09:37:23

ahong2hao 发表于 2015-4-8 11:24
wire flag=(key_r1&~key_r0)?1'b1:1'b0;




这个可以!请问知道,key为什么不能放在always里面吗?

sme 发表于 2015-4-9 20:15:27

楼上的都是来搞笑的吗?

sme 发表于 2015-4-9 20:16:30

yinqian2015 发表于 2015-4-8 14:05
按楼主的写法,得出的RTL视图应该为:(见附件)。当然怎么按按键都没用了。下面这段代码就可以用了。
modu ...

assign led0 = ~key0;

你不就是上面这个等效电路吗?一个非门的事,为啥写得那么复杂?

sme 发表于 2015-4-9 20:18:04

不考虑防抖,简单的写法如下:
module led (
input key0,
output reg led0
);

always @(negedge key0)
    led0 <= ~ led0;

endmodule

nfchg 发表于 2015-4-9 22:35:52

应该要判边沿吧

yinqian2015 发表于 2015-4-10 10:52:02

sme 发表于 2015-4-9 20:16
assign led0 = ~key0;

你不就是上面这个等效电路吗?一个非门的事,为啥写得那么复杂? ...

果然写得很简洁{:loveliness:}

yinqian2015 发表于 2015-4-10 11:02:55

wyc199288 发表于 2015-4-9 09:36
这个可以!请问知道,key为什么不能放在always里面吗?

应该说可以有这样的写法,不过代码都只是手段,最终的还是要看建立的硬件电路,如果硬件电路实现不了,那就只能改写了

wyc199288 发表于 2015-4-13 11:39:27

sme 发表于 2015-4-9 20:18
不考虑防抖,简单的写法如下:
module led (
input key0,


哥,key放在always里面,实现不了。你可以试一下

sme 发表于 2015-4-15 08:43:14

wyc199288 发表于 2015-4-13 11:39
哥,key放在always里面,实现不了。你可以试一下



代码,电路如上图(注意,没有考虑防抖)。

不明白你的key放在always里面是什么意思,这个always @()里不是有key0吗?

flyfox8 发表于 2015-4-23 10:45:13

sme 发表于 2015-4-15 08:43
代码,电路如上图(注意,没有考虑防抖)。

不明白你的key放在always里面是什么意思,这个always @() ...

LS用的DEBUSSY是哪个版本?可以分享一下吗?谢谢。

pen245760036 发表于 2015-4-23 17:21:56

{:sleepy:} 路过水下
页: [1]
查看完整版本: 为什么led等不翻转呢?我是小白