999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于USB的高速串口的設(shè)計與實現(xiàn)

2023-05-29 09:23:52楊兆龍蘇兆兆李瑞祥
電子技術(shù)與軟件工程 2023年7期
關(guān)鍵詞:信號設(shè)計

楊兆龍 蘇兆兆 李瑞祥

(晉中信息學院 山西省晉中市 030800)

在工業(yè)領(lǐng)域,仍然有很多設(shè)備使用串口來通信。但是,速率較高的場景,諸如數(shù)據(jù)采集、等,常常采用USB、以太網(wǎng)等方式進行數(shù)據(jù)傳輸,而此類接口不論是硬件設(shè)計、軟件設(shè)計,都非常復雜,其工作量都極大。而串口設(shè)計簡單,只有收發(fā)兩組線,其通信協(xié)議更是容易實現(xiàn),還具備單比特檢錯能力,可以在較高速率的使用場景替代其他復雜的板間總線。同時,市場上常見的RS-485/422 收發(fā)器,如MAX22507E/MAX22508E,其最高速率可達50Mbps,而市場上能夠買到的串口通信模塊,最高僅能夠達到12Mbps,并沒有能夠?qū)⑹瞻l(fā)器的性能全部發(fā)揮出來。所以,為串口這種使用簡單方便的接口提升速率,擴展其使用場景,發(fā)揮收發(fā)器的潛能,非常必要。

1 總體設(shè)計

市場上常用的芯片串口最高支持的波特率為12Mbps,沒有更高速率的解決方案,故本系統(tǒng)采用FPGA+USB2.0 芯片的方案來實現(xiàn)串口。其結(jié)構(gòu)框圖如圖1 所示。本系統(tǒng)采用MAX22508E 實現(xiàn)RS-422 與UART 協(xié)議的電平轉(zhuǎn)換,采用FT232H 單通道USB2.0-UART/FIFO 芯片將USB2.0 轉(zhuǎn)換為同步FIFO 接口,采用LCMXO2 FPGA 實現(xiàn)UART 接口,并將收發(fā)數(shù)據(jù)通過同步FIFO 接口與FT232H 相連。

圖1:系統(tǒng)總體設(shè)計

MAX22508E 是一款全雙工的RS422 收發(fā)器,其最高速率支持50Mbps。可應(yīng)用于現(xiàn)場總線、工業(yè)控制等場景。本設(shè)計最高速率為40Mbps,在其支持范圍內(nèi)。

FT232H 是一款功能非常強大的協(xié)議轉(zhuǎn)換芯片,其可實現(xiàn)USB2.0 與UART、IIC、SPI、FIFO 接口等協(xié)議的轉(zhuǎn)換。其驅(qū)動可支持從Windows XP 到Windows 10的所有版本系統(tǒng),同時支持Mac OS 和Linux,具有很好的兼容性。

基于成本考慮,本系統(tǒng)FPGA 采用Lattice 的LCMXO2-640。該FPGA 具備小規(guī)模、低成本、低功耗、單一供電電壓3.3V、內(nèi)嵌flash 和時鐘的特點,可以極大地簡化設(shè)計電路,降低電路板的復雜程度。

上位機采用C#編寫,通過調(diào)用FT232H 提供的接口函數(shù),完成FT232H 的配置、FPGA 的配置、以及數(shù)據(jù)的收發(fā)。

2 FPGA設(shè)計

本設(shè)計采用的FPGA 具有640 個LUT,18kbit 的sram,1 個鎖相環(huán),40 個通用引腳,最大工作頻率133MHz,能夠滿足本系統(tǒng)的需求。本設(shè)計采用外部晶振,工作頻率為120MHz。

FPGA 總體結(jié)構(gòu)如圖2 所示,共分三部分介紹。

圖2:FPGA 總體結(jié)構(gòu)

2.1 同步FIFO接口

由于實現(xiàn)的串口收發(fā)的最高速率均是40Mbps,所以FT232H 與FPGA 之間的通信帶寬應(yīng)大于80Mbps,為了實現(xiàn)該通信帶寬,二者之間通信采用同步FIFO 接口,其為8 位的同步并行口,在輔以控制信號,其時鐘頻率為60MHz,能夠?qū)崿F(xiàn)最大480Mbps 的通信速率。

