【发布时间】:2020-01-23 12:12:26
【问题描述】:
我是 VHDL 新手,目前正在通过我找到的示例代码对 hdmi 应用一些过滤器。我设法让一切正常运行 (HDMI Pass Through with RGB Switch Filter),因此我尝试使用 Vivado 将代码迁移到一个 IP。
我这样声明组件和实例:
component TestIP
port (
vid_pData : in std_logic_vector(23 downto 0);
vid_pData_new : out std_logic_vector(23 downto 0);
aRst : in std_logic;
PixelClk : in std_logic;
sw0 : in std_logic;
sw1 : in std_logic;
sw2 : in std_logic;
sw3 : in std_logic
);
TestIP_inst : TestIP
port map(
vid_pData => vid_pData_new,
aRst => async_reset_i,
PixelClk => pixelclk,
sw0 => sw0,
sw1 => sw1,
sw2 => sw2,
sw3 => sw3
);
其余代码保持不变。我使用 IP 向导打包 IP,并将其导出到默认 IP 存储库。它创建了一个名为 TestIP_0 的文件,其中包含两个文件 TestIP_0 和 Top_IP,它们都是 .vhd 文件。
在 vivado 的源层次结构中,我可以在 IP 中看到我的实例,TestIP_inst: TestIP(Behavioral)(TestIP_0.vhd)
问题是我在我的 IP 目录中找不到这个,即使我可以在我的原理图上成功创建比特流,我希望在 DVI2RGB 和 RGB2DVI 块之间找到我的 IP,但是我的 IP 没有出现并且数据流没有将输入连接到输出,所以当我对电路板进行编程时,屏幕只是黑色。
对于这个可能是个愚蠢的问题,我提前道歉,但知道如何纠正这个问题吗?
谢谢
编辑 这是我对TestIP的实体声明
entity TestIP is
Port ( vid_pData : in STD_LOGIC_Vector(23 downto 0);
vid_pData_new : out STD_LOGIC_Vector(23 downto 0);
aRst : in std_logic;
PixelClk : in std_logic;
sw0 : in STD_LOGIC;
sw1 : in STD_LOGIC;
sw2 : in STD_LOGIC;
sw3 : in STD_LOGIC);
end TestIP;
【问题讨论】:
-
“我的 IP 目录” 什么 IP 目录? VHDL 没有 IP 目录。还有什么板子?请让您的问题独立出来,这样我们就不必处理问题层次结构。
-
对不起,我将编辑解释,但使用 vivado:项目管理器 -> IP 目录。在 zybo z7-10 上工作
-
你的模块转IP了吗?然后您是否将 IP 位置添加到 IP 存储库?请注意,顶级模块 VHDL 版本存在限制。我认为您不能将 2008 用于顶级模块。
-
是的,我使用了 IP 向导。我也把它放在了正确的存储库中。我用的是2019版
-
似乎您的组件声明和 TestIP 的实体实例化不匹配。在实例化中,您没有将任何东西连接到 TestIP 的 vid_pData_new 端口。这应该会导致详细说明错误。
标签: vhdl vivado hdmi register-transfer-level