- ベストアンサー
MachXO2の内部クロックの設定
Lattice MachXO2 1200ZE Breakout Boardを使って、VHDLの勉強をしているのですが、内部クロックの設定の仕方がわかりません。どうやって設定して良いのか全くわからないため、困っています。 Lattice Diamondを使っており、Warningでクロックを設定してくださいと警告が出ます。 VHDLおよび、プログラムは初心者なので誰か教えていただけると助かります。 ちなみに、タイマーの作製を目標としてプログラムを組んでいます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
下記URLから見つけたソースです。 http://www.eewiki.net/display/LOGIC/Lattice%20Diamond%20and%20MachXO2%20Breakout%20Board%20Tutorial#LatticeDiamondandMachXO2BreakoutBoardTutorial-VHDLCodeforTutorial これでLEDが約1Hzで点滅します。 設定可能な周波数も上記URLに乗っていますよ。 頑張って下さい。 -- Start of example source LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY lattice; USE lattice.components.all; LIBRARY machxo2; USE machxo2.all; ENTITY blinking_led IS PORT( led : BUFFER STD_LOGIC); END blinking_led; ARCHITECTURE behavior of blinking_led IS SIGNAL clk : STD_LOGIC; --internal osclator COMPONENT OSCH GENERIC( NOM_FREQ: string := "53.20"); --53.20MHz, or can select other supported frequencies PORT( STDBY : IN STD_LOGIC; --'0' OSC output is active, '1' OSC output off OSC : OUT STD_LOGIC; --the oscillator output SEDSTDBY : OUT STD_LOGIC); --required only for simulation when using standby END COMPONENT; BEGIN --internal osclator OSCInst0: OSCH GENERIC MAP (NOM_FREQ => "53.20") PORT MAP (STDBY => '0', OSC => clk, SEDSTDBY => OPEN); PROCESS(clk) VARIABLE count : INTEGER RANGE 0 TO 26_600_000; BEGIN IF (clk'EVENT AND clk = '1') THEN IF (count < 26_600_000) THEN count := count + 1; ELSE count := 0; led <= NOT led; END IF; END IF; end process; end behavior; --End of example source