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

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

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

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

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

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




























評論