本發(fā)明涉及通信領(lǐng)域移位寄存器,尤其涉及一種基于VHDL可控制起停傳輸移位寄存器操作方法。
背景技術(shù):
移位寄存器在應(yīng)用領(lǐng)域中常用來(lái)進(jìn)行數(shù)據(jù)緩沖,實(shí)現(xiàn)串入并出等方式,完成功能的同時(shí)可提高傳輸過(guò)程中的穩(wěn)定性,是EDA技術(shù)中不可或缺的一個(gè)設(shè)計(jì)環(huán)節(jié)。
目前,常用的基于VDHL的移位寄存器只考慮對(duì)數(shù)據(jù)進(jìn)行移位計(jì)算,在時(shí)鐘控制下對(duì)數(shù)據(jù)進(jìn)行存入取出,不考慮數(shù)據(jù)傳輸?shù)钠鹗寂c停止。即使有的移位寄存器考慮了起始問(wèn)題,但由于時(shí)序邏輯所限制,檢測(cè)到幀頭的起始標(biāo)識(shí)時(shí),往往對(duì)其進(jìn)行丟棄,從下一幀的用戶數(shù)據(jù)開(kāi)始傳輸,同樣的,幀尾也會(huì)被丟棄。這使得數(shù)據(jù)在接口傳輸中帶來(lái)了很大不便,當(dāng)存在通信協(xié)議約束時(shí),下游模塊需要上游模塊發(fā)送整個(gè)幀,即包含幀頭和幀尾的部分,那么必須要求幀的完整性。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明公開(kāi)一種基于VHDL語(yǔ)言的可以控制起始與停止傳輸?shù)拇休斎氩⑿休敵龅囊莆患拇嫫鞑僮鞣椒ǎ軌蚋鶕?jù)協(xié)議設(shè)定傳輸數(shù)據(jù)的起始和停止時(shí)間,能夠避免數(shù)據(jù)塊內(nèi)重復(fù)數(shù)據(jù)的串?dāng)_,能夠避免丟棄幀頭幀尾的數(shù)據(jù)。相對(duì)于現(xiàn)有技術(shù)更加穩(wěn)定與有效,可靠性強(qiáng)。
為了實(shí)現(xiàn)上述目的,本發(fā)明采用如下方案:
一種基于VHDL可控制起停傳輸移位寄存器操作方法,包括步驟:
步驟一:初始化(即開(kāi)始);
步驟二:掃描讀數(shù);
步驟三:判斷是否為幀頭;
步驟四:執(zhí)行幀頭是操作或者幀頭否操作;
所述步驟四的幀頭否操作是重復(fù)執(zhí)行一次步驟二掃描讀數(shù)。
所述步驟四的幀頭是操作包括:
S1:打開(kāi)控制信號(hào);
S2:移位寄存;
S3:按bit讀數(shù)
S4:判斷bit位是否是第8位
S5:執(zhí)行bit第8位是操作或者bit第8位否操作。
所述bit第8位否操作是繼續(xù)所述按bit讀數(shù)的步驟。
所述bit第8位是操作包括:
S6:所述bit的下一bit數(shù)據(jù)進(jìn)行所述移位寄存;
S7:所述bit數(shù)據(jù)并行輸出;
S8:幀尾判斷;
S9:執(zhí)行幀尾是操作或者幀尾否操作。
所述幀尾否操作是繼續(xù)執(zhí)行所述bit數(shù)據(jù)并行輸出。
所述幀尾是操作包括:
S10::所述幀傳輸停止;
S11:關(guān)閉控制信號(hào);
S12:所述幀的下一幀掃描讀數(shù)。
所述S10和S11兩個(gè)步驟無(wú)先后順序。
本發(fā)明的有益效果是能夠?qū)崿F(xiàn)幀頭和幀尾標(biāo)志的識(shí)別,且在不丟棄幀頭和幀尾的情況下進(jìn)行數(shù)據(jù)的串入并出傳輸。同時(shí)避免了三個(gè)問(wèn)題,一是避免了下游模塊對(duì)數(shù)據(jù)傳輸時(shí)再次添加幀頭幀尾的麻煩,二是避免數(shù)據(jù)段中出現(xiàn)與幀頭幀尾相同的數(shù)據(jù)時(shí)出現(xiàn)突然中斷或傳輸數(shù)據(jù)混亂的問(wèn)題,三是幀與幀間的數(shù)據(jù)存在傳輸間隔時(shí),能夠避免無(wú)效數(shù)據(jù)的傳輸且能隨時(shí)根據(jù)需要繼續(xù)傳輸。
附圖說(shuō)明
圖1為本發(fā)明幀數(shù)據(jù)結(jié)構(gòu)示意圖。
圖2為本發(fā)明移位寄存示意圖。
圖3為本發(fā)明設(shè)計(jì)方案的流程框圖。
圖4為本發(fā)明第一實(shí)施例數(shù)據(jù)傳輸仿真圖。
圖5為本發(fā)明控制單元信號(hào)仿真圖。
圖6為本發(fā)明控制有效數(shù)據(jù)傳輸仿真圖。
圖7為本發(fā)明控制無(wú)效信號(hào)仿真圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例做出詳細(xì)說(shuō)明。
數(shù)據(jù)傳輸以幀為單位,一個(gè)完整幀的結(jié)構(gòu)如圖1所示。其中幀頭作為每一幀傳輸?shù)钠鹗紭?biāo)識(shí),類似“身份驗(yàn)證”,具有該幀頭的數(shù)據(jù)才會(huì)被接收;幀頭之后為用戶數(shù)據(jù),為本次傳輸?shù)男畔?;幀尾作為結(jié)束標(biāo)志,通常包含校驗(yàn)信息等,有的場(chǎng)合可不加。
首先,確定并行輸出的長(zhǎng)度,即每個(gè)Byte的長(zhǎng)度,一般為8bit(該方案說(shuō)明以8為例)。通過(guò)滑窗方法(窗的長(zhǎng)度要大于等于Byte長(zhǎng)度),檢測(cè)所輸入的8位數(shù)據(jù)是否為幀頭。
當(dāng)檢測(cè)到為幀頭時(shí),即開(kāi)始讀取數(shù)據(jù),并開(kāi)啟控制信號(hào),兩者互不干擾,且無(wú)先后順序,使得在檢測(cè)到幀尾前都不會(huì)中斷數(shù)據(jù)傳輸,且即使數(shù)據(jù)與幀頭編碼相同,也不會(huì)造成混亂。
讀取數(shù)據(jù)進(jìn)行移位寄存,如圖2所示,后7位依次前移一位,即令1到7位依次代替原本的2到8位,丟棄原本的第8位,讀取串行進(jìn)入的一位數(shù)作為新的第1位。按bit位讀取數(shù)據(jù),每當(dāng)bit位數(shù)為8的時(shí)候,對(duì)數(shù)據(jù)并行輸出,即把八位數(shù)同時(shí)輸出。當(dāng)檢測(cè)到輸出的數(shù)據(jù)為幀尾時(shí),停止輸出,此幀傳輸完畢,并關(guān)閉控制信號(hào),以便進(jìn)行下一幀的檢測(cè)與傳輸。
控制信號(hào)單元起著很重要的作用,也是該方案能夠?qū)崿F(xiàn)的重要一環(huán)。其保證了自檢測(cè)到幀頭后到檢測(cè)到幀尾前,不會(huì)受到數(shù)據(jù)與幀頭幀尾編碼相同的干擾,從而保證了整個(gè)傳輸過(guò)程中不會(huì)發(fā)生碼元混亂。同時(shí),由于控制信號(hào)單元,能夠使得幀與幀之間的時(shí)間間隔不會(huì)對(duì)傳輸造成任何影響??梢噪S時(shí)開(kāi)始傳幀,也可以隨時(shí)停止。
整個(gè)設(shè)計(jì)方案的流程框圖如圖3所示,本發(fā)明寄存器操作方法包括以下步驟:
步驟一:初始化(即開(kāi)始);
步驟二:掃描讀數(shù);
步驟三:判斷是否為幀頭;
步驟四:執(zhí)行幀頭是操作或者幀頭否操作;
其中,步驟四的幀頭否操作是重復(fù)執(zhí)行一次步驟二掃描讀數(shù)。
步驟四的幀頭是操作包括S1-S5步:
S1:打開(kāi)控制信號(hào);
S2:移位寄存;
S3:按bit讀數(shù)
S4:判斷bit位是否是第8位
S5:執(zhí)行bit第8位是操作或者bit第8位否操作。
其中S5中bit第8位否操作是繼續(xù)所述按bit讀數(shù)的步驟。
S5中bit第8位是操作包括(S6-S9):
S6:所述bit的下一bit數(shù)據(jù)進(jìn)行所述移位寄存;
S7:所述bit數(shù)據(jù)并行輸出;
S8:幀尾判斷;
S9:執(zhí)行幀尾是操作或者幀尾否操作。
其中S9的幀尾否操作是繼續(xù)執(zhí)行所述bit數(shù)據(jù)并行輸出。
S9中幀尾是操作包括(S10-S12):
S10::所述幀傳輸停止;
S11:關(guān)閉控制信號(hào);
S12:所述幀的下一幀掃描讀數(shù)。
其中S10和S11兩個(gè)步驟無(wú)先后順序。
實(shí)施例一:
選用Xilinx的ISEDesignSuite14.6的仿真軟件對(duì)寄存器進(jìn)行仿真。如圖4所示,假定…均為無(wú)效信息;編寫(xiě)VHDL代碼文件,描述以上所述方案流程;編寫(xiě)Testbench激勵(lì)文件,以驗(yàn)證VHDL文件的正確性;通過(guò)激勵(lì)文件,采用Xilinx自帶的iSim仿真器進(jìn)行仿真,生成仿真圖。
例如,假定1Byte數(shù)據(jù)為8bit組成,幀頭framehead數(shù)據(jù)為10101010,幀尾frametail數(shù)據(jù)為00111100,測(cè)試信號(hào)rx為00(10101010 10010011 00000000 11111111 11000000 00111100)00111111 00000000(10101010 11111111……)其中括號(hào)內(nèi)為需要傳輸?shù)挠行畔?,其余信息均為無(wú)效信息。
圖3所示流程圖中所描述的控制單元信號(hào),即為data_en,data_start,data_done與cnt。如圖5所示,置高用data_en置高來(lái)表示輸出為有效信息。設(shè)定信號(hào)data_start與data_done,前者置高表示檢測(cè)到幀頭,后者置高表示檢測(cè)到數(shù)據(jù)幀尾。設(shè)定計(jì)數(shù)器信號(hào)cnt,其作用是結(jié)合data_start與data_done進(jìn)行判決,保證在檢測(cè)到幀頭但還未檢測(cè)到幀尾時(shí),若用戶數(shù)據(jù)中出現(xiàn)與幀頭相同的情況,data_start不會(huì)再次置高,使得傳輸過(guò)程發(fā)生混亂;同樣,若用戶數(shù)據(jù)中出現(xiàn)與幀尾相同的情況,data_done不會(huì)提前置高,使得傳輸未完成即停止。
另外,通過(guò)對(duì)計(jì)數(shù)信號(hào)的控制,可以控制data_en的控制時(shí)間,保證有效信息輸出的時(shí)間與data_en的置高時(shí)間相吻合。如圖6所示,所有有效信息都在data_en置高期間輸出。
如圖7所示,一幀結(jié)束后,data_en會(huì)置低,直到檢測(cè)到下一幀的幀頭。期間所有的信息均為無(wú)效信息,不會(huì)進(jìn)入傳輸通路中來(lái)。
本發(fā)明的有益效果是能夠?qū)崿F(xiàn)幀頭和幀尾標(biāo)志的識(shí)別,且在不丟棄幀頭和幀尾的情況下進(jìn)行數(shù)據(jù)的串入并出傳輸。同時(shí)避免了三個(gè)問(wèn)題:一是避免了下游模塊對(duì)數(shù)據(jù)傳輸時(shí)再次添加幀頭幀尾的麻煩;二是避免數(shù)據(jù)段中出現(xiàn)與幀頭幀尾相同的數(shù)據(jù)時(shí)出現(xiàn)突然中斷或傳輸數(shù)據(jù)混亂的問(wèn)題;三是幀與幀間的數(shù)據(jù)存在傳輸間隔時(shí),能夠避免無(wú)效數(shù)據(jù)的傳輸且能隨時(shí)根據(jù)需要繼續(xù)傳輸。
以上對(duì)本發(fā)明的實(shí)施例進(jìn)行了詳細(xì)說(shuō)明,但所述內(nèi)容僅為本發(fā)明的較佳實(shí)施例,不能被認(rèn)為用于限定本發(fā)明的實(shí)施范圍。凡依本發(fā)明申請(qǐng)范圍所作的均等變化、改進(jìn)或組合等,均應(yīng)仍歸屬于本發(fā)明的專利涵蓋范圍之內(nèi)。