我试图将连接到板上led的引脚配置为输入引脚。文档说明它们是自由i/o,但是当我用作用域探测它们时,它说它们正在输出"高"信号。这是在MACHXO2 7000he cpld上,但我认为答案对于任何MACH板都是相同的。谢谢你的帮助。
大家好,很抱歉这么久才回复。我想附上一张电路的照片,但我目前的声誉太低,不能这样做。
led连接到3.3V的VCC。我发现,通过从电路板上拆卸led,我可以自由地使用它们连接的引脚作为自由I/o,因为这会在引脚和3.3V之间产生开路。
引脚应该已经通过自由i/o,但led活动低,这导致我的程序一直将它们视为高信号,最终使这些引脚永久输出。
无论如何,这就是我的答案,我希望它是有意义的,并帮助你们中的一个人这些天。感谢您的回复。
您可以尝试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 and MachXO2 Breakout Board Tutorial