VHDL:组件端口映射中的索引
VHDL: Indexing in component port map
comp_A1: comp_A port map ( CLK => CLK,
RESET_N => RESET_N,
DATA_IN => DATA(to_integer(unsigned(count))),
VLD_IN => VLD_IN,
DATA_OUT=> DATA_OUT,
VLD_OUT => VLD_OUT,
BUSY_OUT=> BUSY_OUT
);
在上面的代码片段中,我试图将 'DATA' 串行 传递到测试台中组件 comp_A1 的 'DATA_IN' 引脚。 'DATA'和'count'都是std_logic_vectors。所有其他信号都是 std_logic。 'DATA' 是大小为 64 位的常量向量,'count' 是在每个上升沿 (CLK) 递增的向量。
在编译过程中,Model Sim 仅显示以下错误,
- (vcom-1450) 正式 "DATA_IN" 的实际(索引名称)不是静态信号名称。
- VHDL 编译器正在退出。
与 'count' 有关的错误是动态的吗?执行此操作的解决方法是什么?
只需将使用DATA(to_integer(unsigned(count)))
行创建的多路复用器移动到使用中间信号的单独语句中,例如:
selected_data <= DATA(to_integer(unsigned(count)));
...
DATA_IN => selected_data
comp_A1: comp_A port map ( CLK => CLK,
RESET_N => RESET_N,
DATA_IN => DATA(to_integer(unsigned(count))),
VLD_IN => VLD_IN,
DATA_OUT=> DATA_OUT,
VLD_OUT => VLD_OUT,
BUSY_OUT=> BUSY_OUT
);
在上面的代码片段中,我试图将 'DATA' 串行 传递到测试台中组件 comp_A1 的 'DATA_IN' 引脚。 'DATA'和'count'都是std_logic_vectors。所有其他信号都是 std_logic。 'DATA' 是大小为 64 位的常量向量,'count' 是在每个上升沿 (CLK) 递增的向量。
在编译过程中,Model Sim 仅显示以下错误,
- (vcom-1450) 正式 "DATA_IN" 的实际(索引名称)不是静态信号名称。
- VHDL 编译器正在退出。
与 'count' 有关的错误是动态的吗?执行此操作的解决方法是什么?
只需将使用DATA(to_integer(unsigned(count)))
行创建的多路复用器移动到使用中间信号的单独语句中,例如:
selected_data <= DATA(to_integer(unsigned(count)));
...
DATA_IN => selected_data