當(dāng)前位置:首頁 > EDA > 電子設(shè)計(jì)自動(dòng)化
[導(dǎo)讀]1 前言 隨著FPGA的飛速發(fā)展與其在現(xiàn)代電子設(shè)計(jì)中的廣泛應(yīng)用,越來越多的實(shí)驗(yàn)和設(shè)計(jì)中會運(yùn)用FPGA與RS232通信。與此同時(shí), FPGA具有功能強(qiáng)大、開發(fā)過程投資小、周期短、可反復(fù)編程等特點(diǎn)。筆者在FPGA芯片上集成了串行

1 前言
隨著FPGA的飛速發(fā)展與其在現(xiàn)代電子設(shè)計(jì)中的廣泛應(yīng)用,越來越多的實(shí)驗(yàn)和設(shè)計(jì)中會運(yùn)用FPGA與RS232通信。與此同時(shí), FPGA具有功能強(qiáng)大、開發(fā)過程投資小、周期短、可反復(fù)編程等特點(diǎn)。筆者在FPGA芯片上集成了串行接收功能模塊,從而簡化了電路、縮小了電路板的體積、提高了可靠性。本文主要介紹圍繞FPGA所設(shè)計(jì)的符合 RS232標(biāo)準(zhǔn)的串行接收模塊
2 異步串行通信原理
串行通信分為兩種類型:同步通信方式和異步通信方式。本設(shè)計(jì)采用的是異步通信方式,其的特點(diǎn)是:通信的發(fā)送方和接收方各自有獨(dú)立的時(shí)鐘,傳輸?shù)乃俾视呻p方約定。國際上規(guī)定的一個(gè)串行通信波特率標(biāo)準(zhǔn)系列是:110、300、600、1200、1800、2400、4800、9600、 19200,單位是 bps。本文采用的是 19200bps。
異步傳輸是一個(gè)字符接一個(gè)字符傳輸。一個(gè)字符的信息由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位組成。每一個(gè)字符的傳送靠起始位來同步,字符的前面是一位起始位,用下降沿通知接收方傳輸開始,緊跟著起始位之后的是數(shù)據(jù)位,傳輸時(shí)低位在前、高位在后,字符本身由5~8位數(shù)據(jù)位組成。數(shù)據(jù)位后面是奇偶校驗(yàn)位,昀后是停止位,停止位是高電平,標(biāo)志一個(gè)字符的結(jié)束,并為下一個(gè)字符的開始傳送做準(zhǔn)備。停止位后面是不定長度的空閑位。停止位和空閑位都規(guī)定高電平,這樣可以保證起始位開始處有一個(gè)下降沿,如圖1所示。 3 硬件接口電路原理設(shè)計(jì)
在串行通信中,普遍采用的是 RS232-C接口的標(biāo)準(zhǔn)。 RS232-C接口信號引腳的連接方式規(guī)定了25芯的D型連接器DB-25,本設(shè)計(jì)采用的是一個(gè) 9芯的D型連接器DB-9,并且用昀為簡單常用的三線制接法,即地、接受數(shù)據(jù)和發(fā)送數(shù)據(jù)三腳相連。

500)this.style.width=500;" border="0" />
本設(shè)計(jì)的硬件接口電路圖如圖2所示,由三部分組成: FPGA串口接收模塊、 MAX232和DB-9。FPGA采用的是Xilinx公司的SPARTAN系列的 XC2S50芯片,其封裝為TQ144。 MAXIM公司的MAX232CPE是為滿足EIA/TEA-232E的標(biāo)準(zhǔn)而設(shè)計(jì)的,具有功耗低、波特率高、價(jià)格低等優(yōu)點(diǎn)。工作電源為 +5V,外界電容僅為 luF,為雙組 RS-232收發(fā)器。MAX232有兩個(gè)發(fā)送器,本設(shè)計(jì)只用其中一個(gè)發(fā)送器,另外一個(gè)發(fā)送器的輸入端接地、輸出端懸空。
異步數(shù)據(jù)接收過程可作為一個(gè)整體來實(shí)現(xiàn),數(shù)據(jù)由 DB-9的RxD端輸入,經(jīng)過 MAX232進(jìn)行電平轉(zhuǎn)換由FPGA串口接收模塊的 RxD端進(jìn)入,然后在串口接收模塊內(nèi)部對接收來得數(shù)據(jù)進(jìn)行判斷,并昀終實(shí)現(xiàn)對FPGA輸出信號的控制。

500)this.style.width=500;" border="0" />

4 FPGA接收串行數(shù)據(jù)的軟件設(shè)計(jì)
本方案采用的串行異步通信的幀格式為:1位起始位+5位數(shù)據(jù)位+1位停止位。經(jīng)檢測與分析,如果已經(jīng)確定異步通信的幀格式,那么每個(gè)字符就可以分別用固定的 7位數(shù)據(jù)表示。比如:字符‘ 0’:‘0000011’;字符‘ 1’:‘0100011’。其中第 1位數(shù)據(jù)‘ 0’為起始位,昀后 1位數(shù)據(jù)‘1’為停止位,中間 5位數(shù)據(jù)為數(shù)據(jù)位。例如:用串口調(diào)試助手軟件發(fā)送字符串‘100’,則會在 FPGA的 RxD引腳測得如圖 3的波形。其中, st1,st2,st3表示先后發(fā)送的 3個(gè)字符, t1,t2,t3則表示對每個(gè)字符進(jìn)行檢測時(shí)所經(jīng)過的 3種狀態(tài)。
正如圖3波形所示,接收邏輯首先通過檢測輸入數(shù)據(jù)的下降沿來檢查起始位。然后產(chǎn)生接收時(shí)鐘,利用接收時(shí)鐘來采樣串行輸入數(shù)據(jù)。由于字符‘0’和‘1’在5位數(shù)據(jù)位中的僅第一位有區(qū)別,因此只要準(zhǔn)確地將第一位數(shù)據(jù)檢測出來就可以得出串口調(diào)試助手所發(fā)送的字符串。再利用移位操作,將字符串存儲在緩存器(即另一組可以更新的字符串)中。

 500)this.style.width=500;" border="0" />


