hzr0071 发表于 2011-1-25 23:35:31

新手求救,要命啊。。。。。

reg cnt;       
always @ (posedge clk or negedge rst_n)
        if(!rst_n) cnt <= 25'd0;
        else cnt <= cnt+1'b1;       
       
reg num;       

always @ (posedge clk or negedge rst_n)
        if(!rst_n) num <= 4'd0;
        else if(cnt == 25'h1ffffff) num <= num+1'b1;
在这样一段分频后,加上
reg a;
always @(num) begin
a=a+1'b1;
end
这样为什么a不动作啊。换成a=num后a动作。
求救啊。。。。。。
师傅们别光看不帮忙啊。。。。

jason0726 发表于 2011-1-26 00:04:17

最后一段程序改成下面的试一下:
always @(posedge num or negedge num or negedge rst_n) begin
if(!rst_n)a<=0;
else a<=a+1;
end

mcsky 发表于 2011-1-26 10:43:34

你试试改成always@(num)??

hzr0071 发表于 2011-1-26 13:43:04

谢谢楼上二位的回复。结果是不行的。
我也不知道怎么回事。即使在num引出wire也不可以。
可能是分频次数太多,cpld块分布不允许太多次分频。

h2feo4 发表于 2011-1-26 13:53:27

回复【楼主位】hzr0071
-----------------------------------------------------------------------

你用了"always @(num)"这种不对边沿敏感的声明
用了描述组合逻辑的表达式(表达式还和敏感目标无关)
赋值对象a还是个reg

完全没看懂你想让a干什么,先把这个说明一下吧

mcsky 发表于 2011-1-26 17:27:33

哦,我好像记起来了,我曾经也遇到过相同的问题,a没有初值啊,你让它从多少开始加?得加上复位,而且最关键的是组合逻辑里不能自加,综合不出来,仿真不出来
页: [1]
查看完整版本: 新手求救,要命啊。。。。。