搜索
bottom↓
回复: 9

初学FPGA,小程序搞不懂了。。。请各位大侠答疑解惑

[复制链接]

出0入0汤圆

发表于 2012-9-13 16:28:44 | 显示全部楼层 |阅读模式
module test2(input CLK,input RST,output reg [3:0]LEDS);
initial
begin
LEDS<=4'b0001;
end
always @(CLK)
begin
if(~RST)
LEDS<=4'b0001;
else
begin
LEDS<={LEDS[2:0],LEDS[3]};
end
end
endmodule

CLK和RST映射到两个 IO上,是按键,LED也映射好了
按下RST的时候有反应,但按下CLK和不按一样都是灯全亮(PS:灯是高电平的时候亮)

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2012-9-13 16:29:14 | 显示全部楼层
仿真是没有问题的
就是下载到开发板上悲剧了

出0入0汤圆

发表于 2012-9-14 14:41:45 | 显示全部楼层
你CLK引脚怎么处理的啊?按键和没按键时引脚电平变化了吗?

出0入0汤圆

发表于 2012-9-14 14:50:54 | 显示全部楼层
好像我没有看明白,时钟变化的时候才会处理复位按键的状态
你只有 RST 的时候怎么测试按键的
CLK 的问题也是不明白
贴一个原理图摘要看看吧

出0入0汤圆

发表于 2012-9-14 15:03:54 | 显示全部楼层
<= 和 = 两个幅值不一样的,是否多按几下CLK 就可以??

出0入0汤圆

发表于 2012-9-15 00:02:48 | 显示全部楼层
你的代码是想写个流水灯吗。。通过代码看,应该是CLK为高、RST为低的时候灯为流水灯。如果你按下按键后端口取到的值为低的话,按下CLK时灯就没反应了。。(我也是初学者,一起学习了,不对的地方还请指点一下。。)

出0入0汤圆

发表于 2012-9-15 00:52:02 | 显示全部楼层
是不是  always @(CLK)  要改为     always @ (posedge CLK)
                                 或者是     always @ (negedge CLK)

看你的代码应该是沿触发的,好像不是电平触发,因为按键按下或者弹起来都会有一个沿。
若是电平触发的话,应该要用阻塞复赋值吧,就是把 <=  改为=,那么  5楼 xivisi 说的应该是
对的,你连续多按几次,试试。
ps:本人也是刚开始学verilog。可以多多交流。

出0入0汤圆

发表于 2012-9-26 00:12:22 | 显示全部楼层
代码问题太多了,真心建议去好好学习Verilog语言之后再去想问题。组合逻辑和时序逻辑问题,以及同步复位和异步复位,阻塞和非阻塞的应用,电平触发和脉冲触发等问题,自己去找答案吧

出0入0汤圆

发表于 2012-9-28 09:21:21 | 显示全部楼层
同意楼上说的...

出0入0汤圆

发表于 2012-9-28 16:50:16 | 显示全部楼层
首先是语法不熟,其次是没有电路概念。
在指出问题之前先明确一个概念:寄存器是边沿触发,锁存器是电平触发。
下面是代码分析:
always@(CLK)这种写法是电平触发,估计LZ是想它高电平触发。但是要指出的是这条语句仅仅表示:CLK有变化即执行下面的语句。至于是高电平还是低电平,只有LZ知道,编译器是不知道的。所以综合的时候肯定是忽略CLK信号,直接综合里面这几句:
if(~RST)
   LEDS<=4'b0001;
else
  LEDS<={LEDS[2:0],LEDS[3]};
这个if--else应该是综合出一个选择器,由RST控制;在else下LEDS没有触发条件,所以不能综合成锁存。
最终的电路应该是CLK未连接,RST控制一个二选一选择器,LEDS是一堆线。
不信LZ可以看一下RTL图。

顺着LZ的思路可以这样改:
always @(CLK)
begin
        if(CLK) begin
                if(~RST )
                        LEDS<=4'b0001;
                else
                        LEDS<={LEDS[2:0],LEDS[3]};
        end
end

这就能综合出锁存了。
当然在FPGA中推荐用同步时序。怎么改,这是基本功,LZ好好琢磨吧~。

还需指出一点是initial语句是不能综合的。

另外5楼说的 <= = 问题LZ得好好研究研究,但是跟你现在这个电路没多大关系。

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

本版积分规则

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

GMT+8, 2024-7-24 09:20

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

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