異步串行通信接口的IP核設計
關(guān)鍵詞:SCI IP核設計 狀態(tài)機 數據流
引言
目前,基于傳統IC芯片的微電子應用系統設計技術(shù)正在轉向基于知識產(chǎn)權(IP,Intellectual Property)核的片上系統(SoC,System on Chip)技術(shù)發(fā)展。另外,IC設計在國內的發(fā)展很快,各種規模的IC設計中心和公司不斷出現。因此,IP核的設計已開(kāi)始逐漸成為國內微電子系統設計的一項支撐技術(shù)。從應用功能角度劃分IP核有兩大類(lèi):微處理器IP核(如8位8051核、32位ARM核等)和各種接口IP核(如LCD控制器、各種串行總線(xiàn)接口IP核等)。本文以異步串行通信接口(SCI,Serial Communication Interface)接口IP核結構設計為例,說(shuō)明SCI、UART、SPI、USB等接口IP核的設計方法。
SCI的通信方式采用標準NRZ格式來(lái)進(jìn)行外設間的異步數字通信。因其結構簡(jiǎn)法,通常嵌入到DSP、MCU和MPU或外設控制芯片內部,作為芯片的一個(gè)接口功能模塊。SCI通常由三個(gè)功能單元構成:波特率脈沖產(chǎn)生單元、發(fā)送單元和接收單元。其結構如圖1所示。在SCI數據收發(fā)中,數據幀的數據格式要比地址幀的數據格式復雜得多。在不同的通信方式下,數據幀的格式是不同 的。為此在發(fā)送器和接收器中各引入了與數據幀格式相對應的狀態(tài)機來(lái)實(shí)現數據流的控制。本文所介紹的就是基于這種設計思想的一種通用設計方法。
1 SCI數據發(fā)送單元
數據發(fā)送單元主要功能是完成數據的并/串轉換及發(fā)送,同時(shí)產(chǎn)生發(fā)送標志位。其結構如圖2所示,字符發(fā)送狀態(tài)機如圖3所示。下面簡(jiǎn)要介紹發(fā)送單元各功能模塊及其狀態(tài)轉換。
(1)TXD時(shí)鐘八分頻器
對基于波特率時(shí)鐘進(jìn)行八分頻,并輸出兩個(gè)基本脈沖―TXD_CLK_WORK(用于計數、移位等)和TXD_CLK_END(用于標志位的生成和數據流輸出)。
(2)TXD狀態(tài)寄存器
通過(guò)此狀態(tài)寄存器設置通信控制寄存器2的兩個(gè)控制位―TXEMPTY和TXRDY位,以表示數據寫(xiě)入SCI_TXBUF和啟動(dòng)發(fā)送過(guò)程。
(3)發(fā)送字符計數器
當字符狀態(tài)機的輸出狀態(tài)為允許字符計數時(shí),其開(kāi)始對發(fā)送的字符計數。當計數器值等于編程的字符數時(shí),輸出TX_CHAP_REACH信號作為字符狀態(tài)機激勵,使之進(jìn)入非字符輸出狀態(tài)。
(4)發(fā)送空閑線(xiàn)計數器
當字符狀態(tài)機進(jìn)入發(fā)送空閑線(xiàn)數據狀態(tài)時(shí),開(kāi)始工作。當計數到一定值時(shí),輸出信號TX_IDLECOUT_REACH作為字符狀態(tài)機激勵,使之進(jìn)入非空閑線(xiàn)數據計數狀態(tài)。
(5)發(fā)送數據流的形成
在TXBUF2SHIFT的高電平脈沖作用下,在SCI_TXBUF中待發(fā)送數據,經(jīng)過(guò)選擇器選擇指定位數的數據送入SCI_TXSHIFT低位,不足的高位清“0”。與此同時(shí),TXWAKE數據也送到WUT寄存器,在地址位模式情況下,由ADDR_IDLE控制在WUT中形成地址位;并由SCI_TXSHIFT數據位、地址位和奇偶方式位三者邏輯或形成奇偶校驗位。
在啟動(dòng)、控制位、計數器溢出等激勵作用下,實(shí)現發(fā)送字符狀態(tài)的輸出和轉換。發(fā)送字符狀態(tài)機的激勵有:TXEMPTY(為“0”時(shí)啟動(dòng)TXD發(fā)送)、ADDR_IDLE(地址/空閑線(xiàn)模式選擇位)、PARENA(奇偶校驗使能位)、STOPBIT(選擇1或2個(gè)停止位)、WUT(發(fā)送空閑位數據允許位)、TX_CHARCOUT_REACH(發(fā)送字符數目已夠位)、TX_IDLECOUT_REACH(發(fā)送空閑數目已夠位)。發(fā)送字符狀態(tài)機(見(jiàn)圖3)的狀態(tài)有:1為幀停止位(1位),3為幀第1停止位(2位),5為幀第2停止位(2位),8位幀起始位,9為待機狀態(tài),A為幀數據位,B為空閑線(xiàn)模式起始位,C為幀地址位,E為幀奇偶校驗位,F為空閑線(xiàn)模式停止位,D為空閑線(xiàn)模式計數0~7。
2 SCI數據接收單元
數據接收單元的功能是完成串行數據接收及接收標志位的生成。其結構如圖4所示,接收起始位檢測和接收字符狀態(tài)機如圖5、圖6所示。
接收單元各功能模塊及狀態(tài)轉換說(shuō)明如下。
(1)RXD時(shí)鐘八分頻器
對波特率時(shí)鐘進(jìn)行八分頻,并保持其與所接收串行數據流的字符同步。其輸出兩個(gè)時(shí)鐘脈沖:RXD_CLK_WORK,用于計數、移位等;RXD_CLK_END,為數據流各種方式的停止位前一個(gè)字節時(shí)間段內提供脈沖。
圖4 SCI數字接收單元
是一種三位四狀態(tài)機。其激勵有兩個(gè):RXD_1_VALUE―接收的串行數據流激勵;RXD_END_CHK―一次接收完畢的脈沖激勵。其狀態(tài)有如下幾種(見(jiàn)圖5):0(待機狀態(tài))、1(空狀態(tài))、2(空狀態(tài))、3(發(fā)現“1”到“0”的跳變狀態(tài))、4(輸出時(shí)鐘同步信號)、5(字符接收過(guò)程中輸出RXD_CLK_AYN和RXD_START_DRV)。
(3)字符檢測模塊
主要功能是接收數據流。其在采樣時(shí)鐘驅動(dòng)下數據流通過(guò)三個(gè)寄存器,隨后在RXD_CLK_WORK脈沖作用下,三個(gè)寄存器的數據通過(guò)表決電路,把數據送到接收數據緩沖器RXD_VALUE中,為把數據送到移位寄存器RX_SHIFT做準備。
(4)當前接收字符狀態(tài)機
用來(lái)標識當前所接收的數據是哪一種字符,以及在下一個(gè)RXD_CLK_WORK字符周期將轉換到哪一種狀態(tài),并且根據當前接收字符的狀態(tài),驅動(dòng)其它部件進(jìn)行合適的操作。其激勵有:RXD_START_DRV(RXD起始位有效激勵)、RX_CHAR_REACH(RXD字符接收數目已夠)、CCR3_ADDR_IDLE(地址/空閑線(xiàn)模式選擇)、CCR5_PARENA(奇偶校驗使能)。其狀態(tài)(見(jiàn)圖6)有:0(待機狀態(tài))、1(幀數據位)、2(幀起始位)、3(幀地址位)、4(幀奇偶校驗位)、5(空狀態(tài))、6(幀停止位)。
(5)接收字符計數器
當接收字符狀態(tài)機處于幀數據位階段時(shí),其開(kāi)始計數;當與可編程的數據相同時(shí),輸出RX_CHAR_REACH給接收字符狀態(tài)機。
(6)接收空閑線(xiàn)計數器
當處于待機狀態(tài)時(shí),開(kāi)始計數器,當計數到一定時(shí),輸出一個(gè)脈沖,將RXSP1_RXWAKE置位為1;在下一個(gè)字符即將接收、讀取SCI_RXBUF寄存器或SCI復位的情況下,RXST1_RXWAKE被復位為0。
(7)接收數據移位寄存器(SCI_RXSHIFT)
根據接收字符狀態(tài)機的狀態(tài)接收與檢測的串行數據流,將所接收的正確數據送入SCI_RXBUF并置相應的標志,否則置出錯標志。
(8)BRKDT間斷檢測計數器
當產(chǎn)生RXST4_FE幀錯誤時(shí),開(kāi)始工作。當RXD_VALUE為“1”時(shí),其被復位;當RXD_VALUE為“0”時(shí),表示沒(méi)有數據接收,開(kāi)始計數;當計到一定值時(shí),輸出計數滿(mǎn)信號,此時(shí)間斷檢測標志RXST5_BRKDT被置位。
結語(yǔ)
綜上所述,在各種串行接口IP核設計中,可將其內部單元結構劃分為控制和執行兩大部分。其中,控制邏輯的設計采用以單極或多級狀態(tài)機為核心,并配合其各種激勵單元的結構設計,可以做到結構清晰,并可實(shí)現較復雜的邏輯;執行機構的設計采用以控制邏輯輸出的狀態(tài)為中心,來(lái)設計數據選擇器或數據分配器,可實(shí)現數據流的復雜流向(請見(jiàn)網(wǎng)絡(luò )補充版:www.dpj.com.cn)。
評論