讀過程:CLK 為時鐘信號,由FT232H 輸出。RXF 為代表FT232H 中發(fā)送緩存的非空信號,低電平有效,由FT232H 輸出。當RXF 信號由高拉低時,代表FT232H 中發(fā)送緩存中有數(shù)據(jù)可以讀,而RXF 信號由高拉低時,代表FT232H 中發(fā)送緩存變空,沒有數(shù)據(jù)可以被讀。OE 為輸出使能信號,由FPGA 輸出,低電平有效。RD 為讀使能信號,由FPGA 輸出,低電平有效。當FPGA 收到RXF 拉低后,若FPGA 中的發(fā)送緩存也非滿,則拉低OE 信號,然后拉低RD 信號,開始由FT232H 向FPGA 傳輸數(shù)據(jù);若FT232H 中發(fā)送緩存非空和FPGA 中的發(fā)送緩存也非滿有一條不滿足時,則停止傳輸。

寫過程:TXE 代表FT232H 中接收緩存的非滿信號,低電平有效,有FT232H 輸出。當TXE 由高拉低時,代表FT232H 的接收緩存中可以寫入數(shù)據(jù),而當TXE由低拉高時,代表FT232H 的接收緩存不能夠再寫入數(shù)據(jù)。WR 為寫使能信號,由FPGA 輸出,低電平有效。當FPGA 收到TXE 拉低后,若此時FPGA 中的接收緩存也非空,則拉低WR 信號,開始由FPGA 向FT232H傳輸數(shù)據(jù);若FT232H 的接收緩存非滿和FPGA 的接收緩存非空有一條不滿足時,則停止傳輸。

為了保證收發(fā)兩個方向的帶寬均衡,設(shè)定最大突發(fā)為16 字節(jié)。當讀了16 字節(jié)或者緩存不滿足要求,必須切換到寫過程;當寫了16 字節(jié)或者緩存不滿足寫的要求,必須切換到讀過程。

管腳cfg_or_data 切換當前是進行配置或是數(shù)據(jù)傳輸。默認狀態(tài)為低電平,當其為高電平并且收到特殊的幀格式時,為FPGA 寄存器的配置。配置幀為6 字節(jié),包括4 字節(jié)的幀定位和兩個字節(jié)的配置數(shù)據(jù),其格式為:0xF00FF00F+baud_rate+mode。FPGA 收到配置幀后,將baud_rate 和mode 寫入到對應(yīng)的寄存器中。

2.2 串口

為了保證串口接收的正確率,應(yīng)保證采樣時鐘遠高于當前波特率,而太高的采樣時鐘,則對FPGA 的新能提出了更高的要求。為了在保證正確率的前提下控制成本,本設(shè)計采用三倍于波特率的時鐘進行采樣。

FPGA 的系統(tǒng)時鐘為120MHz,在一些波特率下,能夠經(jīng)過分頻正好得到三倍于波特率的時鐘(在接收側(cè)為與波特率相等的時鐘,下同)。而在一些波特率下,無法得到三倍于波特率的時鐘。這時,不得不采用小數(shù)分頻。比如:當工作波特率是256000bps 時,其采樣頻率為768000Hz,其分頻比為156.25,在本設(shè)計中,采用3 個156 分頻加1 個157 分頻來達到156.25 分頻,會在小范圍內(nèi)帶來一點抖動,但是該抖動不會累加產(chǎn)生頻偏,保證了波特率的精度。表1 為采樣時鐘的分頻比例:

表1:時鐘分頻比

當發(fā)送數(shù)據(jù)時,從發(fā)送緩存中讀取數(shù)據(jù),然后按照mode 寄存器中的配置,組好每次發(fā)送的數(shù)據(jù),如發(fā)送數(shù)據(jù)為0x33,而mode 配置為0x10 時,那么發(fā)送數(shù)據(jù)幀根據(jù)配置,取0x33 的第5bits,即0b1001,需要增加1 位的起始位0,增加1 位的停止位1,其奇偶校驗為奇校驗,結(jié)果為1,所以最終發(fā)送的數(shù)據(jù)幀為0b01001111,然后將該數(shù)據(jù)幀按照發(fā)送時鐘一位一位地發(fā)送出去。

