for-loop - 架构中的循环问题 - vhdl。在体系结构中增加循环(不是 tb 代码)
问题描述
我在架构中遇到了 for 循环增量的问题,正如我在测试台代码中所说的那样。如果它是“1”或“0”,我想测试任何 48 位 vecotr,然后制作一些东西。它没有用,我不知道该怎么办。
我的代码
wyswietl : 进程 (clk, ZNAK_Z_ROM) 开始如果上升沿(clk) 然后
--------------------------------------------------------------------------
for i in 47 to 42 loop
if( ZNAK_Z_ROM(i) ='1' ) then
if flaga='1' then
flaga<='0';
vs<="1000000011";
hs<="0010010000"+conv_std_logic_vector((47-i+1)+(7*conv_integer(flag)),6);
else
vs<="1000000011";
hs<="0010010000"+conv_std_logic_vector((47-i)+(7*conv_integer(flag)),6);
end if;
elsif(ZNAK_Z_ROM(i) ='0') then
flaga<='1';
end if;
end loop;
--------------------------------------------------------------------------
for i in 41 to 36 loop
if( ZNAK_Z_ROM(i) ='1' ) then
if flaga='1' then
flaga<='0';
vs<="1000000100";
hs<="0010010000"+conv_std_logic_vector((41-i+1)+(7*conv_integer(flag)),6);
else
vs<="1000000100";
hs<="0010010000"+conv_std_logic_vector((41-i)+(7*conv_integer(flag)),6);
end if;
elsif(ZNAK_Z_ROM(i) ='0') then
flaga<='1';
end if;
end loop;
--------------------------------------------------------------------------
for i in 35 to 30 loop
if( ZNAK_Z_ROM(i) ='1' ) then
if flaga='1' then
flaga<='0';
vs<="1000000011";
hs<="0010010000"+conv_std_logic_vector((35-i+1)+(7*conv_integer(flag)),6);
else
vs<="1000000011";
hs<="0010010000"+conv_std_logic_vector((35-i)+(7*conv_integer(flag)),6);
end if;
elsif(ZNAK_Z_ROM(i) ='0') then
flaga<='1';
end if;
end loop;
--------------------------------------------------------------------------
for i in 29 to 24 loop
if( ZNAK_Z_ROM(i) ='1' ) then
if flaga='1' then
flaga<='0';
vs<="1000000010";
hs<="0010010000"+conv_std_logic_vector((29-i+1)+(7*conv_integer(flag)),6);
else
vs<="1000000010";
hs<="0010010000"+conv_std_logic_vector((29-i)+(7*conv_integer(flag)),6);
end if;
elsif(ZNAK_Z_ROM(i) ='0') then
flaga<='1';
end if;
end loop;
--------------------------------------------------------------------------
for i in 23 to 18 loop
if( ZNAK_Z_ROM(i) ='1' ) then
if flaga='1' then
flaga<='0';
vs<="1000000001";
hs<="0010010000"+conv_std_logic_vector((23-i+1)+(7*conv_integer(flag)),6);
else
vs<="1000000001";
hs<="0010010000"+conv_std_logic_vector((23-i)+(7*conv_integer(flag)),6);
end if;
elsif(ZNAK_Z_ROM(i) ='0') then
flaga<='1';
end if;
end loop;
-----------------------------------------------------------------------
for i in 17 to 12 loop
if( ZNAK_Z_ROM(i) ='1' ) then
if flaga='1' then
flaga<='0';
vs<="1000000000";
hs<="0010010000"+conv_std_logic_vector((17-i+1)+(7*conv_integer(flag)),6);
else
vs<="1000000000";
hs<="0010010000"+conv_std_logic_vector((17-i)+(7*conv_integer(flag)),6);
end if;
elsif(ZNAK_Z_ROM(i) ='0') then
flaga<='1';
end if;
end loop;
-----------------------------------------------------------------------
for i in 11 to 6 loop
if( ZNAK_Z_ROM(i) ='1' ) then
if flaga='1' then
flaga<='0';
vs<="0111111111";
hs<="0010010000"+conv_std_logic_vector((11-i+1)+(7*conv_integer(flag)),6);
else
vs<="0111111111";
hs<="0010010000"+conv_std_logic_vector((11-i)+(7*conv_integer(flag)),6);
end if;
elsif(ZNAK_Z_ROM(i) ='0') then
flaga<='1';
end if;
end loop;
-----------------------------------------------------------------------
for i in 5 to 0 loop
if( ZNAK_Z_ROM(i) ='1' ) then
if flaga='1' then
flaga<='0';
vs<="0111111110";
hs<="0010010000"+conv_std_logic_vector((5-i+1)+(7*conv_integer(flag)),6);
else
vs<="0111111110";
hs<="0010010000"+conv_std_logic_vector((5-i)+(7*conv_integer(flag)),6);
end if;
elsif(ZNAK_Z_ROM(i) ='0') then
flaga<='1';
end if;
end loop;
flag<=flag+"00001";
end if;
结束进程;
解决方案
推荐阅读
- python - InvalidArgumentError:不兼容的形状:[6291456] 与 [8388608]
- node.js - .send() 上的 discord.js 缺少权限错误
- javascript - 保存按钮以从 JavaScript 上传到“MySQL”
- r - 在 ggplot 上选择多个点并通过它们画线
- java - 是否可以在 Docker 容器中使用 whatsapp web?
- python - 在 python 上找不到用于导入 csv 的文件。文件路径正确,一切都安装好了
- r - 逆向工程累积到每日数据?
- javascript - 根据具有多个 .where 的过滤查询从集合 Cloud Firestore 中获取值
- c++ - 使用变音符号迭代字符串时出现问题
- python - 在 Python 中制作令牌