功能
實現(xiàn)一個在ARM中通過APB總線連接的UART模塊(Universal Asynchronous Receiver/Transmitter),包括設計與驗證兩部分。
項目需求
- 系統(tǒng)時鐘最大工作頻率滿足100MHz,功能時鐘滿足26MHz
- 具有系統(tǒng)和功能時鐘域的復位功能
- 配置接口滿足AMBA2.0-APB總線接口時序,總線位寬16bit
- 數據傳輸滿足通用串口時序,奇偶校驗功能可配置
- 波特率滿足115200,或可配置
- 接收和發(fā)送FIFO復位單獨可控,觸發(fā)深度可配置
- 數據收發(fā)中斷功能可配置
- 數據發(fā)送間隔可控
- 具有狀態(tài)指示功能
- 具有FIFO數據量指示功能
框架

uart框架
設計
- 波特率產生模塊
- 根據功能時鐘和配置,產生收發(fā)波特率時鐘。
- 數據接收
- 根據RX波特率時鐘接收數據,進行奇偶校驗,存放數據到RX FIFO,再由CUP經過APB總線讀取數據。內含接收數據狀態(tài)機。
- 數據發(fā)送
- CUP通過APB總線將需要發(fā)送的數據放到TX FIFO,根據TX波特率時鐘進行數據發(fā)送。內含發(fā)送數據狀態(tài)機。
- 寄存器配置
- 實現(xiàn)APB讀寫寄存器功能,中斷操作,功能選擇,模塊狀態(tài)指示等。
驗證
- 波特率產生
- 產生仿真環(huán)境使用的波特率時鐘。
- 數據接收
- 仿真環(huán)境的接收數據模型。
- 數據發(fā)送
- 仿真環(huán)境的發(fā)送數據模型。
- APB總線
- 數據對比
- 根據對比發(fā)送和接收的數據和時序,產生不同的對比結果,便于仿真時對結果的觀察。
- Testcase產生
- 通過不同的激勵或配置產生不同的case,驗證功能是否符合。
AMBA-APB協(xié)議
AMBA
AMBA總線是ARM研發(fā)的高級微控制器總線體系(Advanced Microcontroller Bus Architecture),定義了在設計高性能嵌入式微控制器時的一種片上通信標準。AMBA2.0定義了三種不同的總線:AHB、ASB、APB。

AMBA典型系統(tǒng)
典型的基于AMBA的微控制器由一個高性能系統(tǒng)中樞總線(AHB或者ASB)組成,能夠支持高帶寬外部存儲器,包括CPU,片上存儲器和其他直接數據存?。?a href="http://www.brongaenegriffin.com/tags/dma/" target="_blank">DMA)設備。這條總線為上述單元之間大多數的傳輸提供高帶寬接口。在這條高性能總線上也有一個橋接器以連接低帶寬的APB,而在APB上連接著大多數的系統(tǒng)外設。
APB
- 接口信號
PCLK (input):APB總線的時鐘,所有的傳輸都和它的上升沿同步。
PRESETn (input):APB總線的復位信號,低有效。
PADDR (input):APB的地址總線。
PSELx (input):APB模塊的選擇信號,高有效。這個信號選擇需要和APB總線傳輸數據的模塊。
PENABLE (input):APB模塊的觸發(fā)信號,標志APB傳輸的第二個時鐘周期。
PWRITE (input):APB總線上的寫(高有效),讀(低有效)信號。
PWDATA (input):APB總線的寫數據信號,由APB總線橋來驅動。
PRDATA (output):APB總線的讀數據信號,由APB模塊來驅動。
說明:
- APB總線的傳輸需要兩個時鐘周期
- input,output是相對APB模塊(slave)的輸入,輸出信號
- “寫”操作是將數據從APB總線傳輸到APB模塊,“讀”操作是將數據從APB模塊傳輸到APB總線

apb狀態(tài)圖
- APB寫操作
-
PADDR,PWRITE,PSEL,PWDATA信號有效時刻相同
如果只有一個“寫”操作,上述信號只持續(xù)兩個周期。
如果有多個“寫”操作(如Burst方式),PWRITE,PSEL可以保持不變,PADDR,PWDATA每兩個周期改變。
-
PENABLE信號在PSEL有效之后一個周期有效,持續(xù)一個周期。
如果有多個“寫”操作,PENABLE信號在每兩個周期內,保持一個周期低電平,一個周期高電平
-

apb寫操作時序圖
- APB讀操作
-
PADDR,PWRITE,PSEL信號有效時刻相同
如果只有一個“讀”操作,上述信號只持續(xù)兩個周期。
如果有多個“讀”操作(如Burst方式),PWRITE,PSEL可以保持不變,PADDR每兩個周期改變。
-
PENABLE信號在PSEL有效之后一個周期有效,持續(xù)一個周期。
如果有多個“讀”操作,PENABLE信號在每兩個周期內,保持一個周期低電平,一個周期高電平
-
APB模塊需要在PENABLE有效的時刻,將“讀”操作需要的數據送到APB總線上,并保持一個周期。
-

apb讀操作時序圖
電子發(fā)燒友App




























評論