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

uart框架
設(shè)計(jì)
- 波特率產(chǎn)生模塊
- 根據(jù)功能時(shí)鐘和配置,產(chǎn)生收發(fā)波特率時(shí)鐘。
- 數(shù)據(jù)接收
- 根據(jù)RX波特率時(shí)鐘接收數(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波特率時(shí)鐘進(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í)鐘。
- 數(shù)據(jù)接收
- 仿真環(huán)境的接收數(shù)據(jù)模型。
- 數(shù)據(jù)發(fā)送
- 仿真環(huán)境的發(fā)送數(shù)據(jù)模型。
- APB總線
- 數(shù)據(jù)對(duì)比
- 根據(jù)對(duì)比發(fā)送和接收的數(shù)據(jù)和時(shí)序,產(chǎn)生不同的對(duì)比結(jié)果,便于仿真時(shí)對(duì)結(jié)果的觀察。
- Testcase產(chǎn)生
- 通過不同的激勵(lì)或配置產(chǎn)生不同的case,驗(yàn)證功能是否符合。
AMBA-APB協(xié)議
AMBA
AMBA總線是ARM研發(fā)的高級(jí)微控制器總線體系(Advanced Microcontroller Bus Architecture),定義了在設(shè)計(jì)高性能嵌入式微控制器時(shí)的一種片上通信標(biāo)準(zhǔn)。AMBA2.0定義了三種不同的總線:AHB、ASB、APB。

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

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

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

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




























評(píng)論