簡(jiǎn)化UART功能的FPGA實(shí)現(xiàn)
發(fā)布時(shí)間:2008/5/28 0:00:00 訪問(wèn)次數(shù):548
摘 要:提出了一種arm+fpga結(jié)構(gòu)系統(tǒng)中簡(jiǎn)化uart功能的fpga實(shí)現(xiàn)方法,使用了狀態(tài)機(jī)來(lái)描述接收器和發(fā)送器的基本功能,最后分別給出了一個(gè)串行數(shù)據(jù)幀長(zhǎng)度的接收和發(fā)送的仿真結(jié)果。
關(guān)鍵詞:fpga;uart;狀態(tài)機(jī);arm
1 引 言
在arm+fpga系統(tǒng)結(jié)構(gòu)中,實(shí)現(xiàn)基于arm的嵌入式處理器和fpga之間通信最簡(jiǎn)單的方法就是通過(guò)異步串行接口eiars232c。考慮選用集成有uart(universalasynchronousreceiver/transmitter)控制器的嵌入式處理器(例如,ep7312),那么嵌入式處理器一側(cè)就具有了利用異步串行接口收、發(fā)通信的能力。然而,fpga內(nèi)部并不擁有cpu控制單元,無(wú)法處理由uart控制器產(chǎn)生的中斷,所以fpga一側(cè)不能利用現(xiàn)成的uart控制器構(gòu)成異步串行接口,必須將uart控制器的功能集成到fpga內(nèi)部。
同一個(gè)系統(tǒng)中的arm與fpga之間屬于短距離通信連接,他們之間的異步串行通信并不需要完整的uart功能,那些rs232標(biāo)準(zhǔn)中的聯(lián)絡(luò)控制信號(hào)線可以省略,僅僅保留收、發(fā)數(shù)據(jù)線和地線,這樣給uart功能的fpga編程實(shí)現(xiàn)帶來(lái)了極大的省略。嵌入式處理器ep7312帶有2個(gè)支持異步串行通信rs232的16550類型的uart,uart1不僅有tx,rx,而且支持modem控制信號(hào),uart2只有標(biāo)準(zhǔn)的tx,rx以及地信號(hào),剛好能夠利用uart2與fpga實(shí)現(xiàn)通信。圖1是簡(jiǎn)化的異步串行通信連接示意圖。
2 簡(jiǎn)化uart功能的fpga實(shí)現(xiàn)
本文將詳細(xì)地討論簡(jiǎn)化uart功能在fpga中的實(shí)現(xiàn)方法。簡(jiǎn)單回顧一下異步串行通信的數(shù)據(jù)格式。圖2表明在異步傳送中串行發(fā)送一個(gè)數(shù)據(jù)字節(jié)的位定時(shí)關(guān)系(圖中沒(méi)有包括奇偶校驗(yàn)位)。發(fā)送一個(gè)完整的字節(jié)信息,首先是一個(gè)作為起始位的邏輯“0”位,接著是8個(gè)數(shù)據(jù)位,然后是1個(gè)、1+1/2個(gè)或2個(gè)停止位邏輯“1”位,數(shù)據(jù)線空閑時(shí)呈現(xiàn)為高或“1”狀態(tài)。在字符的8位數(shù)據(jù)部分,先發(fā)送數(shù)據(jù)的最低位,最后發(fā)送最高位。每位持續(xù)的時(shí)間是固定的,由發(fā)送器本地時(shí)鐘控制,每秒發(fā)送的數(shù)據(jù)位個(gè)數(shù),即為“波特率”。起始位和停止位起著很重要的作用。顯然,他們標(biāo)志每個(gè)字符的開始和結(jié)束,但更重要的是他們使接收器能把他的局部時(shí)鐘與每個(gè)新開始接收的字符再同步。異步通信沒(méi)有可參照的時(shí)鐘信號(hào),發(fā)送器隨時(shí)都可能發(fā)送數(shù)據(jù),任何時(shí)沿的出現(xiàn)時(shí)間,從而正確地采樣緊接著的10~11位(包括開始位、數(shù)據(jù)位和停止位)。接收器的時(shí)鐘與發(fā)送器的時(shí)鐘不是同一個(gè),因此,接收器采樣點(diǎn)的間隔跟由發(fā)送器時(shí)鐘所確定的位間隔時(shí)間不同,接收器一定不能讓他的相對(duì)時(shí)鐘速度導(dǎo)致采樣錯(cuò)誤。
比較而言,uart發(fā)送器部分發(fā)送串行數(shù)據(jù)過(guò)程的實(shí)現(xiàn)相對(duì)容易,只要對(duì)發(fā)送出去的數(shù)據(jù)電平做持續(xù)時(shí)間的定時(shí)即可。下面先對(duì)uart接收器部分的fpga實(shí)現(xiàn)方法做詳細(xì)的描述。
2.1 uart接收器的fpga實(shí)現(xiàn)
根據(jù)以上的敘述,由于串行數(shù)據(jù)幀與接收時(shí)鐘是異步的,所以接收器功能實(shí)現(xiàn)中的關(guān)鍵是接收器時(shí)鐘與每個(gè)接收字符的同步。一個(gè)有效的方法是接收器采用高速率時(shí)鐘對(duì)串行數(shù)據(jù)進(jìn)行采樣,通常采樣頻率是位時(shí)鐘頻率的整數(shù)倍。理論上倍數(shù)越高接收數(shù)據(jù)各位的分辨率越高,實(shí)際中,一般最大選擇16倍。
接收器應(yīng)該盡可能地在靠近位周期的中心處對(duì)每位采樣。如果接收器能很好地預(yù)測(cè)起始位的開始,那么他可在起始位的下降沿到來(lái)之后,等待半個(gè)位周期再采樣數(shù)據(jù)位。此后,接收器每等待一個(gè)位周期采樣一個(gè)數(shù)據(jù)位,直至收到最后一位為止。倘若接收時(shí)鐘的頻率足夠接近發(fā)送時(shí)鐘,使得最后位能在離該位的精確中心位置半個(gè)周期內(nèi)對(duì)他采樣,以上方案就能正確地工作。這意味著接收時(shí)鐘相對(duì)于發(fā)送時(shí)鐘在10~11個(gè)時(shí)鐘周期內(nèi),其增加和減少應(yīng)小于半個(gè)位的時(shí)間間隔。因此,要求收發(fā)雙方2個(gè)時(shí)鐘的誤差容限在5%以內(nèi)。
本文中接收器的實(shí)現(xiàn)采取5倍速采樣法,也就是接收采樣頻率是串行數(shù)據(jù)位頻率的5倍。圖3是將圖2中的起始位和部分?jǐn)?shù)據(jù)位放大,又把每個(gè)信息位分成5等份,每等份的時(shí)間寬度設(shè)為ts。以5倍頻對(duì)信息位進(jìn)行采樣時(shí),每個(gè)信息位都將可能被采樣到5次。當(dāng)處于空閑狀態(tài)并檢測(cè)起始位時(shí),最早檢測(cè)到起始位低電平的時(shí)刻必將落在s0陰影區(qū),每次具體的采樣點(diǎn)會(huì)在s0陰影區(qū)隨機(jī)變化。檢測(cè)到起始位低電平后,間隔7×ts時(shí)間,正好是第1位數(shù)據(jù)位的中間1/5處(圖3中d2陰影區(qū))。此后的數(shù)據(jù)位和停止位的采樣間隔都是5×ts,所有采樣點(diǎn)均落在碼元的中間1/5處,采樣數(shù)據(jù)最可靠。采樣時(shí)鐘的產(chǎn)生由計(jì)數(shù)器控制,計(jì)數(shù)器時(shí)鐘為位時(shí)鐘5倍頻。
為了避免噪聲引起的起始位檢測(cè)錯(cuò)誤,要對(duì)起始位采樣兩次。從空閑狀態(tài),第1次采樣為低電平后,間隔2個(gè)ts再采樣一次,如果仍為低電平,才認(rèn)定為有效的起始位;如果為高電平,再回到空閑狀態(tài)等待重新同步。
另外,在采樣停止位的時(shí)候也可以加入保護(hù)機(jī)制:當(dāng)停止位采樣值為高電平時(shí),認(rèn)為同步和數(shù)據(jù)正確,裝人數(shù)據(jù)寄存器,否則認(rèn)為同步或傳輸錯(cuò)誤,此次采樣的字符作廢,將其舍棄。簡(jiǎn)化的uart功能框圖如圖4所示。ep7312所帶的uart控制器16550中,fifo的深度為16b
摘 要:提出了一種arm+fpga結(jié)構(gòu)系統(tǒng)中簡(jiǎn)化uart功能的fpga實(shí)現(xiàn)方法,使用了狀態(tài)機(jī)來(lái)描述接收器和發(fā)送器的基本功能,最后分別給出了一個(gè)串行數(shù)據(jù)幀長(zhǎng)度的接收和發(fā)送的仿真結(jié)果。
關(guān)鍵詞:fpga;uart;狀態(tài)機(jī);arm
1 引 言
在arm+fpga系統(tǒng)結(jié)構(gòu)中,實(shí)現(xiàn)基于arm的嵌入式處理器和fpga之間通信最簡(jiǎn)單的方法就是通過(guò)異步串行接口eiars232c。考慮選用集成有uart(universalasynchronousreceiver/transmitter)控制器的嵌入式處理器(例如,ep7312),那么嵌入式處理器一側(cè)就具有了利用異步串行接口收、發(fā)通信的能力。然而,fpga內(nèi)部并不擁有cpu控制單元,無(wú)法處理由uart控制器產(chǎn)生的中斷,所以fpga一側(cè)不能利用現(xiàn)成的uart控制器構(gòu)成異步串行接口,必須將uart控制器的功能集成到fpga內(nèi)部。
同一個(gè)系統(tǒng)中的arm與fpga之間屬于短距離通信連接,他們之間的異步串行通信并不需要完整的uart功能,那些rs232標(biāo)準(zhǔn)中的聯(lián)絡(luò)控制信號(hào)線可以省略,僅僅保留收、發(fā)數(shù)據(jù)線和地線,這樣給uart功能的fpga編程實(shí)現(xiàn)帶來(lái)了極大的省略。嵌入式處理器ep7312帶有2個(gè)支持異步串行通信rs232的16550類型的uart,uart1不僅有tx,rx,而且支持modem控制信號(hào),uart2只有標(biāo)準(zhǔn)的tx,rx以及地信號(hào),剛好能夠利用uart2與fpga實(shí)現(xiàn)通信。圖1是簡(jiǎn)化的異步串行通信連接示意圖。
2 簡(jiǎn)化uart功能的fpga實(shí)現(xiàn)
本文將詳細(xì)地討論簡(jiǎn)化uart功能在fpga中的實(shí)現(xiàn)方法。簡(jiǎn)單回顧一下異步串行通信的數(shù)據(jù)格式。圖2表明在異步傳送中串行發(fā)送一個(gè)數(shù)據(jù)字節(jié)的位定時(shí)關(guān)系(圖中沒(méi)有包括奇偶校驗(yàn)位)。發(fā)送一個(gè)完整的字節(jié)信息,首先是一個(gè)作為起始位的邏輯“0”位,接著是8個(gè)數(shù)據(jù)位,然后是1個(gè)、1+1/2個(gè)或2個(gè)停止位邏輯“1”位,數(shù)據(jù)線空閑時(shí)呈現(xiàn)為高或“1”狀態(tài)。在字符的8位數(shù)據(jù)部分,先發(fā)送數(shù)據(jù)的最低位,最后發(fā)送最高位。每位持續(xù)的時(shí)間是固定的,由發(fā)送器本地時(shí)鐘控制,每秒發(fā)送的數(shù)據(jù)位個(gè)數(shù),即為“波特率”。起始位和停止位起著很重要的作用。顯然,他們標(biāo)志每個(gè)字符的開始和結(jié)束,但更重要的是他們使接收器能把他的局部時(shí)鐘與每個(gè)新開始接收的字符再同步。異步通信沒(méi)有可參照的時(shí)鐘信號(hào),發(fā)送器隨時(shí)都可能發(fā)送數(shù)據(jù),任何時(shí)沿的出現(xiàn)時(shí)間,從而正確地采樣緊接著的10~11位(包括開始位、數(shù)據(jù)位和停止位)。接收器的時(shí)鐘與發(fā)送器的時(shí)鐘不是同一個(gè),因此,接收器采樣點(diǎn)的間隔跟由發(fā)送器時(shí)鐘所確定的位間隔時(shí)間不同,接收器一定不能讓他的相對(duì)時(shí)鐘速度導(dǎo)致采樣錯(cuò)誤。
比較而言,uart發(fā)送器部分發(fā)送串行數(shù)據(jù)過(guò)程的實(shí)現(xiàn)相對(duì)容易,只要對(duì)發(fā)送出去的數(shù)據(jù)電平做持續(xù)時(shí)間的定時(shí)即可。下面先對(duì)uart接收器部分的fpga實(shí)現(xiàn)方法做詳細(xì)的描述。
2.1 uart接收器的fpga實(shí)現(xiàn)
根據(jù)以上的敘述,由于串行數(shù)據(jù)幀與接收時(shí)鐘是異步的,所以接收器功能實(shí)現(xiàn)中的關(guān)鍵是接收器時(shí)鐘與每個(gè)接收字符的同步。一個(gè)有效的方法是接收器采用高速率時(shí)鐘對(duì)串行數(shù)據(jù)進(jìn)行采樣,通常采樣頻率是位時(shí)鐘頻率的整數(shù)倍。理論上倍數(shù)越高接收數(shù)據(jù)各位的分辨率越高,實(shí)際中,一般最大選擇16倍。
接收器應(yīng)該盡可能地在靠近位周期的中心處對(duì)每位采樣。如果接收器能很好地預(yù)測(cè)起始位的開始,那么他可在起始位的下降沿到來(lái)之后,等待半個(gè)位周期再采樣數(shù)據(jù)位。此后,接收器每等待一個(gè)位周期采樣一個(gè)數(shù)據(jù)位,直至收到最后一位為止。倘若接收時(shí)鐘的頻率足夠接近發(fā)送時(shí)鐘,使得最后位能在離該位的精確中心位置半個(gè)周期內(nèi)對(duì)他采樣,以上方案就能正確地工作。這意味著接收時(shí)鐘相對(duì)于發(fā)送時(shí)鐘在10~11個(gè)時(shí)鐘周期內(nèi),其增加和減少應(yīng)小于半個(gè)位的時(shí)間間隔。因此,要求收發(fā)雙方2個(gè)時(shí)鐘的誤差容限在5%以內(nèi)。
本文中接收器的實(shí)現(xiàn)采取5倍速采樣法,也就是接收采樣頻率是串行數(shù)據(jù)位頻率的5倍。圖3是將圖2中的起始位和部分?jǐn)?shù)據(jù)位放大,又把每個(gè)信息位分成5等份,每等份的時(shí)間寬度設(shè)為ts。以5倍頻對(duì)信息位進(jìn)行采樣時(shí),每個(gè)信息位都將可能被采樣到5次。當(dāng)處于空閑狀態(tài)并檢測(cè)起始位時(shí),最早檢測(cè)到起始位低電平的時(shí)刻必將落在s0陰影區(qū),每次具體的采樣點(diǎn)會(huì)在s0陰影區(qū)隨機(jī)變化。檢測(cè)到起始位低電平后,間隔7×ts時(shí)間,正好是第1位數(shù)據(jù)位的中間1/5處(圖3中d2陰影區(qū))。此后的數(shù)據(jù)位和停止位的采樣間隔都是5×ts,所有采樣點(diǎn)均落在碼元的中間1/5處,采樣數(shù)據(jù)最可靠。采樣時(shí)鐘的產(chǎn)生由計(jì)數(shù)器控制,計(jì)數(shù)器時(shí)鐘為位時(shí)鐘5倍頻!
為了避免噪聲引起的起始位檢測(cè)錯(cuò)誤,要對(duì)起始位采樣兩次。從空閑狀態(tài),第1次采樣為低電平后,間隔2個(gè)ts再采樣一次,如果仍為低電平,才認(rèn)定為有效的起始位;如果為高電平,再回到空閑狀態(tài)等待重新同步。
另外,在采樣停止位的時(shí)候也可以加入保護(hù)機(jī)制:當(dāng)停止位采樣值為高電平時(shí),認(rèn)為同步和數(shù)據(jù)正確,裝人數(shù)據(jù)寄存器,否則認(rèn)為同步或傳輸錯(cuò)誤,此次采樣的字符作廢,將其舍棄。簡(jiǎn)化的uart功能框圖如圖4所示。ep7312所帶的uart控制器16550中,fifo的深度為16b
熱門點(diǎn)擊
- 如何用萬(wàn)用表測(cè)試DC/DC源模塊的好壞
- 使用E型鐵心的小型電源變壓器的設(shè)計(jì)
- 降壓式DC/DC變換器基本工作原理
- 基于DDS+PLL技術(shù)的高頻時(shí)鐘發(fā)生器
- 無(wú)線座機(jī)電話充電電池監(jiān)測(cè)和自動(dòng)充電器設(shè)計(jì)
- 三菱變頻器在經(jīng)編機(jī)上的實(shí)際應(yīng)用
- 升壓式DC/DC變換器基本工作原理
- 閥控式鉛酸蓄電池干涸失效原因分析
- L6565N構(gòu)成的碟機(jī)開關(guān)電源電路原理分析
- Intersil 推出低壓降穩(wěn)壓器SL900
推薦技術(shù)資料
- Seeed Studio
- Seeed Studio紿我們的印象總是和繪畫脫離不了... [詳細(xì)]
- 高頻、高效音頻功放IC模塊
- 8英寸180納米GaN固態(tài)變壓器(SST)
- 新一代光纖通信光收發(fā)器接收器芯
- 第三代半導(dǎo)體SiC(碳化硅)和
- 全球半導(dǎo)體產(chǎn)業(yè)終端市場(chǎng)需求及技
- GaN與SiC材料單片集成技術(shù)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究