一種基于fpga的二進(jìn)制同步通信協(xié)議控制器的制造方法
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明屬于數(shù)據(jù)通信領(lǐng)域,具體涉及一種基于FPGA(Field - Programmable Gate Array,現(xiàn)場(chǎng)可編程門陣列)的二進(jìn)制同步通信(Binary Synchronous Communication,簡(jiǎn)稱 BSC)協(xié)議控制器。
【背景技術(shù)】
[0002] 雖然隨著信息系統(tǒng)向網(wǎng)絡(luò)化的不斷發(fā)展,接入信息系統(tǒng)的各型裝備和設(shè)備也在朝 著網(wǎng)絡(luò)化方向發(fā)展,但是為了保護(hù)已有的投資,兼容前期建設(shè)的系統(tǒng),有的信息系統(tǒng)裝備不 僅配置高速主用的網(wǎng)絡(luò)通信接口,還保留著低速備用的串行數(shù)據(jù)通信接口。這些低速備用 串行通信接口支持的典型通信協(xié)議包括面向字符同步通信協(xié)議和面向比特的同步通信協(xié) 議,其中面向字符同步通信協(xié)議的典型代表是IBM公司提出的二進(jìn)制同步通信協(xié)議。二進(jìn)制 同步通信協(xié)議是一種面向字符的數(shù)據(jù)鏈路層協(xié)議,支持該協(xié)議的控制器芯片主要有Zilog 公司推出的以Z85C30為代表的串行通信控制器芯片和HITACHI公司推出的以HD64570為代 表的串行通信適配器芯片。由于這些半導(dǎo)體公司業(yè)務(wù)轉(zhuǎn)型升級(jí),支持二進(jìn)制同步通信協(xié)議 的控制器芯片面臨停產(chǎn)的風(fēng)險(xiǎn),為了避免這一風(fēng)險(xiǎn),需要尋找一種不受限制的可替代商用 ASIC專用控制器芯片的可編程實(shí)現(xiàn)方式,基于FPGA進(jìn)行設(shè)計(jì)與實(shí)現(xiàn)恰好能滿足這一要求。 FPGA芯片是一種完全可編程邏輯器件,具備良好的靈活性和可定制性,特別適合用戶定制 和應(yīng)用各種功能的IP核,使用FPGA實(shí)現(xiàn)的二進(jìn)制同步通信協(xié)議控制器具有良好的可移植 性,可在不同F(xiàn)PGA芯片上自由實(shí)現(xiàn),不僅可以免除因 BSC串行通信控制器芯片停產(chǎn)的風(fēng)險(xiǎn), 還能根據(jù)應(yīng)用需求靈活進(jìn)行功能擴(kuò)展與裁剪,具備良好的商用價(jià)值和研究意義。
[0003] 《利用通用微處理器實(shí)現(xiàn)同步通信數(shù)據(jù)收發(fā)的裝置》是與本發(fā)明最接近的現(xiàn)有技 術(shù),該發(fā)明的技術(shù)實(shí)現(xiàn)使用通用微處理器(如單片機(jī)、DSP等)的輸入輸出引腳與同步串行通 信接口(如BSC、HDLC),采用通用微處理器軟件方法實(shí)現(xiàn)不同規(guī)程(如BSC、HDLC)同步串行通 信數(shù)據(jù)的發(fā)送、接收。該發(fā)明技術(shù)在通用微處理器上使用軟件編程方法實(shí)現(xiàn),與處理器指令 集和性能緊密相關(guān),跨處理器平臺(tái)移植不方便,且難以實(shí)現(xiàn)多通道實(shí)現(xiàn)。
【發(fā)明內(nèi)容】
[0004] 發(fā)明目的:本發(fā)明的目的是提供一種在FPGA中實(shí)現(xiàn)二進(jìn)制同步通信控制器的方 法,應(yīng)用該發(fā)明,不僅能夠?qū)崿F(xiàn)二進(jìn)制同步通信功能,同時(shí)能夠省去專用ASIC芯片,降低因 ASIC芯片停產(chǎn)給設(shè)備研發(fā)帶來(lái)的技術(shù)風(fēng)險(xiǎn)與投資風(fēng)險(xiǎn),另一方面提高二進(jìn)制同步通信控制 器可移植性和使用靈活性。
[0005] 技術(shù)方案:為實(shí)現(xiàn)上述目的,本發(fā)明所述的二進(jìn)制同步通信協(xié)議控制器,其組成部 分包括與外部處理器連接的處理器接口模塊、數(shù)據(jù)發(fā)送緩存模塊、數(shù)據(jù)接收緩存模塊、發(fā)送 通道模塊、接收通道模塊和波特率生成模塊;
[0006] 所述數(shù)據(jù)發(fā)送緩存模塊、數(shù)據(jù)接收緩存模塊和波特率生成模塊分別連接所述處理 器接口模塊;
[0007] 所述發(fā)送通道模塊連接數(shù)據(jù)發(fā)送緩存模塊,接收通道模塊連接數(shù)據(jù)接收緩存模 塊,發(fā)送通道模塊和接收通道模塊之間進(jìn)行狀態(tài)指示交互。
[0008] 所述的二進(jìn)制同步通信協(xié)議控制器采用硬件描述語(yǔ)言在FPGA中實(shí)現(xiàn)。
[0009] 其中,所述處理器接口模塊提供外部處理器對(duì)控制器進(jìn)行訪問(wèn)控制的寄存器接 口,包括寄存器空間、地址總線、數(shù)據(jù)總線、控制總線,實(shí)現(xiàn)外部處理器對(duì)寄存器讀寫的編程 控制、收發(fā)數(shù)據(jù)交互??刂瓶偩€信號(hào)包括讀信號(hào)RD(READ)、寫信號(hào)WR(WRITE)、片選信號(hào)CS (CHIP SELECT)和中斷信號(hào)INT(INTERRUPT);外部處理器通過(guò)地址總線、數(shù)據(jù)總線、片選信 號(hào)CS和讀信號(hào)RD讀取內(nèi)部寄存器的值,通過(guò)地址總線、數(shù)據(jù)總線、片選信號(hào)CS和寫信號(hào)WR向 內(nèi)部寄存器寫入相應(yīng)的數(shù)值;中斷信號(hào)INT用于通知外部處理器二進(jìn)制同步通信協(xié)議控制 器已發(fā)生中斷事件;
[0010]外部處理器通過(guò)向控制寄存器寫入相應(yīng)的控制命令數(shù)值,控制發(fā)送通道模塊和接 收通道模塊是處于復(fù)位狀態(tài)或者正常工作狀態(tài)、控制發(fā)送和接收時(shí)鐘是來(lái)自于外部時(shí)鐘線 路還是內(nèi)部波特率生成模塊(發(fā)送時(shí)鐘是發(fā)送通道模塊的一根信號(hào)線,接收時(shí)鐘是接收通 道模塊的一根信號(hào)線),控制中斷事件的使能與禁止;當(dāng)控制寄存器中任意中斷事件被使能 后,一旦發(fā)生相應(yīng)的中斷事件,控制器將觸發(fā)INT中斷脈沖信號(hào),通知外部處理器已發(fā)生了 中斷事件,并且中斷狀態(tài)寄存器對(duì)應(yīng)的中斷事件狀態(tài)位置1,外部處理器通過(guò)讀取中斷狀態(tài) 寄存器數(shù)值判斷中斷事件的類型,并采取相應(yīng)的讀寫操作;讀取中斷狀態(tài)寄存器的操作將 使中斷狀態(tài)寄存器清零。
[0011] 所述的數(shù)據(jù)發(fā)送緩存模塊,用于緩存發(fā)送數(shù)據(jù)的先入先出(First In First Out, 簡(jiǎn)稱FIFO)存儲(chǔ)器,實(shí)現(xiàn)處理器接口模塊對(duì)發(fā)送數(shù)據(jù)的按順序?qū)懭牒桶l(fā)送通道模塊對(duì)發(fā)送 數(shù)據(jù)的按順序讀出。所述數(shù)據(jù)發(fā)送緩存模塊是通過(guò)FPGA內(nèi)部存儲(chǔ)邏輯單元構(gòu)建的FIFO存儲(chǔ) 器,數(shù)據(jù)位寬為16比特,存儲(chǔ)深度可配置。
[0012] 當(dāng)外部處理器發(fā)送一幀數(shù)據(jù)幀時(shí),首先獲取發(fā)送數(shù)據(jù)發(fā)送緩存模塊中發(fā)送緩沖區(qū) 的狀態(tài)信息,當(dāng)發(fā)送緩沖區(qū)允許寫入發(fā)送數(shù)據(jù)時(shí),外部處理器按以下步驟寫入數(shù)據(jù):
[0013] 步驟1-1,向發(fā)送緩沖區(qū)數(shù)據(jù)寄存器寫入字符段a,字符段a表示一幀數(shù)據(jù)幀開始;
[0014] 步驟1-2,所發(fā)送數(shù)據(jù)存在頭部信息時(shí),向發(fā)送緩沖區(qū)數(shù)據(jù)寄存器寫入頭部信息數(shù) 據(jù),頭部信息數(shù)據(jù)內(nèi)包括頭部信息字符b;
[0015] 步驟1-3,向發(fā)送緩沖區(qū)數(shù)據(jù)寄存器寫入包括正文字符c的正文數(shù)據(jù)信息;
[0016] 步驟1-4,向發(fā)送緩沖區(qū)數(shù)據(jù)寄存器寫入字符段d,字符段d表示一幀數(shù)據(jù)幀結(jié)束。
[0017] 所述數(shù)據(jù)接收緩存模塊,用于緩存接收數(shù)據(jù)的先入先出(First In First Out,簡(jiǎn) 稱FIFO)存儲(chǔ)器,實(shí)現(xiàn)接收通道模塊對(duì)接收數(shù)據(jù)的按順序?qū)懭牒吞幚砥鹘涌谀K對(duì)接收數(shù) 據(jù)的按順序讀出。所述數(shù)據(jù)接收緩存模塊是通過(guò)FPGA內(nèi)部存儲(chǔ)邏輯單元構(gòu)建的FIFO存儲(chǔ) 器,數(shù)據(jù)位寬為16比特,存儲(chǔ)深度可配置。
[0018] 當(dāng)外部處理器讀取一幀數(shù)據(jù)幀時(shí),首先獲取數(shù)據(jù)接收緩存模塊中接收緩沖區(qū)的狀 態(tài)信息,當(dāng)接收緩沖區(qū)允許數(shù)據(jù)讀出時(shí),外部處理器按照以下步驟讀取一幀數(shù)據(jù)幀:
[0019] 步驟2-1,讀取接收緩沖區(qū)數(shù)據(jù)寄存器,如果讀出數(shù)據(jù)包括字符段a,表示一幀數(shù)據(jù) 幀開始即幀起始數(shù)據(jù),繼續(xù)讀取后續(xù)數(shù)據(jù);
[0020] 步驟2-2,讀取接收緩沖區(qū)數(shù)據(jù)寄存器,如果讀出數(shù)據(jù)包括頭部信息字符b,表示讀 取的是頭部信息數(shù)據(jù);
[0021] 步驟2-3,讀取接收緩沖區(qū)數(shù)據(jù)寄存器,如果讀出數(shù)據(jù)包括正文字符c,表示讀取的 是正文數(shù)據(jù)信息;
[0022] 步驟2-4,讀取接收緩沖區(qū)數(shù)據(jù)寄存器,如果讀出數(shù)據(jù)包括字符段d,表示已讀取一 幀完整的數(shù)據(jù)幀,且數(shù)據(jù)幀校驗(yàn)正確,外部處理器將該數(shù)據(jù)幀視為有效數(shù)據(jù)幀;如果讀出數(shù) 據(jù)包括字符段e,表示已讀取一幀完整的數(shù)據(jù)幀,但是數(shù)據(jù)幀校驗(yàn)錯(cuò)誤,外部處理器將該數(shù) 據(jù)幀視為無(wú)效數(shù)據(jù)幀,并丟棄該數(shù)據(jù)幀。
[0023] 所述發(fā)送通道模塊,用于讀取數(shù)據(jù)發(fā)送緩存模塊中的數(shù)據(jù),按照BSC二進(jìn)制同步通 信協(xié)議數(shù)據(jù)幀格式進(jìn)行組幀、轉(zhuǎn)義、校驗(yàn)計(jì)算以及按時(shí)序發(fā)送數(shù)據(jù),發(fā)出狀態(tài)指示信號(hào),并 根據(jù)接收通道模塊的指示信號(hào)選擇發(fā)送控制幀;發(fā)送通道模塊脫離復(fù)位狀態(tài)后,按照以下 步驟進(jìn)行工作:
[0024] 步驟3-1,根據(jù)接收通道模塊的指示信號(hào)標(biāo)記判斷是否已接收到未確認(rèn)的一幀數(shù) 據(jù)幀,如果已接收到未確認(rèn)的一幀數(shù)據(jù)幀,進(jìn)入步驟3-2;如果未接收到數(shù)據(jù)幀,但是數(shù)據(jù)發(fā) 送緩存FIFO存儲(chǔ)器中有數(shù)據(jù)需要發(fā)送,進(jìn)入步驟3-3;否則繼續(xù)停留在步驟3-1進(jìn)行檢測(cè)判 斷;
[0025] 步驟3-2,根據(jù)接收到數(shù)據(jù)幀正確性的指示信號(hào)和奇幀計(jì)數(shù)或者偶幀計(jì)數(shù),選擇發(fā) 送控制字符組{SYN、SYN、ACK0}、控制字符組{SYN、SYN、ACK1}或控制字符組{SYN、SYN、NAK}, 返回步驟3-1;控制字符組{SYN、SYN、ACK0}包括SYN、SYN和A