接收數(shù)據(jù),這是本設(shè)計的重點,也是容易出錯的地方。以接收數(shù)據(jù)的上升沿和下降沿為依據(jù),將cnt 信號清0,那么下一個周期的信號一定是正確的采樣點,即cnt 為1 的位置采樣。因為本設(shè)計為3 倍采樣頻率,所以采用0、1、2 三個數(shù)循環(huán)計數(shù),在所有cnt 為1 的位置進行采樣。而在上升沿和下降沿都將cnt 清零,也能保證積累的波特率誤差不會造成大面積的誤碼。這時接收到的數(shù)據(jù)變成了比特流,需要對其進行幀定位。依據(jù)數(shù)據(jù)位寬、有無奇偶校驗位可得到數(shù)據(jù)位寬,然后根據(jù)起始位為低電平,停止位為高電平,判斷出幀邊界。該方法不僅可用于間斷數(shù)據(jù),還可以用于大帶寬下的連續(xù)數(shù)據(jù)。

2.3 寄存器

本設(shè)計有兩個配置寄存器,分別是baud_rate 和mode。寄存器baud_rate,共8bits,低4bits 有效,0-15分別代表表1 中提到的16 種速率。寄存器mode 用來配置串口工作模式,共8bits,低5bits 有效,其中,[1:0]用來控制發(fā)送數(shù)據(jù)的位寬,用來適配數(shù)據(jù)不是整字節(jié)的使用場景;[2:2]用來配置停止位的寬度,配置為0 代表停止位為1bit,配置為1 代表停止位為2bits;[3:3]用來配置奇校驗還是偶校驗,配置為0 代表奇校驗,配置為1 代表偶校驗;[4:4]用來配置是否使能奇偶校驗,0 代表不使能,1 代表使能;[5:5]為測試功能,在串口處的換回使能,0 代表環(huán)回不開啟,1 代表環(huán)回開啟。以上這些配置使得本系統(tǒng)的可用性更好,擴大了本系統(tǒng)的使用范圍。寄存器說明如表2 所示。

表2:寄存器說明

3 上位機設(shè)計

安裝FT232H 驅(qū)動后,上位機調(diào)用驅(qū)動提供的接口函數(shù)來配置、控制FT232H,以及接收發(fā)送數(shù)據(jù)。

上位機需要具備使用簡單、與各個不同版本的windows 系統(tǒng)都具有較好的兼容性的特點。所以本上位機采用C#為上位機的設(shè)計語言,在上位機的布局和功能構(gòu)成上參考通用的串口工具。具備波特率、奇偶校驗、停止位、數(shù)據(jù)位寬的配置。

固件配置:利用官方提供的EEPROM 配置軟件,配置本系統(tǒng)獨有的VID 及PID,將FT232H 配置為“245 FIFO 模式”,實現(xiàn)同步FIFO 接口;同時,配置31 號管腳為通用IO,用于實現(xiàn)cfg_or_data 的控制。

初始化:首先效用FT_Open 函數(shù),打開設(shè)備。然后調(diào)用函數(shù)FT_SetLatencyTimer,配置延遲時間,當接收緩存的超時后,用來沖刷到所有剩余的數(shù)據(jù),可配置為2ms 到255ms,本系統(tǒng)配置為16ms。調(diào)用函數(shù)FT_SetUSBParameters,配置USB 的緩沖大小,該值只能配置為64Bytes 的整數(shù)倍,本系統(tǒng)采用默認值4Kbytes。

串口配置:開啟軟件后,通過函數(shù)FT_GetVIDPID獲取器件的VID 及PID,確認是本系統(tǒng),當串口關(guān)閉時,上位機調(diào)用FT_SetBit 函數(shù),將31 號管腳配置為高電平,即配置沒事,每修改一次配置(包括波特率、停止位、奇偶校驗、數(shù)據(jù)位寬),上位機都會向FPGA 發(fā)送一個配置幀,將當前上位機的配置同步給FPGA。

數(shù)據(jù)傳輸:當串口打開時,串口的配置將不能再修改。此時上位機調(diào)用FT_ResetBit 函數(shù),將31 號管腳配置為低電平,也就是傳輸模式,此時,點擊發(fā)送,上位機就會讀取發(fā)送數(shù)據(jù)文本框中的數(shù)據(jù),然后進行數(shù)據(jù)類型轉(zhuǎn)換,并調(diào)用FT_GetStatus 函數(shù),查看發(fā)送緩存的剩余空間,按照甚于空間的大小,調(diào)用FT_Write 函數(shù),將該數(shù)據(jù)發(fā)送出去。上位機創(chuàng)建一個監(jiān)聽進程,每隔100ms,上位機會調(diào)用FT_GetStatus 函數(shù),讀取接收緩存的字節(jié)數(shù),當接收緩存的字節(jié)數(shù)非0 時,調(diào)用函數(shù)FT_Read,讀取接收數(shù)據(jù),并將讀回的數(shù)據(jù)進行格式轉(zhuǎn)換,轉(zhuǎn)換為十六進制,并顯示再接收數(shù)據(jù)文本框中。

