基于FPGA的三線制同步串行通信控制器設計
如圖3所示,根據設計要求,可將三線制同步串行通信控制器劃分成3個主要功能模塊:接口模塊、接收模塊和發送模塊。
(1)接口模塊:用于各種全局信號的邏輯組合譯碼控制。同時,對輸入的系統時鐘進行時鐘分頻,為接收模塊和發送模塊提供串行同步時鐘信號。
(2)接收模塊:用于接收外圍串行設備傳來的串行數據,此功能模塊的核心是接收FIFO和串/并變換兩大模塊,其中接收FIFO作為數據緩沖器暫存接收到的數據。在接收數據標志、接收移位寄存器和接收移位計數器的配合驅動下,串行數據按照MSB先、LSB后的順序經過串/并變換后,并行數據被存儲于接收FIFO中,等待中斷響應后CPU對數據進行處理。
(3)發送模塊:用于向外圍串行設備發送串行數據,此功能模塊的核心是發送FIFO和并/串變換兩大模塊。CPU將要發送的數據先放到系統的并行數據總線上,并被暫存于發送FIFO中,在響應發送中斷信號后,并行數據按照MSB首發、LSB后發的順序,在控制信號驅動下,經過并/串變換,發送的數據最終以串行數據格式被送往外圍串行設備端口。
三線制同步串行通信控制器IP核實體名接口用VHDL語言定義如下:
ENTITY SerSendRec IS
PORT( RST_n:IN STD_LOGIC;
Clk:IN STD_LOGIC;
Cs:IN STD_LOGIC;
Strobe:IN STD_LOGIC;
Rw:IN STD_LOGIC;
Addr:IN STD_LOGIC_VECTOR(2 DOWNTO 0);
Rdata:IN STD_LOGIC;
Rclk:OUT STD_LOGIC;
Rgate:OUT STD_LOGIC;
Int:OUT STD_LOGIC;
Sdata:OUT STD_LOGIC;
Sclk:OUT STD_LOGIC;
Sgate:OUT STD_LOGIC;
Data:INOUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END SerSendRec;
評論