为什么步长只能为1?

[复制链接]
2834|2
 楼主| andyany 发表于 2010-9-20 16:56 | 显示全部楼层 |阅读模式
顶层模块——
module ramout(

input          clkin,
input   [7:0]  addr_read,
output  [11:0] data_read        );

reg  [ 7:0] cnt;
reg  [ 1:0] status;

reg  [ 7:0] addr;
reg  [15:0] din;
wire [15:0] dout;
reg               we;

assign data_read = dout[11:0];

ram1 ram11(.addr(addr),
           .clk(clkin),
           .din(din),
           .dout(dout),
           .we(we)
          );

always@(negedge clkin)
if(cnt != 8'd166) cnt <= cnt + 8'd1;

always@(negedge clkin)
if(cnt < 8'd6)                 status <= 2'd0;
else if(cnt != 8'd166)        begin       
                           status <= 2'd1;
                        we     <= 1'b1;
                        din    <= din + 16'd2; //递增2就不行               
                        addr   <= addr + 8'd1;             end
else                        begin        status <= 2'd2;
                        we     <= 1'b0;                   end

always@(negedge clkin)
if(status == 2'd2 && addr_read < 8'd166)          addr  <= addr_read;

endmodule
片上ram为16位宽,深度256。
自动生成数写入片上ram时,递增1就可以,递增2或3时就报错——
ERROR:Xst:528 - Multi-source in Unit <myad> on signal <Mcount_addr_cy<0>>
ERROR:Xst:528 - Multi-source in Unit <myad> on signal <Mcount_addr2>
ERROR:Xst:528 - Multi-source in Unit <myad> on signal <Mcount_addr4>
ERROR:Xst:528 - Multi-source in Unit <myad> on signal <Mcount_addr6>
ERROR:Xst:528 - Multi-source in Unit <myad> on signal <Mcount_addr8>
ERROR:Xst:528 - Multi-source in Unit <myad> on signal <Mcount_addr10>
ERROR:Xst:528 - Multi-source in Unit <myad> on signal <Mcount_addr12>
ERROR:Xst:528 - Multi-source in Unit <myad> on signal <Mcount_addr14>
为什么?
求高手指点!先谢过!
 楼主| andyany 发表于 2010-9-21 10:07 | 显示全部楼层
犯了一个老错误。
在两个always中对同一个addr赋值,合并即可。
sxhhhjicbb 发表于 2010-9-23 21:48 | 显示全部楼层
ERROR,提示是Multi-source->多信号驱动。Mcount_addr4->表示信号addr信号异常。呵呵。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

664

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部