基于FPGA的可復用通信接口設計
3、設計原理
Verilog HDL 是一種硬件描述語言,他可以用來進行各種級別的邏輯設計,可以用來進行數(shù)字邏輯系統(tǒng) 的仿真驗證、時序分析和邏輯綜合等,應用十分廣泛。本文使用Verilog設計 SPI接口模塊,實現(xiàn)可IP復用 的通用結(jié)構(gòu)。根據(jù)SPI總線原理,可用幾個功能模塊來實現(xiàn)微處理器與從設備之間的雙向數(shù)據(jù)傳輸。
3.1. 系統(tǒng)架構(gòu)設計
根據(jù)SPI 總線的原理,本設計的SPI Master同SPI協(xié)議兼容,在主機側(cè)的設計相當于wishbone總線[2]規(guī) 范兼容的slave設備,總體架構(gòu)可分為以下3個功能模塊[3]:Clock generator、Serial interface、Wishbone interface
3.2. 模塊設計
3.2.1 .時鐘產(chǎn)生模塊spi-clgen設計
SPI時鐘分頻模塊中的時鐘信號的來源是外部系統(tǒng)提供的時鐘clk_in,模塊會根據(jù)各個不同接口的時鐘 分頻因子寄存器,產(chǎn)生相應的時鐘輸出信號clk_out。由于SPI沒有應答機制,為了能夠保證時序的可靠性, 特別設計了一個無論對于奇分頻還是偶分頻都異??煽康臅r鐘生成模塊產(chǎn)生傳輸所需要的串行時鐘。
此模塊重點考慮了奇分頻的情況,為了節(jié)省資源對奇分頻的做改動同時也能實現(xiàn)偶分頻的情況。對輸入主 時鐘的同步奇整數(shù)分頻,可以簡單地用一個Moore機來實現(xiàn),編碼采用Moore機增加了可靠性。
master核系統(tǒng)輸入時鐘clk-in通過divider分頻產(chǎn)生clk-out,通過改變divider的值,可以實現(xiàn)任意分頻的時鐘 輸出[4]。其頻率表達式如下:
用verilog語言描述時鐘產(chǎn)生模塊,用ISE綜合后,其生成電路如圖2所示。
圖2.時鐘產(chǎn)生模塊電路
3.2.2. 串行接口模塊spi-shift設計
數(shù)據(jù)傳輸模塊是SPI的核心模塊。此模塊負責把并行進來的數(shù)據(jù)串行傳出,串行進來的數(shù)據(jù)并行傳出。 本文設計的shift與通常的SPI移位模塊設計不同,原因在于這里考慮了寄存器的復用,以使用較少硬件資源 來增大一次傳輸數(shù)據(jù)的位數(shù),從而提高數(shù)據(jù)傳輸?shù)恼w速率。對于并行進來的數(shù)據(jù)位寬比較長,比如128 位的數(shù)據(jù)時,為了提高傳輸?shù)乃俣龋疚脑O計工作中犧牲了資源改進了以前的保守的SPI模塊。SPI MaSTer 核在主機側(cè)作為slave設備接收數(shù)據(jù),同時作為master設備發(fā)送數(shù)據(jù)。此模塊verilog代碼經(jīng)ISE綜合后如圖3 所示。
圖3.串行接口模塊電路
評論