0

Micronova ( http://micro-nova.com/mercury ) から Spartan 3A 開発ボードを購入しましたが、その SRAM とのインターフェイスに問題があります。

このボードには、Cypress SRAM と共有される 30 個の GPIO ピンと、それらを切り替えるための 2 つのピンがあります。

明らかに、2 つの VHDL モジュール (1 つは SRAM の制御用、もう 1 つは GPIO の駆動用) を同じピンに接続すると、合成時に「複数のドライバー エラー」が発生します。

そこで、この問題を解決するために、どちらのモジュールを操作するかを選択するために、両方のモジュールを別の変数に接続する中間コントローラーとして 3 番目のモジュールを作成しました。

これは出力にはうまく機能しますが、入力の読み取りに関しては、実際の値とは関係なく、常に 1 になります。

他のプロジェクトに使用できる独立したモジュールが必要なため、どのピンが入力として使用され、どのピンが出力として使用されるかわかりません。

これは私がこれまでに得たものです:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity DMA2 is
    Port (
        IOphys      : inout STD_LOGIC_VECTOR (29 downto 0);
        IOin1       : out STD_LOGIC_VECTOR (29 downto 0);
        IOin2       : out STD_LOGIC_VECTOR (29 downto 0);
        IOout1      : in STD_LOGIC_VECTOR (29 downto 0);
        IOout2      : in STD_LOGIC_VECTOR (29 downto 0);
        SwitchEn2   : in STD_LOGIC
    );
end DMA2;

architecture Behavioral of DMA2 is

begin

IOin2 <= IOphys;
IOin1 <= IOphys;
IOphys <= IOout2 when SwitchEn2 = '1' else IOout1;

end Behavioral;

IOphys はボード上の物理ピン、SwitchEn2 は駆動モジュールの選択用、その他はモジュールの入力と出力です。

4

2 に答える 2