至于剩下的4位數(shù)據(jù)位和一位停止位,就可以不隨接收時(shí)鐘采樣。待串口調(diào)試組手發(fā)送的字符串全部存儲之后,一起在該模塊中進(jìn)行判斷,并根據(jù)字符串的不同來控制FPGA不同的輸出。接收時(shí)鐘是根據(jù)數(shù)據(jù)傳輸?shù)牟ㄌ芈十a(chǎn)生的:接收時(shí)鐘= 16×19200Hz。它始于起始位的下降沿,終于第5位數(shù)據(jù)位的上升沿。下面是實(shí)現(xiàn)檢測第1個(gè)字符的VHDL源程序。 


if(clk0'event and clk0='1')then ----外部時(shí)鐘
case state is
when st1=> ----第1 個(gè)字符開始
case tate is
when t1=> ----起始位開始
if(rxd='1')then ----未到下降沿不計(jì)數(shù)
cnt16 <= "0000";
cnt48 <= "000000"; ----所有時(shí)鐘清零
else cnt16 <=cnt16+1; ----下降沿來,起始位計(jì)數(shù)開始
end if;
if(cnt16="1111")then
tate <= t2; ----起始位完,進(jìn)入數(shù)據(jù)位
end if;
when t2=> ----進(jìn)入第1 位數(shù)據(jù)位
if(cnt16="1111")then
cnt16 <= "0000";
else cnt16 <= cnt16+1;
end if;
if(cnt16="0011")then
sdata <= rxd; ----采樣第1 位數(shù)據(jù)位
end if;
if(cnt16="0111")then
if(sdata='0')then
data(0)<='0';
else data(0)<='1'; ----判斷采樣值,如果為0,則發(fā)送字符為0,
反之亦然
end if;
end if;
if(cnt16="1111")then
tate <= t3; ----第1 位數(shù)據(jù)位完,進(jìn)入下一狀態(tài)
end if;
when t3=> ----進(jìn)入第2 位,第3 位和第4 位數(shù)據(jù)狀態(tài)
if(cnt16="1111")then

cnt48 <= "000000";
else cnt48 <= cnt48+1; ----不對剩下的數(shù)據(jù)采樣,直接計(jì)數(shù)
end if;
if(cnt48="101111")then
sdata <='0'; ----采樣位清零
tate <= t1; ----進(jìn)入采集下一字符的準(zhǔn)備狀態(tài)
state <= st2; ----第1 個(gè)字符采集完,進(jìn)入下一字符
end if;
end case;
fdata(0) <= data(0); ----采集完的字符存入緩存區(qū)
…… …… ……

 

對每個(gè)字符的采集過程是相同的。筆者根據(jù)實(shí)際需要只讓計(jì)算機(jī)發(fā)送 3個(gè)二進(jìn)制字符,由此能控制 FPGA的 8種輸出狀態(tài)。在整個(gè) VHDL源程序編寫完之后,用 Modelsim 6.0進(jìn)行仿真,如圖 4。
 

500)this.style.width=500;" border="0" />

鑒于發(fā)送字符與其異步傳輸幀格式的特殊關(guān)系,此仿真中的 rxd用周期為 16×clk0的波形代替,因此就會接收到字符串‘ 111’。串口調(diào)試助手需要每隔一段時(shí)間(大于 1ms)發(fā)送一組字符串,則等待狀態(tài) st4是必須的,它也是接收下一字符的準(zhǔn)備狀態(tài)。緩存區(qū)為 3位空數(shù)組 fdata,它在接收下一字符之前必須清零。
5 結(jié)語
盡管目前串行通信速度慢的特點(diǎn)已經(jīng)越來越明顯,但是因?yàn)槠鋫鬏斁€少且成本低,多數(shù)電子產(chǎn)品開發(fā)中都會繼續(xù)使用串行通信。本文所介紹的串行接收模塊是筆者根據(jù)實(shí)驗(yàn)要求自行設(shè)計(jì),并在實(shí)驗(yàn)中成功地完成了計(jì)算機(jī)對 FPGA的準(zhǔn)確控制。因此,本文也可作為一個(gè)實(shí)例,供開發(fā)者交流。
本文作者創(chuàng)新點(diǎn):計(jì)算機(jī)串口按 ASCII碼發(fā)送“0”和“1”組成的字符串,在 FPGA內(nèi)部只需判斷接收到的數(shù)據(jù)流中的每個(gè)起始位之后的第一位數(shù)據(jù)位,就可昀終得出計(jì)算機(jī)發(fā)送的字符串。此種方法使 FPGA能夠簡便、準(zhǔn)確的識別串口數(shù)據(jù),且可以方便地修改為任何一種異步通信幀格式。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