【问题标题】:Importing Custom VHDL IP but not able to use or view IP导入自定义 VHDL IP 但无法使用或查看 IP
【发布时间】: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


【解决方案1】:

启动组件的正确方法是定义一组新变量,它一定是混淆了,因为有多个 vid_pData 和 vid_pData new 实例,因此数据流没有“顺序” .

TestIP_inst : TestIP
port map(
    vid_pData1  => vid_pData,
    vid_pData2 => vid_pData_new,
    aRst      => async_reset_i,
    PixelClk      => pixelclk,

    sw0       => sw0,
    sw1       => sw1,
    sw2       => sw2,
    sw3       => sw3
    );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 2019-06-15
    • 2021-10-16
    • 2012-03-26
    相关资源
    最近更新 更多