ここにはいくつかの質問があります。
最近、SPI マスターを作成し、完全にシミュレートして、期待どおりに動作することを確認しました。ここから、SPI バス上の ADC から受け取った値を取得するように 7 セグメント ディスプレイ コンポーネントをセットアップした別のデザインで使用したいと思いますが、これで混乱したと思います。点。
転送を開始するには、他のパラメーターを含むパルスを SPI マスターに送信し、ビジー信号がアサート解除されるのを待ってから、他のパラメーターを送信する必要があります。新しいデザインで SPI マスターを実装する最善の方法がよくわかりません。
コンポーネントとして設計に使用しますか? より良い方法はありますか?
コンポーネントでなければならない場合、最上位デザインで新しい入力/出力にマップするのではなく、そのコンポーネントからピンに直接出力するように設定する方法はありますか?
たとえば、SCLK、MOSI、MISO、および CS があります。トップレベルでマッピングするのではなく、直接出力することはできますか? トップレベルを簡素化し、扱いにくくするようです。
また、「このデータをSPI経由で送信し、受信したものを返す」という機能を設定することは可能でしょうか?
私はまだこれらのものをまとめる方法について頭を悩ませているので、助け/例は大歓迎です。利用可能なすべての例/チュートリアルは、2 つの半加算器、論理ゲートなどの使用などに基づいているようです。これは、非常に単純な場合にのみ役立ちます。
編集:私のSPIマスターのエンティティ
entity SPI_master is
generic(data_width: integer := 8;
clock_select: integer := 0);
port(SCLK: out std_logic;
MOSI: out std_logic;
MISO: in std_logic;
CS: out std_logic;
Mclk_in: in std_logic;
RST: in std_logic;
CPOL: in std_logic;
CPHA: in integer;
send_packet: in std_logic;
busy: out std_logic;
Tx_data: in std_logic_vector(data_width-1 downto 0);
Rx_data: out std_logic_vector(data_width-1 downto 0));
end SPI_master;