專利名稱:一種基于fpga搭建的增強(qiáng)型串口的制作方法
技術(shù)領(lǐng)域:
本實(shí)用新型涉及一種基于FPGA搭建的增強(qiáng)型串口及其工作方法,以FPGA為硬件 基礎(chǔ),用Verilog HDL編寫代碼實(shí)現(xiàn)。
背景技術(shù):
RS232通信時(shí),數(shù)據(jù)以字節(jié)為單位,在接收數(shù)據(jù)時(shí),單片機(jī)、DSP等內(nèi)部集成的硬件 串口具有收完一個(gè)(或多個(gè))字節(jié)置位相應(yīng)標(biāo)志位的功能,當(dāng)數(shù)據(jù)量較大的時(shí)候,主程序需 要頻繁進(jìn)行中斷響應(yīng)或進(jìn)行標(biāo)志位查詢操作,控制接收流程并緩存收到的數(shù)據(jù),這將占用 主程序的時(shí)間以及進(jìn)行流程控制花費(fèi)硬件資源;在發(fā)送數(shù)據(jù)時(shí),需要查詢當(dāng)前串口狀態(tài),進(jìn) 行發(fā)送流程控制,這也將占用自身資源和處理時(shí)間。
實(shí)用新型內(nèi)容本實(shí)用新型一種基于FPGA搭建的增強(qiáng)型串口,包括以下模塊發(fā)送數(shù)據(jù)FIFO模 塊、接收數(shù)據(jù)雙口 RAM模塊、接收緩存模塊、發(fā)送緩存模塊、參數(shù)配置邏輯模塊、接收超時(shí)判 斷邏輯模塊、接收邏輯模塊、發(fā)送邏輯模塊;其特征在于,所述接收數(shù)據(jù)雙口 RAM是采用環(huán) 形存儲(chǔ)器方式存儲(chǔ)數(shù)據(jù),該雙口 RAM的一個(gè)端口只供寫入數(shù)據(jù),即只寫,雙口 RAM的另一個(gè) 端口專供外部控制器讀取數(shù)據(jù),即只讀。本實(shí)用新型的目的是提供一種基于FPGA搭建的增強(qiáng)型串口及其工作方法,以 FPGA為硬件基礎(chǔ),用Verilog HDL編寫代碼實(shí)現(xiàn)?;贔PGA搭建的增強(qiáng)型串口,其特征在于,包括以下模塊發(fā)送數(shù)據(jù)FIFO模塊、接 收數(shù)據(jù)雙口 RAM模塊、接收緩存模塊、發(fā)送緩存模塊、參數(shù)配置邏輯模塊、接收超時(shí)判斷邏 輯模塊、接收邏輯模塊、發(fā)送邏輯模塊。本工作方法,其步驟為(1)參數(shù)配置步驟工作之前,需要由外部控制器對(duì)所述的參數(shù)配置邏輯模塊寫 入?yún)?shù)配置數(shù)據(jù),該參數(shù)配置數(shù)據(jù)包括波特率、數(shù)據(jù)長(zhǎng)度、校驗(yàn)方式、停止位長(zhǎng)度等參數(shù);(2)接收數(shù)據(jù)步驟a 當(dāng)數(shù)據(jù)到來時(shí),所述基于FPGA搭建的增強(qiáng)型串口檢測(cè)到起始 位則立即啟動(dòng)所述的接收邏輯模塊,根據(jù)波特率設(shè)置在每比特?cái)?shù)據(jù)的中間位置進(jìn)行采樣, 同時(shí)啟動(dòng)所述的接收超時(shí)判斷邏輯模塊,以檢測(cè)本次數(shù)據(jù)流是否接收完畢需要進(jìn)行中斷;接收數(shù)據(jù)步驟b 當(dāng)接收完畢一個(gè)字節(jié)的停止位時(shí),將由所述的接收緩存模塊將 收到的數(shù)據(jù)存入所述的接收數(shù)據(jù)雙口 RAM模塊,同時(shí)記錄下本次數(shù)據(jù)流的第一個(gè)字節(jié)的存 儲(chǔ)地址,在這個(gè)過程中,如果一定時(shí)間內(nèi)未接收到任何數(shù)據(jù)則判定本次接收完畢,這時(shí)將產(chǎn) 生中斷,通知前述外部控制器讀取數(shù)據(jù)進(jìn)行處理,同時(shí)所述的接收數(shù)據(jù)雙口 RAM模塊采用 環(huán)形存儲(chǔ)器方式存儲(chǔ)數(shù)據(jù),該雙口 RAM模塊的一個(gè)端口只寫入數(shù)據(jù),該雙口 RAM模塊的另一 個(gè)端口供前述外部控制器讀取數(shù)據(jù)即只讀,而前述外部控制器以根據(jù)每次數(shù)據(jù)流第一個(gè)數(shù) 據(jù)的存儲(chǔ)地址進(jìn)行數(shù)據(jù)讀取和處理。(3)發(fā)送數(shù)據(jù)步驟當(dāng)需要發(fā)送數(shù)據(jù)時(shí),前述外部控制器將需要發(fā)送的所有數(shù)據(jù)依次寫入所述的發(fā)送數(shù)據(jù)FIFO模塊中,實(shí)時(shí)判定該FIFO模塊是否非空,若該FIFO模塊內(nèi) 有數(shù)據(jù)則立即取出數(shù)據(jù)進(jìn)行發(fā)送,由前述外部控制器寫入數(shù)據(jù)到所述的發(fā)送數(shù)據(jù)FIFO模 塊,同時(shí)從該FIFO模塊中取出數(shù)據(jù)進(jìn)行發(fā)送。系統(tǒng)框圖如圖1所示在工作之前,需要由外部控制器對(duì)本設(shè)計(jì)進(jìn)行參數(shù)配置,配置的過程非常簡(jiǎn)單,只 需要向本設(shè)計(jì)的“參數(shù)配置邏輯”模塊寫入?yún)?shù)配置數(shù)據(jù),以確定波特率、數(shù)據(jù)長(zhǎng)度、校驗(yàn) 方式、停止位長(zhǎng)度等參數(shù),如果未進(jìn)行配置則本設(shè)計(jì)將按一個(gè)默認(rèn)波特率(可配置)進(jìn)行數(shù) 據(jù)收發(fā),配置完畢后,即可開始進(jìn)行數(shù)據(jù)收發(fā)通信。RS232信號(hào)經(jīng)過接口芯片轉(zhuǎn)換為TTL電平后的信號(hào)格式如圖2所示(以8bits數(shù)據(jù)位為例)本設(shè)計(jì)工作時(shí)分兩大功能模塊接收數(shù)據(jù)和發(fā)送數(shù)據(jù)。接收數(shù)據(jù)的流程圖如圖3所示發(fā)送數(shù)據(jù)的流程圖如圖4所示綜上所述,由于采用了上述技術(shù)方案,本實(shí)用新型的有益效果是相對(duì)現(xiàn)有硬件串 口,本設(shè)計(jì)具有如下優(yōu)點(diǎn) 接收發(fā)送數(shù)據(jù)全自動(dòng),無需主程序進(jìn)行干預(yù),將主程序從繁瑣的中斷和查詢操 作中解放出來; 收發(fā)數(shù)據(jù)的緩存大小可按需要進(jìn)行配置 參數(shù)配置靈活簡(jiǎn)單,波特率控制非常精確,能實(shí)現(xiàn)特殊波特率,且波特率切換速 度極快 移植性和擴(kuò)展性強(qiáng),操作簡(jiǎn)單本實(shí)用新型創(chuàng)造設(shè)計(jì)可以廣泛應(yīng)用于使用RS232接口的通信中,特別是以下系統(tǒng) 中將體現(xiàn)出本設(shè)計(jì)的巨大優(yōu)勢(shì) 通信的數(shù)據(jù)量特別大的系統(tǒng)中; 通信特別頻繁的系統(tǒng)中; 對(duì)實(shí)時(shí)性要求較高的系統(tǒng)中; 需要擴(kuò)展多個(gè)串口的系統(tǒng)中; 通信的波特率較高、波特率較特殊、需要波特率切換的系統(tǒng)中;
本實(shí)用新型將通過例子并參照附圖的方式說明,其中圖1是系統(tǒng)框圖;圖2是RS232信號(hào)格式;圖3是接收數(shù)據(jù)的流程圖;圖4是發(fā)送數(shù)據(jù)的流程具體實(shí)施方式
本說明書中公開的所有特征,或公開的所有方法或過程中的步驟,除了互相排斥 的特征和/或步驟以外,均可以以任何方式組合。[0035]本說明書(包括任何附加權(quán)利要求、摘要和附圖)中公開的任一特征,除非特別敘 述,均可被其他等效或具有類似目的的替代特征加以替換。即,除非特別敘述,每個(gè)特征只 是一系列等效或類似特征中的一個(gè)例子而已。進(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候,先發(fā)送起始位,再發(fā)送數(shù)據(jù)位,最后是停止位。接收數(shù)據(jù)當(dāng)數(shù)據(jù)到來時(shí),本設(shè)計(jì)檢測(cè)到起始位則立即啟動(dòng)接收邏輯,根據(jù)波特 率設(shè)置在每bit數(shù)據(jù)的中間位置進(jìn)行采樣,同時(shí)啟動(dòng)“接收超時(shí)判斷邏輯”模塊,以檢測(cè)本 次數(shù)據(jù)流是否接收完畢需要進(jìn)行中斷,當(dāng)接收完畢一個(gè)字節(jié)的停止位時(shí),將由“接收緩存” 模塊將收到的數(shù)據(jù)存入“接收數(shù)據(jù)雙口 RAM”,同時(shí)記錄下本次數(shù)據(jù)流的第一個(gè)字節(jié)的存儲(chǔ) 地址,在這個(gè)過程中,本設(shè)計(jì)不需要外部控制器進(jìn)行控制,如果一定時(shí)間內(nèi)(時(shí)間長(zhǎng)度可配 置,如Sbits的時(shí)間)未接收到任何數(shù)據(jù)則判定本次接收完畢,這時(shí)將產(chǎn)生中斷,通知外部 控制器讀取數(shù)據(jù)進(jìn)行處理,而不必每接收到1個(gè)字節(jié)進(jìn)行中斷,避免了主程序被頻繁中 斷,同時(shí)“接收數(shù)據(jù)雙口 RAM”采用環(huán)形存儲(chǔ)器方式存儲(chǔ)數(shù)據(jù),雙口 RAM的一個(gè)端口只供本設(shè) 計(jì)寫入數(shù)據(jù),即只寫,雙口 RAM的另一個(gè)端口專供外部控制器讀取數(shù)據(jù),即只讀,當(dāng)數(shù)據(jù)量 特別大或者接收數(shù)據(jù)流特別頻繁的情況下,可以有效的緩存數(shù)據(jù),不會(huì)將先前收到的數(shù)據(jù) 覆蓋,而外部控制器可以根據(jù)每次數(shù)據(jù)流第一個(gè)數(shù)據(jù)的存儲(chǔ)地址進(jìn)行數(shù)據(jù)讀取和處理。發(fā)送數(shù)據(jù)當(dāng)需要發(fā)送數(shù)據(jù)時(shí),外部控制器將需要發(fā)送的所有數(shù)據(jù)依次寫入本設(shè) 計(jì)的“發(fā)送數(shù)據(jù)FIFO”中,本設(shè)計(jì)實(shí)時(shí)判定FIFO是否非空,若FIFO內(nèi)有數(shù)據(jù)則立即取出數(shù) 據(jù)進(jìn)行發(fā)送,可以一邊由外部控制器寫入數(shù)據(jù)到“發(fā)送數(shù)據(jù)FIFO”,一邊由本設(shè)計(jì)從FIFO中 取出數(shù)據(jù)進(jìn)行發(fā)送,即對(duì)主程序而言,發(fā)送數(shù)據(jù)的過程就是向一特定地址寫入所有需要發(fā) 送的數(shù)據(jù)即可完成,無需進(jìn)行發(fā)送流程控制。本設(shè)計(jì)成功應(yīng)用與某項(xiàng)目的RS232通信接口中,作為一個(gè)子模塊嵌入該項(xiàng)目的 FPGA中,由另一塊DSP進(jìn)行數(shù)據(jù)處理,經(jīng)過多次內(nèi)、外場(chǎng)試驗(yàn)驗(yàn)證,完全能替代DSP原有硬件 串口,且控制使用更為簡(jiǎn)單、靈活,節(jié)省了 DSP在接口通信方面的硬件開銷和處理時(shí)間,提 高了 DSP程序的運(yùn)行效率,增強(qiáng)系統(tǒng)的功能穩(wěn)定性和軟件可移植性。本實(shí)用新型并不局限于前述的具體實(shí)施方式
。本實(shí)用新型擴(kuò)展到任何在本說明 書中披露的新特征或任何新的組合,以及披露的任一新的方法或過程的步驟或任何新的組
I=I O
權(quán)利要求1.一種基于FPGA搭建的增強(qiáng)型串口,包括以下模塊發(fā)送數(shù)據(jù)FIFO模塊、接收數(shù)據(jù)雙 口 RAM模塊、接收緩存模塊、發(fā)送緩存模塊、參數(shù)配置邏輯模塊、接收超時(shí)判斷邏輯模塊、接 收邏輯模塊、發(fā)送邏輯模塊;其特征在于,所述接收數(shù)據(jù)雙口 RAM是采用環(huán)形存儲(chǔ)器方式存 儲(chǔ)數(shù)據(jù),該雙口 RAM的一個(gè)端口只供寫入數(shù)據(jù),即只寫,雙口 RAM的另一個(gè)端口專供外部控 制器讀取數(shù)據(jù),即只讀。
2.根據(jù)權(quán)利要求1所述的基于FPGA搭建的增強(qiáng)型串口,其特征在于,外部控制器的數(shù) 據(jù)與所述發(fā)送數(shù)據(jù)FIFO模塊、所述參數(shù)配置邏輯模塊單向連接,所述接收數(shù)據(jù)雙口 RAM模 塊的數(shù)據(jù)單向連接前述外部控制器,所述參數(shù)配置邏輯模塊的數(shù)據(jù)分別單向連接所述接收 邏輯模塊、所述發(fā)送邏輯模塊、所述接收緩存模塊、所述發(fā)送緩存模塊,所述接收超時(shí)判斷 邏輯模塊的數(shù)據(jù)和所述接收邏輯模塊的數(shù)據(jù)雙向連接。
專利摘要本實(shí)用新型公開了一種基于FPGA搭建的增強(qiáng)型串口結(jié)構(gòu),以FPGA(現(xiàn)場(chǎng)可編程邏輯門陣列)為硬件,用HDL語言在FPGA中搭建串口,包括以下模塊發(fā)送數(shù)據(jù)FIFO模塊、接收數(shù)據(jù)雙口RAM模塊、接收緩存模塊、發(fā)送緩存模塊、參數(shù)配置邏輯模塊、接收超時(shí)判斷邏輯模塊、接收邏輯模塊、發(fā)送邏輯模塊,本實(shí)用新型對(duì)主程序而言類似于對(duì)外部存儲(chǔ)器進(jìn)行操作,從而將主程序從頻繁的中斷或查詢操作中解放出來,提高了主程序的運(yùn)行效率,增強(qiáng)了系統(tǒng)的穩(wěn)定性,提高了軟件的可移植性和擴(kuò)展性。
文檔編號(hào)H03K19/177GK201846331SQ201020268579
公開日2011年5月25日 申請(qǐng)日期2010年7月23日 優(yōu)先權(quán)日2010年7月23日
發(fā)明者楊杰, 江勇 申請(qǐng)人:四川九洲電器集團(tuán)有限責(zé)任公司