求助:一个简单的verilog程序,仿真了后有些问题,在线等
时间:10-02
整理:3721RD
点击:
程序如下:
module chuangxinjijin(
clk_50M,rst_n,
count1,count2,
SP
);
input clk_50M,rst_n;
output reg [16:0] count1;
output reg [14:0] count2;
output reg SP;
//-----------------------------SP-------------------------------------
reg clear;
always @(negedge clk_50M or negedge rst_n)
if(!rst_n)
count1 =0 && count2 =281 && count2 =286 && count2 =0 && count2<281) begin
SP <= 1'b0;
count2 <= count2 + 1'b1;
end
这样的话,就可以先判断clear语句。
(2)像楼上一样,将复位和clear合到一块。
如果你的if else 语句的条件不是一个性质的话(不属于一类),例如clear和 count2的变化,你放到一个if else 中之后,如果不注意顺序就会出现你的问题,部分语句永远不会执行。
module chuangxinjijin(
clk_50M,rst_n,
count1,count2,
SP
);
input clk_50M,rst_n;
output reg [16:0] count1;
output reg [14:0] count2;
output reg SP;
//-----------------------------SP-------------------------------------
reg clear;
always @(negedge clk_50M or negedge rst_n)
if(!rst_n)
count1 =0 && count2 =281 && count2 =286 && count2 =0 && count2<281) begin
SP <= 1'b0;
count2 <= count2 + 1'b1;
end
这样的话,就可以先判断clear语句。
(2)像楼上一样,将复位和clear合到一块。
如果你的if else 语句的条件不是一个性质的话(不属于一类),例如clear和 count2的变化,你放到一个if else 中之后,如果不注意顺序就会出现你的问题,部分语句永远不会执行。
还有就是,程序里最好有注释,然后问问题的时候,可以把你的程序要实现的功能描述一下
小编你这是准备啥计数到什么时候让count2清零,还是说clear出现就清零。如果是出现就清零看5楼,如果是有其他条件那么你应该给出来才能给你改正。
不好意思,回复那么晚,这种改法会报错!
Error (10200): Verilog HDL Conditional Statement error at chuangxinjijin.v(207): cannot match operand(s) in the condition to the corresponding edges in the enclosing event control of the always construct
没怎么看,我觉得可能是clear刚好在时钟上升沿吧 采不到,所以条件一直不满足