第6章 参考回路例

CON9、 CON11(Armadillo-440/460)、 CON14の信号を汎用入出力(GPIO)として使用する場合の参考回路を図6-1に示します。

[警告]

参考回路は動作を保証するものではありません。実際のアプリケーションで十分な評価の上、定数等を設定してください。

GPIOの参考回路例

図6.1 GPIOの参考回路例


CON11のキーパッド信号を使用する場合の参考回路を図6-2に示します。

キーパッド信号の参考回路例

図6.2 キーパッド信号の参考回路例


CON9のCAN2信号[8]を使用する場合の参考回路 [9]図6.3「CAN信号の参考回路例」に示します。

CAN信号の参考回路例

図6.3 CAN信号の参考回路例


J1/J2(Armadillo-460)にダイレクトCPUバスモード(同期)を選択し、データバス幅を16bitに設定してリード/ライトアクセスするVHDLのサンプルコードを以下に示します。

library IEEE;
use ieee.std_logic_1164.all;

entity direct_sync is
    generic (
        C_AWIDTH    : integer := 24;
        C_DWIDTH    : integer := 16;
        C_BASEADDR  : std_logic_vector := x"B2000000";
        C_HIGHADDR  : std_logic_vector := x"B27FFFFF"
    );
    port (
        SYSCLK      : in    std_logic;                      -- Clock
        RESET       : in    std_logic;                      -- Reset
        SA          : in    std_logic_vector(C_AWIDTH-1 downto 0);  -- Address
        CS3_N       : in    std_logic;                      -- Chip Select3
        EB1_N       : in    std_logic;                      -- Enable Byte(15:8)
        RW_N        : in    std_logic;                      -- Read Write 
        RDY_N       : out   std_logic;                      -- Ready
        SD          : inout std_logic_vector(C_DWIDTH-1 downto 0)   -- Data
    );
end direct_sync;

architecture Behavioral of direct_sync is

signal reg0     : std_logic_vector(C_DWIDTH-1 downto 0);    -- Register
signal data_o   : std_logic_vector(C_DWIDTH-1 downto 0);    -- Output Data
signal RDY_d1   : std_logic;                                -- RDY Delay
signal RDY_N_w  : std_logic;                                -- RDY wire
signal EB0_N    : std_logic;                                -- Enable Byte(7:0)

begin

    EB0_N <= SA(0);

-------------------
-- RDY Signal Gen
-------------------
    process(SYSCLK, RESET)
    begin
        if RESET = '1' then
            RDY_d1 <= '1';
            RDY_N_w <= '1';
        elsif SYSCLK'event and SYSCLK = '1' then
            RDY_d1 <= CS3_N;
            RDY_N_w <= RDY_d1;
        end if;
    end process;

    RDY_N <= RDY_N_w;

------------------
-- Write Access
------------------
    process(SYSCLK, RESET)
    begin
        if RESET = '1' then
            reg0 <= (others => '0');
        elsif SYSCLK'event and SYSCLK = '1' then
            if CS3_N = '0' and RW_N = '0' and RDY_N_w = '0' then
                case SA(3 downto 1) is
                    when "000" =>
                        if EB1_N = '0' then
                            if EB0_N = '0' then
                                reg0 <= SD;
                            else
                                reg0(15 downto 8) <= SD(15 downto 8);
                            end if;
                        else
                            reg0(7 downto 0) <= SD(7 downto 0);
                        end if;
                    when others => null;
                end case;
            end if;
        end if;
    end process;

------------------
-- Read Access
------------------
    process(SYSCLK, RESET)
    begin
        if RESET = '1' then
            data_o <= (others => '0');
        elsif SYSCLK'event and SYSCLK = '1' then
            if CS3_N = '0' and RW_N = '1' and RDY_N_w = '0' then
                case SA(3 downto 1) is
                    when "000" => data_o <= reg0;
                    when others => data_o <= (others => '0');
                end case;
            end if;
        end if;
    end process;

    SD <= data_o when CS3_N = '0' and RW_N = '1' and RDY_N_w = '0' else (others => 'Z');

end Behavioral;

図6.4 ダイレクトCPUバスモード(同期)の参考アクセス例




[8] CON11のCAN1信号を使用する場合も同様の回路となります。

[9] 参考回路のCON1で使用しているGPIOは、Armadillo-4x0のCON14に隣接しているCON9のGPIO3_17を使用しています。