for-loop - 如何使这个 VHDL 'for' 循环在 modelsim 上正常工作?
问题描述
我的 VHDL 设计中有一个“for”循环,它在 modelsim 上出现错误:“非法并发语句”。
我的 VHDL 体系结构有几百行长,所以我将只显示出现错误的原因:
for k in 0 to 19 loop
DATA_SERDES(k) <= DATA_SERDES_inv(19-k);
end loop;
当我将循环替换为:
DATA_SERDES(0) <= DATA_SERDES_inv(19);
DATA_SERDES(1) <= DATA_SERDES_inv(18);
DATA_SERDES(2) <= DATA_SERDES_inv(17);
DATA_SERDES(3) <= DATA_SERDES_inv(16);
DATA_SERDES(4) <= DATA_SERDES_inv(15);
DATA_SERDES(5) <= DATA_SERDES_inv(14);
DATA_SERDES(6) <= DATA_SERDES_inv(13);
DATA_SERDES(7) <= DATA_SERDES_inv(12);
DATA_SERDES(8) <= DATA_SERDES_inv(11);
DATA_SERDES(9) <= DATA_SERDES_inv(10);
DATA_SERDES(10) <= DATA_SERDES_inv(9);
DATA_SERDES(11) <= DATA_SERDES_inv(8);
DATA_SERDES(12) <= DATA_SERDES_inv(7);
DATA_SERDES(13) <= DATA_SERDES_inv(6);
DATA_SERDES(14) <= DATA_SERDES_inv(5);
DATA_SERDES(15) <= DATA_SERDES_inv(4);
DATA_SERDES(16) <= DATA_SERDES_inv(3);
DATA_SERDES(17) <= DATA_SERDES_inv(2);
DATA_SERDES(18) <= DATA_SERDES_inv(1);
DATA_SERDES(19) <= DATA_SERDES_inv(0);
对我来说,这两个声明都是等价的,但是 modelsim 看到了一个错误。我在架构中没有任何其他“k”变量或任何其他循环。我正在使用 VHDL 93 并使用 modelsim 10.4c 进行编译
任何的想法 ?
谢谢,
SLP
解决方案
for 循环只能在进程、函数或过程内部使用。也许您正在寻找的是“生成”语句:
generate_label: for k in 0 to 19 generate
DATA_SERDES(k) <= DATA_SERDES_inv(19-k);
end generate;
推荐阅读
- python - 带有 Selenium 的 Python Chromedriver WinError 2
- react-leaflet - 如何模拟传单进行开玩笑测试?
- apache - 添加基本身份验证后apache无法访问网站
- typescript - 文件“/Path/hello.js”是一个 JavaScript 文件。您是否要启用“allowJs”选项
- c# - 使用 Npgsql 和 EF Core 3.1 为每个用户选择最后的订单
- python - 我的目录在这段代码中应该是什么?
- javascript - React 1000 个复选框 - 单击/重新渲染需要几秒钟
- python - Errno.13 尝试通过 HTML 和 Flask 访问文件时权限被拒绝
- android - 未经许可生成图像并有意分享
- docker - 是否可以在无 GUI 的服务器上运行嵌入 GUI 环境的 docker 容器并从远程 GUI 客户端打开 GUI 会话?