ju748 发表于 2009-12-24 18:32:33

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

以前都是拿cpld做扩展IO的并没有深入去领会,突然想试试编点什么玩,总是要从闪灯先开始的咯结果没弄出来。。。

我用的是EPM240的片子

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

程序如下:

module T3(clk,out);
input clk;
output out;
reg ddd;
regout;

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

endmodule

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

vvvccc123 发表于 2009-12-24 19:00:34

看看是不是50000000整数被当成有符号数了,可以用定长的数值表示来替换一下

ju748 发表于 2009-12-24 19:24:48

回复【1楼】vvvccc123
看看是不是50000000整数被当成有符号数了,可以用定长的数值表示来替换一下
-----------------------------------------------------------------------

这样改吗?

module T3(clk,out);
input clk;
output out;
reg ddd;
regout;

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

endmodule

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

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

helloshi 发表于 2009-12-24 19:46:14

仿真了么?

Fourier00 发表于 2009-12-24 20:23:46

module T3
(clk,
rst_n,
out
);
parameterDLY = 1;
input clk;
output out;
reg ddd;
regout;

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

Fourier00 发表于 2009-12-24 20:31:43

LZ 一看就是湖南老乡啊,搞国久还冒得人肥啊

msdy 发表于 2009-12-24 21:05:56

你先加在判断

minux 发表于 2009-12-24 21:23:19

【6楼】 msdy

为啥不能判断后加?

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

gliet_su 发表于 2009-12-24 22:13:04

module T3(clk,out,rst_n);
input clk,rst_n;
output out;
reg ddd;
regout;

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
页: [1]
查看完整版本: verilog 闪灯程序 始终不出来,cpld高手们帮帮忙看一下