描述
我的代码包含以下内容:
ladder2:为0到14的i生成开始
过程(clk,rst)开始
如果rst =’1’那么
– xin(i + 1,3)<=“00”&x“000”;
– xin(i + 1,2)<=“00”&x“000”;
– xin(i + 1,1)<=“00”&x“000”;
– xin(i + 1,0)<=“00”&x“000”;
LADD:
对于0到3循环中的j
xin(i + 1,j)<=“00”&x“000”;
结束循环;
注释掉的行有效,但是它们下面的循环执行但是没有按预期运行。
解
问题是由于循环和生成具有不同行为的语句。
以下是实现此行为的替代方法:
ladder2:为0到14的i生成开始
gen1:对于0到3的j生成开始
过程(clk,rst)开始
如果rst =’1’那么
xin(i + 1,j)<=“00”&x“000”;
elsif rising_edge(clk)然后
xin(i + 1,?)<= xin(i,j);
万一;
结束过程;
结束生成;
结束生成;
没有回复内容