搜索
bottom↓
回复: 9

verilog 闪灯程序 始终不出来,cpld高手们帮帮忙看一下

[复制链接]

出0入0汤圆

发表于 2009-12-24 18:32:33 | 显示全部楼层 |阅读模式
以前都是拿cpld做扩展IO的并没有深入去领会,突然想试试编点什么玩,总是要从闪灯先开始的咯结果没弄出来。。。

我用的是EPM240的片子

外部CLK 50M的有源直接接的

程序如下:

module T3(clk,out);
input clk;
output out;
reg [25:0] ddd;
reg  out;

always @(posedge clk) begin
  if (ddd==50000000) ddd<=0;
  else ddd<=ddd+1;
  if (ddd==0) out<=~out;
end

endmodule

想要的效果是1s一亮1s一暗。。。。究竟错在哪里了。。。谢谢各位了

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2009-12-24 19:00:34 | 显示全部楼层
看看是不是50000000整数被当成有符号数了,可以用定长的数值表示来替换一下

出0入0汤圆

 楼主| 发表于 2009-12-24 19:24:48 | 显示全部楼层
回复【1楼】vvvccc123
看看是不是50000000整数被当成有符号数了,可以用定长的数值表示来替换一下
-----------------------------------------------------------------------

这样改吗?

module T3(clk,out);
input clk;
output out;
reg [25:0] ddd;
reg  out;

always @(posedge clk) begin
  if (ddd=='h2faf080) ddd<=0;        //2faf080=50000000
  else ddd<=ddd+1;
  if (ddd==0) out<=~out;
end

endmodule

诶。。论坛里还是玩cpld的少啊。。。噶久就楼上一个回答,谢谢你啦。。。我在改改

如果可以的话请您也帮忙写写看吧。。。总感觉怪怪的。。

出0入0汤圆

发表于 2009-12-24 19:46:14 | 显示全部楼层
仿真了么?

出0入0汤圆

发表于 2009-12-24 20:23:46 | 显示全部楼层
module T3
(clk  ,
rst_n,
out
);
parameter  DLY = 1;
input clk;
output out;
reg [25:0] ddd;
reg  out;

always @(posedge clk or negedge rst_n)
begin
        if(rst_n == 1'b0)
                ddd <= 26'd0;
    else if(ddd >= 26'd50000000)
            ddd <= #DLY 26'd0;
    else
            ddd <= #DLY ddd + 26'd1;       
end

always @(posedge clk or negedge rst_n)
begin
        if(rst_n == 1'b0)
                out <= 1'b0;
        else if(|ddd == 1'b0)
                out <= #DLY ~out;
    else ;
end
endmodule

出0入0汤圆

发表于 2009-12-24 20:31:43 | 显示全部楼层
LZ 一看就是湖南老乡啊,搞国久还冒得人肥啊

出0入0汤圆

发表于 2009-12-24 21:05:56 | 显示全部楼层
你先加在判断

出0入0汤圆

发表于 2009-12-24 21:23:19 | 显示全部楼层
【6楼】 msdy

为啥不能判断后加?

出0入0汤圆

发表于 2009-12-24 21:26:14 | 显示全部楼层
lz 看
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=869468&bbs_page_no=9&bbs_id=1029

出0入0汤圆

发表于 2009-12-24 22:13:04 | 显示全部楼层
module T3(clk,out,rst_n);
input clk,rst_n;
output out;
reg [25:0] ddd;
reg  out;

always @(posedge clk or rst_n)
begin
        if(!rst_n)
        begin
                ddd<=26'd0;
                out <= 1'b0;
        end
        else
        begin
                if (ddd==26'd50000000)
                begin
                        ddd<=0;
                        out<=!out;
                end
                else
                begin
                        ddd<=ddd+1;
                end
  end
end

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

本版积分规则

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

GMT+8, 2024-5-16 02:24

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

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