cdust 发表于 2015-10-15 20:50:17

请教2段程序基本一样,竟然1段能运行1段不能运行verilog语言

本帖最后由 cdust 于 2015-10-16 09:56 编辑

        always @(posedge clk)
                if(!reset) clk_div <= 0;
                else if(counter<100)
                                        clk_div <= 1;
                else clk_div <= 0;
               

        always @(posedge clk)
                if(!reset) led2 <= 1'b0;
                elseled2 <= 1;
VERILOG编写 的,在同一个文件里面,上下隔2条空行,CLK_DIV可以出准确的波形,下面的LED2就不能置1,搞了2天多了,实在搞不明白,特来请教群中高人。

全部程序如下
module beep(clk,reset,clk_div,led1,led4);
input clk,reset;
output clk_div,led1,led4;
reg counter;
reg clk_div;
reg tp1;
   /*********方波发生器********/
        always @(posedge clk)
                if(!reset) counter <= 0;
                else if(counter==415) counter <= 0;
                else counter <= counter+1;
        always @(posedge clk)
                if(!reset) clk_div <= 0;
                else if(counter<100)
                                        clk_div <= 1;
                else clk_div <= 0;
///////////////////////////////////////////////
        always @(posedge clk)
                if(!reset) tp1 <= 0;
                elsetp1 <= 1;
       

        assign led1 = clk_div;
        assign led4 = tp1;
       

endmodule

//////////////////////////////////////////为分界线,上面运行正常出波形,下面就是不肯出高电平。郁闷啊。
**********修改添加全部程序

vipjph 发表于 2015-10-15 21:01:18

IO配置的没有问题?

chenchaoting 发表于 2015-10-15 21:06:43

仿真看看有波形么

cdust 发表于 2015-10-15 21:10:22

vipjph 发表于 2015-10-15 21:01
IO配置的没有问题?

IO配置了.特地配置的一样
module beep(clk,reset,clk_div,clk_ck,led1,led2,led3,led4);
input clk,reset,clk_ck;
output clk_div,led1,led2,led3,led4;
reg counter;
reg clk_div,ck;
reg led2;

jm2011 发表于 2015-10-15 21:24:50

仿真一下吧

735953120@qq.co 发表于 2015-10-15 23:32:15

always @(posedge clk)
                if(!reset) led2 <= 1'b0;
                elseled2 <= 1‘b1;
会不会是这个问题?

wudicgi 发表于 2015-10-15 23:39:57

是仿真不正常,还是示波器/逻辑分析仪测波形不正常?
后者的话检查一下引脚的输出配置

此外为排除问题,可以直接写 assign led2 = 1'b1; 看看

121854416 发表于 2015-10-16 06:56:14

else if(counter<100)                                          clk_div <= 1;

121854416 发表于 2015-10-16 06:57:48

条件不一样,结果当然不一样

121854416 发表于 2015-10-16 07:02:16

有可能复位一直是低电瓶

cdust 发表于 2015-10-16 09:14:43

735953120@qq.co 发表于 2015-10-15 23:32
always @(posedge clk)
                if(!reset) led2

试过了,不是这个问题。

cdust 发表于 2015-10-16 09:15:37

wudicgi 发表于 2015-10-15 23:39
是仿真不正常,还是示波器/逻辑分析仪测波形不正常?
后者的话检查一下引脚的输出配置



2个是上下关系,上面一个运行的很好,下面一个,就没有反应。

cdust 发表于 2015-10-16 09:16:09

121854416 发表于 2015-10-16 06:56
else if(counter

这条运行正常

cdust 发表于 2015-10-16 09:17:28

121854416 发表于 2015-10-16 06:57
条件不一样,结果当然不一样

结果是不一样,但是问题是前面一个出结果,下面那个没有结果,2条程序一起运行的,上面一个有反应,下面一条没有反应,

MDC012170 发表于 2015-10-16 11:34:56

看综合出来的电路图是怎么样的

cdust 发表于 2015-10-16 12:49:32

MDC012170 发表于 2015-10-16 11:34
看综合出来的电路图是怎么样的

cdust 发表于 2015-10-16 20:43:32

请教,有人能教教我哪里出问题了吗?

121854416 发表于 2015-10-17 07:55:51

always下面加begin...end

cdust 发表于 2015-10-17 08:01:47

本帖最后由 cdust 于 2015-10-17 08:04 编辑

121854416 发表于 2015-10-17 07:55
always下面加begin...end

谢谢,但是没有用,加了也一样,上面的没有加也运行的好好的么。奇了怪了。

spark123 发表于 2015-10-17 08:38:22

LED那个IO口有没试过邦定在其他口试过?

wudicgi 发表于 2015-10-17 09:29:23

LZ 再看一遍回复检查一遍的,你的回复和别人指出的可能问题都不对着
你总说上下两段程序是一样的,其实上边那段代码的输出正常的话,只能证明 clk 时钟信号正常,clk_div 分配到的引脚输出正常
你也一直没说是仿真结果不对还是在硬件上跑结果不对,也没说用 assign 直接将 led2 固定为高电平时的结果
光在这怀疑为什么不对没用,得逐一问题检查和排除

biansf2001 发表于 2015-10-17 16:50:43

没有看到led2的输出啊,只看到led1和4

zaldy30 发表于 2015-10-19 18:20:14

楼主的程序,用QTII自带的仿真软件运行,reset后LED4输出显示是高电平。

hantnt 发表于 2015-10-19 19:06:43

改成posedge clk or negedge reset 就好,
页: [1]
查看完整版本: 请教2段程序基本一样,竟然1段能运行1段不能运行verilog语言