搜索
bottom↓
回复: 25

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

[复制链接]

出0入0汤圆

发表于 2015-4-7 20:38:19 | 显示全部楼层 |阅读模式
always @ (key[0])
begin
   led[0]=~led[0];
end

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

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2015-4-7 21:16:52 | 显示全部楼层
这是什么编程语言呐

出0入0汤圆

发表于 2015-4-7 21:19:27 | 显示全部楼层
led【0】有初始化吗?

出0入0汤圆

发表于 2015-4-7 21:19:53 | 显示全部楼层
马辰旭 发表于 2015-4-7 21:16
这是什么编程语言呐

verilog FPGA的

出0入0汤圆

 楼主| 发表于 2015-4-8 11:14:08 | 显示全部楼层
马辰旭 发表于 2015-4-7 21:16
这是什么编程语言呐

verilog啊

出0入0汤圆

 楼主| 发表于 2015-4-8 11:16:48 | 显示全部楼层
zeroXone 发表于 2015-4-7 21:53
阻塞  说错了 好久没写过了  去查了一通。

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

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

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

出0入0汤圆

发表于 2015-4-8 11:24:45 | 显示全部楼层

wire flag=(key[0]_r1&~key[0]_r0)?1'b1:1'b0;



always@(posedge clk )
begin         
                key[0]_r0<=key[0];
                key[0]_r1<=key[0]_r0;


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


这样试试?

出0入0汤圆

发表于 2015-4-8 11:25:15 | 显示全部楼层
always @ (key[0])
begin
   if(key[0]==0)
       led[0]=1;
   else
        led[0]=0;
end
写成这样看看有没有反应

出0入0汤圆

发表于 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

本帖子中包含更多资源

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

x

出20入186汤圆

发表于 2015-4-9 09:09:56 | 显示全部楼层
你引脚分配了吧?程序应该没有问题的啊,

出20入186汤圆

发表于 2015-4-9 09:10:18 | 显示全部楼层
马辰旭 发表于 2015-4-7 21:16
这是什么编程语言呐

在FPGA论坛,当然是verilog啦

出0入0汤圆

 楼主| 发表于 2015-4-9 09:35:51 | 显示全部楼层
honeybear 发表于 2015-4-8 11:25
always @ (key[0])
begin
   if(key[0]==0)

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

出0入0汤圆

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

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

出0入0汤圆

 楼主| 发表于 2015-4-9 09:37:23 | 显示全部楼层
ahong2hao 发表于 2015-4-8 11:24
wire flag=(key[0]_r1&~key[0]_r0)?1'b1:1'b0;

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

出0入0汤圆

发表于 2015-4-9 20:15:27 | 显示全部楼层
楼上的都是来搞笑的吗?

出0入0汤圆

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

assign led0 = ~key0;

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

出0入0汤圆

发表于 2015-4-9 20:18:04 | 显示全部楼层
不考虑防抖,简单的写法如下:
module led (
input key0,
output reg led0
);

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

endmodule

出0入0汤圆

发表于 2015-4-9 22:35:52 | 显示全部楼层
应该要判边沿吧

出0入0汤圆

发表于 2015-4-10 10:52:02 | 显示全部楼层
sme 发表于 2015-4-9 20:16
assign led0 = ~key0;

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

果然写得很简洁

出0入0汤圆

发表于 2015-4-10 11:02:55 | 显示全部楼层
wyc199288 发表于 2015-4-9 09:36
这个可以!请问知道,key为什么不能放在always里面吗?

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

出0入0汤圆

 楼主| 发表于 2015-4-13 11:39:27 | 显示全部楼层
sme 发表于 2015-4-9 20:18
不考虑防抖,简单的写法如下:
module led (
input key0,

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

出0入0汤圆

发表于 2015-4-15 08:43:14 | 显示全部楼层
wyc199288 发表于 2015-4-13 11:39
哥,key放在always里面,实现不了。你可以试一下



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

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

本帖子中包含更多资源

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

x

出0入4汤圆

发表于 2015-4-23 10:45:13 | 显示全部楼层
sme 发表于 2015-4-15 08:43
代码,电路如上图(注意,没有考虑防抖)。

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

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

出0入0汤圆

发表于 2015-4-23 17:21:56 | 显示全部楼层
路过水下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 00:59

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表