1

我正在尝试将连接到板载 LED 的引脚配置为输入引脚。文档说明它们是免费的 i/o,但是当我用示波器探测它们时,它说它们正在输出“高”信号。这是在 MACHXO2 7000he cpld 上,但我认为任何 MACH 板的答案都是相同的。提前感谢您的帮助。

4

2 回答 2

0

嘿伙计们很抱歉花了这么长时间才回复。我会附上电路的图片,但我目前的声誉太低,无法这样做。

LED 连接到 3.3V 的 VCC。我发现通过从板上拆焊 LED,我可以自由地将它们连接的引脚用作空闲 I/O,因为这会在引脚和 3.3V 之间产生开路。

这些引脚应该已经通过空闲 I/O,但 LED 低电平有效,这导致我的程序一直将它们视为高信号,最终使这些引脚成为永久输出。

无论如何,这就是我的答案,我希望它是有道理的,并且可以帮助你们中的一个人度过这些日子。

感谢您的回复。

于 2014-08-19T18:13:32.417 回答
-1

您可以尝试一个led blinking示例,例如:

LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY lattice;
USE lattice.components.all;

ENTITY blinking_led IS
   PORT(
      led  : BUFFER  STD_LOGIC);
END blinking_led;

ARCHITECTURE behavior OF blinking_led IS
   SIGNAL  clk  : STD_LOGIC;
   --internal oscillator
   COMPONENT OSCH
      GENERIC(
            NOM_FREQ: string := "53.20");
      PORT( 
            STDBY    : IN  STD_LOGIC;
            OSC      : OUT STD_LOGIC;
            SEDSTDBY : OUT STD_LOGIC);
   END COMPONENT;
BEGIN
   --internal oscillator
   OSCInst0: OSCH
      GENERIC MAP (NOM_FREQ  => "53.20")
      PORT MAP (STDBY => '0', OSC => clk, SEDSTDBY => OPEN);
   PROCESS(clk)
      VARIABLE count :   INTEGER RANGE 0 TO 25_000_000;
   BEGIN
      IF(clk'EVENT AND clk = '1') THEN
         IF(count < 25_000_000) THEN
            count := count + 1;
         ELSE
            count := 0;
            led <= NOT led;
         END IF;
      END IF;
   END PROCESS;
END behavior;

如需更多阅读,请查看 Lattice Diamond 和 MachXO2 分线板教程

于 2014-08-15T01:19:39.677 回答