parameters - 参数化端口中使用的记录中的元素
问题描述
参数化记录元素的最佳方法是什么?
例如:
我有这个组件:
component C1 is
port (
clk : in std_logic;
reset_n : in std_logic;
cam : out t_CAM_OUT
);
end component C1;
类型t_CAM_OUT
在包中定义:
package camera_signals_pkg is
-- Output signals related to camera
type t_CAM_OUT is record
...
pixel_data : std_logic_vector(31 downto 0);
...
end record t_CAM_OUT;
end package camera_signals_pkg;
但是我想参数化信号pixel_data
在组件C1的一个实例中,我要求pixel_data为 16 位,而在另一个实例中,它必须为 32 位。
最好的方法是什么?
解决方案
如果您乐于使用 VHDL 2008,您可以简单地pixel_data
在类型中保持不受约束,然后在端口声明期间对其进行约束,无论是从每个实体的文字还是从泛型,就像您对任何类型一样。
-- Output signals related to camera
type t_CAM_OUT is record
...
pixel_data : std_logic_vector;
...
end record t_CAM_OUT;
entity ent1 is
port (
clk : in std_logic;
reset_n : in std_logic;
cam : out t_CAM_OUT( pixel_data(15 downto 0) );
);
entity generic_ent is
generic (
W : natural
);
port(
clk : in std_logic;
reset_n : in std_logic;
cam : out t_CAM_OUT( pixel_data(W-1 downto 0) );
);
推荐阅读
- node.js - 当有人加载我的 npm 包时,我如何运行 javascript 代码?
- python - 如何不将 jwt 应用于 django 中的每个应用程序
- podman - 是否可以列出 Podman pod 中的哪些端口绑定到哪个容器?
- azure - 自动从 Azure Function App 和 App Services 更新到 APIM
- php - Laravel API + Sanctum + Angular + SSO (SAML) - 如何在 Angular 11 和 SAML auth 中构建带有前端的 Laravel 7/8 API
- android - 同一个 Flutter 应用中的多个 Kotlin 运行时
- visual-studio-code - VSCode - 源代码控制着色
- javascript - 仅在后端更新时更新 react-native-multi-slider 值
- tensorflow - 卷积神经网络(CNN)可以用于无监督学习中的特征提取吗?
- c++ - 将行从 txt 文件传递到数组时遇到问题