基于陣列除法的數(shù)據(jù)接收/顯示模塊設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
根據(jù)系統(tǒng)要求,脈沖雷達(dá)高度表通過RS-422串行輸出高度數(shù)據(jù),要求數(shù)據(jù)接收模塊實(shí)時(shí)接收,并顯示雷達(dá)高度數(shù)據(jù)。接收模塊接收到的高度數(shù)據(jù)采用二進(jìn)制(BIN)碼表示,而數(shù)碼管等顯示設(shè)備需要BCD碼(即二進(jìn)制編碼的十進(jìn)制碼),所以二者之間的轉(zhuǎn)換非常必要。
BCD碼與BIN碼的相互轉(zhuǎn)換比較傳統(tǒng)的方法是采用DAA調(diào)節(jié)指令來實(shí)現(xiàn),需要逐位調(diào)節(jié),比較費(fèi)時(shí)。文獻(xiàn)[3]提出利用模除,每次移動(dòng)半字節(jié),使轉(zhuǎn)換效率大為提高,但也僅是軟件算法,無法滿足數(shù)制轉(zhuǎn)換高效率和實(shí)時(shí)性的要求。文獻(xiàn)[4]提出了采用分段查找EPROM的硬件方法,滿足點(diǎn)陣記錄實(shí)時(shí)性的要求,但是該算法需要大容量的EPROM。文獻(xiàn)[5]利用BCD碼與BIN碼的邏輯對(duì)應(yīng)關(guān)系直接轉(zhuǎn)換,需要經(jīng)過多級(jí)復(fù)雜的變換邏輯,面積和時(shí)延較差。
為此,本文采用Verilog HDL硬件描述語言將雷達(dá)高度數(shù)據(jù)接收/顯示的核心功能集成到XILINX公司的FPGA(XCS200)中,使得整個(gè)設(shè)計(jì)更加緊湊、小巧、穩(wěn)定和可靠。利用不恢復(fù)余數(shù)陣列除法快速準(zhǔn)確地實(shí)現(xiàn)BIN碼到BCD碼的轉(zhuǎn)換,僅需要少量的移位和加/減法操作,簡化實(shí)現(xiàn)數(shù)制轉(zhuǎn)換中的求余和整除運(yùn)算。該單元陣列結(jié)構(gòu)規(guī)整,不僅節(jié)省了面積,適于超大規(guī)模集成電路實(shí)現(xiàn)需要,而且易向更高進(jìn)制擴(kuò)展,具有很高的轉(zhuǎn)換速度。
1 串行高度數(shù)據(jù)接收/顯示模塊簡介
數(shù)字式自動(dòng)距離跟蹤脈沖雷達(dá)高度表串行輸出的高度數(shù)據(jù),首先通過串行高度數(shù)據(jù)接收模塊將串行數(shù)據(jù)轉(zhuǎn)換為并行報(bào)文數(shù)據(jù),再通過報(bào)文濾波/數(shù)據(jù)提取模塊,提取出高度數(shù)據(jù),并根據(jù)輸出高度數(shù)據(jù)的時(shí)間間隔標(biāo)識(shí)雷達(dá)的工作狀態(tài),然后BIN碼表示的高度數(shù)據(jù)通過以不恢復(fù)余數(shù)陣列除法為基礎(chǔ)的BIN/BCD碼轉(zhuǎn)換模塊,轉(zhuǎn)換為適合七段碼顯示的90BCD碼后送到掃描七段碼顯示控制器,以驅(qū)動(dòng)四位七段共陽極動(dòng)態(tài)顯示數(shù)碼管,如圖1所示。
串行高度數(shù)據(jù)收發(fā)模塊采用三線制連接方式,通信方式為異步傳輸,波特率:9 600,數(shù)據(jù)位:8位,停止位:1位,奇校驗(yàn),其字符格式及時(shí)鐘同步檢測與采樣過程如圖2所示。
2 基于不恢復(fù)余數(shù)陣列除法的二進(jìn)制到BCD碼的轉(zhuǎn)換
提出的BIN碼到BCD碼的轉(zhuǎn)換算法采用數(shù)據(jù)除以位權(quán)的方式得到千、百、十、個(gè)位BCD碼,因此除法器的設(shè)計(jì)是關(guān)鍵。在數(shù)字計(jì)算中各種除法都可以用下列遞歸公式來描述:
(1)
這里_j=0,1,…,n-1為遞歸下標(biāo);D為除數(shù);qj+1為小數(shù)點(diǎn)右邊第j+1位商;r為基數(shù),r×R(j)為部分被除數(shù);R(j+1)為部分余數(shù);R(0)為被除數(shù)(初始部分余數(shù));R(n)為最后余數(shù)。[!--empirenews.page--]
除法過程可通過重復(fù)應(yīng)用遞歸式1來得到證明。
對(duì)j=0
上述迭代推導(dǎo)過程說明了除法過程是由一系列加法、減法或移位所組成,對(duì)于基數(shù)r=2,q…∈{0,1}。
當(dāng)部分被除數(shù)rR(j)不夠除數(shù)D減時(shí),商qj+1為0,同時(shí)補(bǔ)充被除數(shù)的下一位,組成更大的部分被除數(shù);如果夠減,則該位商為1,在部分被除數(shù)rR(j)中減去除數(shù)D,然后補(bǔ)充被除數(shù)的下一位,直至被除數(shù)的每一位都使用到為止。
在除法進(jìn)行過程中,可使用專門的數(shù)據(jù)比較器來比較部分被除數(shù)rR(j)是否比除數(shù)D大(nonperforming算法),或直接用部分被除數(shù)減去除數(shù)。方式1浪費(fèi)了專門的數(shù)據(jù)比較電路,運(yùn)算延遲加大,降低了運(yùn)算速度。方式2,當(dāng)完成了減法操作后,如果不夠減,把除數(shù)加回到產(chǎn)生的差,以恢復(fù)原來余數(shù)(恢復(fù)余數(shù)法);或把產(chǎn)生的差留給下一次運(yùn)算時(shí)再處理(不恢復(fù)余數(shù)法)。
2.1 不恢復(fù)余數(shù)陣列除法器
為簡化起見,下文用A表示被除數(shù),D表示除數(shù),R表示余數(shù)。在恢復(fù)余數(shù)法中,如果余數(shù)R為負(fù)數(shù),即不夠減,則需要加上除數(shù)D,恢復(fù)成原來的余數(shù),即R+D。然后,余數(shù)R和被除數(shù)A聯(lián)合左移1位。此時(shí)余數(shù)為2(R+D)+ai,其中ai為A中的一位,被移入R中。隨后,進(jìn)入下一步運(yùn)算。即從余數(shù)中減去除數(shù)D:(2(R+D)+ai)-D,有
(2(R+D)+ai)-D=2R+ai+D (5)
因此,當(dāng)在某一步中,余數(shù)R為負(fù),無需再加上除數(shù)D來恢復(fù)成原來的余數(shù),只需在下一步中把恢復(fù)余數(shù)法中的減去除數(shù)D改成加上除數(shù)D,這種算法稱為不恢復(fù)余數(shù)法?;謴?fù)余數(shù)除法需要2個(gè)步驟來確定1個(gè)商位,而不恢復(fù)余數(shù)法沒有這個(gè)缺點(diǎn)。[!--empirenews.page--]
表1以45 10/1010=101101 2/10102作為一個(gè)數(shù)值計(jì)算的例子,詳細(xì)展示了圖3所示的不恢復(fù)余數(shù)法算法流程圖。首先將余數(shù)尺和被除數(shù)A聯(lián)合左移一位,如果余數(shù)R的符號(hào)位S為0,將執(zhí)行減法操作,否則應(yīng)該加上除數(shù)D,如果余數(shù)大于零,則當(dāng)前商位為‘1’,否則為‘0’,循環(huán)這個(gè)過程直到被除數(shù)A的所有位都完成運(yùn)算。最后得商:0001002,余數(shù):000101 2。
在除法中所需要的部分余數(shù)的左移可以用余數(shù)保持固定,而用除數(shù)沿對(duì)角線右移的等效操作來代替。如圖4所示,不恢復(fù)余數(shù)陣列除法器可以用一個(gè)由可控加法/減法(CAS)單元所組成的疊接陣列來實(shí)現(xiàn)。不恢復(fù)陣列每一行所執(zhí)行的操作究竟是加法還是減法,取決于前一行輸出的符號(hào)與被除數(shù)的符號(hào)是否一致(最上面一行所執(zhí)行的初始操作通常是減法,因此最上面一行的控制線P固定置成‘1’。當(dāng)出現(xiàn)不夠減時(shí),部分余數(shù)相對(duì)于被除數(shù)來說要改變符號(hào)。這時(shí)應(yīng)該產(chǎn)生一個(gè)商位‘0’,除數(shù)首先沿對(duì)角線右移,然后加到下一行的部分余數(shù)上。當(dāng)部分余數(shù)不改變它的符號(hào)時(shí),即產(chǎn)生商位‘1’,下一行的操作應(yīng)該是減法。
3 仿真驗(yàn)證
圖5的仿真結(jié)果說明了數(shù)據(jù)接收/顯示模塊的功能特點(diǎn)。串行高度數(shù)據(jù)接收模塊將串行數(shù)據(jù)轉(zhuǎn)換為并行報(bào)文數(shù)據(jù),從并行報(bào)文中提取出高度數(shù)據(jù)(1100h=4352,068eh=1678),不恢復(fù)余數(shù)疊接陣列除法器將多位二進(jìn)制編碼的高度數(shù)據(jù)轉(zhuǎn)換為千、百、十、個(gè)位BCD碼送到掃描七段碼顯示控制器。scanout信號(hào)選擇四位七段共陽極數(shù)碼管的某一位,leddata分別對(duì)應(yīng)7個(gè)陰極引腳,對(duì)應(yīng)分段字符串“abcdefg”,實(shí)現(xiàn)一位一位輪流點(diǎn)亮顯示。由于視覺的記憶性,看到的是穩(wěn)定的多位十進(jìn)制高度數(shù)據(jù)顯示。從仿真結(jié)果圖中可見其與前述設(shè)計(jì)思想完全吻合。
4 結(jié)論
采用不恢復(fù)余數(shù)陣列除法設(shè)計(jì)的BIN碼到BCD碼轉(zhuǎn)換器,僅需少量的移位、加/減法等操作,該算法邏輯簡單,結(jié)構(gòu)規(guī)整,速度高,非常適合實(shí)時(shí)性要求較高的場合,而且非常容易向其它進(jìn)制轉(zhuǎn)換擴(kuò)展。以異步串行數(shù)據(jù)接收、陣列除法及動(dòng)態(tài)顯示等技術(shù)為基礎(chǔ)的脈沖雷達(dá)高度表串行高度數(shù)據(jù)接收/顯示模塊作為一個(gè)工程的子模塊,在某雷達(dá)高度表的設(shè)計(jì)中已經(jīng)得到應(yīng)用。