4 測試

誤碼率測試。測試環(huán)境:40MHz 波特率,收發(fā)器端雙絞線環(huán)回,發(fā)送1MByte 文件,接收完成后,對比接收文件和發(fā)送文件,得到誤碼率。經(jīng)過測試,在40MHz 波特率下,誤碼率0%。

5 總結(jié)

本設(shè)計完成了一個基于USB 的高速串口,系統(tǒng)采用FT232H 芯片作為USB 芯片,實現(xiàn)了USB 與同步并行接口的轉(zhuǎn)換,采用FPGA 實現(xiàn)串口與同步并行接口的相互轉(zhuǎn)換,并且具備串口基本的模式配置,可通過上位機控制串口接收和發(fā)送數(shù)據(jù)。實驗證明,該系統(tǒng)可以實現(xiàn)40Mbps 的波特率,發(fā)送1MByte 的數(shù)據(jù),誤碼率為0,能夠滿足如較低速數(shù)據(jù)采集等場景的使用。

此外,本設(shè)計通過設(shè)置burst 來提升傳輸效率的同時,能夠均衡收發(fā)兩個方向的帶寬,亦可用于其他設(shè)計中。

猜你喜歡
信號設(shè)計
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
完形填空二則
何為設(shè)計的守護之道?
《豐收的喜悅展示設(shè)計》
流行色(2020年1期)2020-04-28 11:16:38
孩子停止長個的信號
瞞天過海——仿生設(shè)計萌到家
設(shè)計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
基于LabVIEW的力加載信號采集與PID控制
一種基于極大似然估計的信號盲抽取算法
主站蜘蛛池模板: 精品日韩亚洲欧美高清a| 国产精品三级av及在线观看| 麻豆国产在线观看一区二区| 国产丰满大乳无码免费播放 | 亚洲中文字幕在线精品一区| 91网在线| 喷潮白浆直流在线播放| 欧美中文字幕在线二区| 国产精品毛片在线直播完整版| 国产欧美日韩va| 免费一级无码在线网站| 久久先锋资源| 凹凸国产熟女精品视频| 人人91人人澡人人妻人人爽 | 欧美精品aⅴ在线视频| 日韩成人免费网站| 国产亚洲精品资源在线26u| 国产麻豆va精品视频| 国产黄网站在线观看| 免费啪啪网址| 国产精品任我爽爆在线播放6080 | 一级毛片免费高清视频| 一级毛片高清| 国产成人精品一区二区免费看京| 在线无码私拍| 五月婷婷综合网| 91国内外精品自在线播放| 亚洲免费三区| 成人午夜精品一级毛片| 国产成人AV综合久久| 国产午夜小视频| 亚洲男人的天堂在线| 日韩黄色精品| 婷婷亚洲视频| 99青青青精品视频在线| 亚洲中文字幕日产无码2021| 亚洲天堂久久新| 青青草国产精品久久久久| 免费人成又黄又爽的视频网站| 国产在线八区| 黄色免费在线网址| 成人无码区免费视频网站蜜臀| 国产精选小视频在线观看| 日韩欧美中文| 亚洲精品欧美日本中文字幕| 人妻精品全国免费视频| 四虎国产永久在线观看| 亚洲一区二区约美女探花 | 久久中文字幕不卡一二区| 99热这里只有精品免费| 日本精品αv中文字幕| 欧美啪啪视频免码| 五月天综合网亚洲综合天堂网| 国产精品综合久久久| 99视频有精品视频免费观看| 国产丝袜一区二区三区视频免下载| 日韩国产 在线| www.亚洲天堂| 亚洲色图综合在线| 都市激情亚洲综合久久 | 中日韩一区二区三区中文免费视频| 日韩在线视频网站| 国产日韩欧美在线播放| 少妇极品熟妇人妻专区视频| 免费精品一区二区h| 精品成人免费自拍视频| 免费国产福利| 国产乱子伦一区二区=| 囯产av无码片毛片一级| 成人午夜网址| 亚洲综合专区| 亚洲男人的天堂在线| 青青青亚洲精品国产| 国产在线视频导航| 免费jjzz在在线播放国产| 国产爽妇精品| 青青青草国产| 亚洲三级电影在线播放| 亚洲无码熟妇人妻AV在线| 国产成在线观看免费视频| 欧美色视频在线| 久久国产精品娇妻素人|