chipscope を使用してトライステート信号をプローブしたいと考えています。
このアンサー レコードによると、それはできないので、これが私が始めたものです (関連するコードのみが含まれています)。
-- Tristate signals
FPGA_SMB0_SDA <= sysmon_iic_data;
FPGA_SMB0_SCL <= sysmon_iic_clk;
-- Output signals
DEBUG_LED0 <= '0';
DEBUG_LED1 <= '0';
エラーなしで正常にビルドされます。
試行 1:
これは、単なるアウトであるプローブ用のデバッグ信号を生成する最初の試みです。
-- 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 で次のエラーが発生します。
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.
上記は、ネットごとに 2 回、合計 8 回繰り返されます。
試行 2:
私が試した2番目のことは、プロセスを使用することでした:
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 エラーが発生しました。
ERROR:NgdBuild:924 - bidirect pad net 'FPGA_SMB0_SDA' is driving non-buffer primitives:
pin D on block sysmon_iic_data with type FDC,
そのうちの 2 つ、1 つは SDA 用、もう 1 つは SCL 用
より詳しい情報:
これは私のUCFにあるものです:
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 ネット定義:
DEBUG_LED0 : out std_logic;
DEBUG_LED1 : out std_logic;
FPGA_SMB0_SCL : inout std_logic;
FPGA_SMB0_SDA : inout std_logic;
および uBlaze .mhs では:
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 エラーが発生するのか完全に途方に暮れています。