首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从INOUT生成OUT

从INOUT生成OUT
EN

Stack Overflow用户
提问于 2012-06-25 21:10:00
回答 1查看 1.1K关注 0票数 0

我想用chipscope探测一个三态信号。

根据this answer record的说法,这是不可能的,所以我从这里开始(只包含相关的代码):

代码语言:javascript
复制
-- Tristate signals
FPGA_SMB0_SDA <= sysmon_iic_data;
FPGA_SMB0_SCL <= sysmon_iic_clk;

-- Output signals
DEBUG_LED0 <= '0';  
DEBUG_LED1 <= '0';   

它构建得很好,没有任何错误。

尝试1:

这是我第一次尝试为探测生成调试信号,这只是一个输出:

代码语言:javascript
复制
-- Tristate signals
FPGA_SMB0_SDA <= sysmon_iic_data;
FPGA_SMB0_SCL <= sysmon_iic_clk;

-- Generating new output signals using tristate (tristate signals are either '0' or 'X' for IIC)
sysmon_iic_data_debug <= '0' when (sysmon_iic_data  = '0') else '1'; 
sysmon_iic_clk_debug <= '0' when (sysmon_iic_clk  = '0') else '1';   

-- connecting debug outs to debug leds (so that the debug signals aren't optimized out)
DEBUG_LED0 <= sysmon_iic_data_debug;  
DEBUG_LED1 <= sysmon_iic_clk_debug;   

上面的代码通过了合成,但NGDbuild给出了以下错误:

代码语言:javascript
复制
ERROR:ConstraintSystem:59 - Constraint <IOSTANDARD = LVCMOS25 ;>
   [frm121401u1r1.ucf(333)]: NET "FPGA_SMB0_SDA"
   not found.  Please verify that:
   1. The specified design element actually exists in the original design.
   2. The specified object is spelled correctly in the constraint source file.

以上操作重复8次,每个网络重复两次。

尝试2:

我尝试的第二件事是使用一个进程:

代码语言:javascript
复制
FPGA_SMB0_SDA <= sysmon_iic_data;
FPGA_SMB0_SCL <= sysmon_iic_clk;

gen_sysmon_debug : process(refclk_10m,refclk_10m_rst)
begin
    if (refclk_10m_rst = '1') then
        sysmon_iic_data_debug <= '0';
        sysmon_iic_clk_debug <= '0';
    elsif (rising_edge(refclk_10m)) then
        if (sysmon_iic_clk = '0') then
            sysmon_iic_clk_debug <= '0';
        else
            sysmon_iic_clk_debug <= '1';            
        end if;
        if (sysmon_iic_data = '0') then
            sysmon_iic_data_debug <= '0';
        else
            sysmon_iic_data_debug <= '1';       
        end if;

    end if;
end process;

DEBUG_LED0 <= sysmon_iic_data_debug;  
DEBUG_LED1 <= sysmon_iic_clk_debug;   

这给了我这个NGDbuild错误:

代码语言:javascript
复制
ERROR:NgdBuild:924 - bidirect pad net 'FPGA_SMB0_SDA' is driving non-buffer primitives:
     pin D on block sysmon_iic_data with type FDC,

其中两个,一个用于SDA,另一个用于SCL

更多信息:

这是我的UCF中的内容:

代码语言:javascript
复制
NET "DEBUG_LED0" LOC = "AK33" | IOSTANDARD = LVCMOS25 ;
NET "DEBUG_LED1" LOC = "AK34" | IOSTANDARD = LVCMOS25 ;
...
NET "FPGA_SMB0_SCL" LOC = "G13" | IOSTANDARD = LVCMOS25 ;
NET "FPGA_SMB0_SDA" LOC = "H13" | IOSTANDARD = LVCMOS25 ;

和顶层vhdl网定义:

代码语言:javascript
复制
DEBUG_LED0 : out std_logic;
DEBUG_LED1 : out std_logic;

FPGA_SMB0_SCL : inout std_logic;
FPGA_SMB0_SDA : inout std_logic;

在uBlaze .mhs中:

代码语言:javascript
复制
PORT xps_iic_1_Sda_pin = xps_iic_1_Sda, DIR = IO, BUFFER_TYPE = NONE
PORT xps_iic_1_Scl_pin = xps_iic_1_Scl, DIR = IO, BUFFER_TYPE = NONE

我完全不明白为什么我会收到这些NGDbuild错误,有人知道吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-25 22:16:27

你的网络可能会被重命名,因为你已经连接了另一个信号:(

去掉约束,让它构建起来。

将NCD文件加载到FPGA编辑器中,查看网络最终调用了什么,并在UCF中使用该文件。

或者自己在顶级VHDL文件中实例化所有IOB,那么您就知道IOB“引脚”和真实引脚之间的网络的nae不会改变,并且您可以约束该网络。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11190033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档