求助: for 循环的问题

2019-03-25 09:45发布

定义了一个 integer  i;

always @ (posedge clk or negedge rst)
    begin

for (i=0;i<7;i=i+1)
            begin
                encode[55-i*7:52-i*7]<=data_in[31-i*4:28-i*4];
            end

    end

报错:Quartus Error : i is not a constant
Modelsim :Range must be bounded by constant expressions.
高手请指教,不胜感激涕零! 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
fangliball
1楼-- · 2019-03-25 10:29
< / 不知道你这段代买是来自测试文件呢,还是被测文件。
如果是被测文件,我质疑这个模块能综合么?想想看,它的电路是什么样的,怎样才能实现这样的逻辑?估计是不行的。
eeleader
2楼-- · 2019-03-25 15:12

哪怎样才能实现上面的功能呀?

 

ssawee
3楼-- · 2019-03-25 20:39
reg [2:0] i;


always @ (posedge clk or negedge rst)
begin
i<=i+1;
end


always @ (posedge clk or negedge rst)
begin
encode[55-i*7:52-i*7]<=data_in[31-i*4:28-i*4];
end
fuyaolong
4楼-- · 2019-03-25 23:19
wire        [55:0]        encode_wire;
reg         [55:0]        encode;

genvar i;
generate
for(i=0;i<7;i=i+1)
begin : loop
        assign encode_wire[55-i*7:52-i*7] = data_in[31-i*4:28-i*4];
end
endgenerate

always @ (posedge clk)
begin
        encode <= encode_wire;
end

一周热门 更多>