本發(fā)明屬于航空電氣,涉及一種基于fpga的串入串出數(shù)據(jù)冒泡排序方法。
背景技術(shù):
1、隨著機(jī)載設(shè)備集成化、智能化的程度逐漸提高,fpga在機(jī)載設(shè)備中的應(yīng)用也日漸廣泛,當(dāng)使用fpga進(jìn)行外部模擬量數(shù)據(jù)采集時(shí),如何保證采集數(shù)據(jù)的準(zhǔn)確“不抖動(dòng)”就顯得尤為關(guān)鍵,應(yīng)用本發(fā)明中的串入串出數(shù)據(jù)冒泡排序算法,能夠很好的解決產(chǎn)品在實(shí)際應(yīng)用過程中采集到的外部模擬量偶發(fā)抖動(dòng)導(dǎo)致控制信號(hào)誤輸出的問題。
技術(shù)實(shí)現(xiàn)思路
1、(一)發(fā)明目的
2、本發(fā)明的目的是:提供一種基于fpga的串入串出數(shù)據(jù)冒泡排序方法,使用fpga進(jìn)行數(shù)據(jù)冒泡排序比較,能夠使系統(tǒng)在沒有cpu參與的情況下準(zhǔn)確的完成數(shù)據(jù)采集濾波,確保采集的穩(wěn)定性,節(jié)約成本的同時(shí),提升系統(tǒng)運(yùn)行速率,并且保證系統(tǒng)穩(wěn)定性不受影響。
3、(二)技術(shù)方案
4、為了解決上述技術(shù)問題,本發(fā)明提供一種基于fpga的串入串出數(shù)據(jù)冒泡排序方法,fpga采用狀態(tài)機(jī)的方式進(jìn)行運(yùn)算,并設(shè)置狀態(tài)跳轉(zhuǎn)指針,在每一步運(yùn)行的末尾,對(duì)狀態(tài)跳轉(zhuǎn)指針進(jìn)行置位,指向下一步想要跳轉(zhuǎn)到的狀態(tài);排序方法包括以下步驟:
5、第一步:初始化
6、對(duì)需要使用的兩個(gè)寄存器賦初值,比較位寄存器賦值為2,剩余數(shù)據(jù)量寄存器賦初值為總的數(shù)據(jù)個(gè)數(shù),初始化完成后,將狀態(tài)跳轉(zhuǎn)指針指向“取值”;
7、第二步:取值
8、將需要比較的數(shù)據(jù)賦值到比較寄存器數(shù)組中,該步驟存在的意義在于防止在比較過程中產(chǎn)生新的數(shù)據(jù)輸入影響比較結(jié)果,賦值完成后,將狀態(tài)跳轉(zhuǎn)指針指向“后兩位比較”;
9、第三步:后兩位比較
10、對(duì)比較寄存器數(shù)組的最后一位和倒數(shù)第二位數(shù)據(jù)進(jìn)行比較,并將較小的數(shù)據(jù)交換到最后一位,并將剩余數(shù)據(jù)量寄存器的數(shù)值減1,比較完成后,將狀態(tài)跳轉(zhuǎn)指針指向“循環(huán)比較”;
11、第四步:循環(huán)比較
12、進(jìn)入本步驟后,首先對(duì)“剩余數(shù)據(jù)量寄存器”和“比較位寄存器”進(jìn)行比較,并根據(jù)比較結(jié)果進(jìn)行分支處理;
13、第五步:數(shù)據(jù)輸出
14、將完成比較的比較寄存器數(shù)組中的數(shù)據(jù)依次賦值到輸出數(shù)組中,該步驟存在的意義在于防止在比較過程中輸出未完成比較的錯(cuò)誤結(jié)果,賦值完成后,將狀態(tài)跳轉(zhuǎn)指針指向“初始化”,等下一個(gè)時(shí)鐘沿到來后即可開始新一輪數(shù)據(jù)比較。
15、第四步中,若“比較位寄存器”不大于“剩余數(shù)據(jù)量寄存器”,則繼續(xù)進(jìn)行數(shù)據(jù)比較,比較的數(shù)位是在比較寄存器數(shù)組中“剩余數(shù)據(jù)量寄存器”對(duì)應(yīng)的數(shù)據(jù)位及其前一位,并將較小的數(shù)據(jù)交換到“剩余數(shù)據(jù)量寄存器”對(duì)應(yīng)的數(shù)據(jù)位,并將“剩余數(shù)據(jù)量寄存器”的數(shù)值減1,比較完成后,將狀態(tài)跳轉(zhuǎn)指針指向“循環(huán)比較”。
16、第四步中,若“比較位寄存器”大于“剩余數(shù)據(jù)量寄存器”并且“比較位寄存器”小于總的數(shù)據(jù)個(gè)數(shù),則“比較位寄存器”賦值加1,“剩余數(shù)據(jù)量寄存器”賦初值為總的數(shù)據(jù)個(gè)數(shù),賦值完成后,將狀態(tài)跳轉(zhuǎn)指針指向“循環(huán)比較”。
17、第四步中,若“比較位寄存器”大于“剩余數(shù)據(jù)量寄存器”并且“比較位寄存器”不小于總的數(shù)據(jù)個(gè)數(shù),表明此時(shí)循環(huán)比較已經(jīng)完成,將狀態(tài)跳轉(zhuǎn)指針指向“數(shù)據(jù)輸出”。
18、其中,fpga邏輯最小的運(yùn)行周期為晶振的時(shí)鐘沿,當(dāng)每一個(gè)時(shí)鐘沿到來時(shí),進(jìn)行狀態(tài)跳轉(zhuǎn)指針地址讀取,然后根據(jù)狀態(tài)跳轉(zhuǎn)指針地址跳轉(zhuǎn)到對(duì)應(yīng)的步驟進(jìn)行數(shù)據(jù)處理。
19、其中,總的比較次數(shù)為n(n-1),即需要n(n-1)時(shí)鐘周期完成數(shù)據(jù)比較,n為數(shù)據(jù)個(gè)數(shù)。
20、其中,冒泡排序不受輸入數(shù)據(jù)位寬的影響,適用于8位、16位或者是32位寬度的模擬量。
21、其中,外部數(shù)據(jù)刷新時(shí)間小于冒泡取數(shù)的時(shí)間間隔t。
22、其中,使用2v1000為核心fpga,使用ad轉(zhuǎn)換芯片ad7656作為模擬量輸入源。
23、(三)有益效果
24、上述技術(shù)方案所提供的基于fpga的串入串出數(shù)據(jù)冒泡排序方法,在fpga內(nèi)部完成模擬量冒泡排序?yàn)V波,對(duì)于一些較小的系統(tǒng)而言,能夠省去cpu的使用,節(jié)約成本的同時(shí),減少之前數(shù)據(jù)在cpu和fpga之間的傳輸時(shí)間,提升速率,同時(shí)不影響系統(tǒng)穩(wěn)定性。
1.一種基于fpga的串入串出數(shù)據(jù)冒泡排序方法,其特征在于,fpga采用狀態(tài)機(jī)的方式進(jìn)行運(yùn)算,并設(shè)置狀態(tài)跳轉(zhuǎn)指針,在每一步運(yùn)行的末尾,對(duì)狀態(tài)跳轉(zhuǎn)指針進(jìn)行置位,指向下一步想要跳轉(zhuǎn)到的狀態(tài);排序方法包括以下步驟:
2.如權(quán)利要求1所述的基于fpga的串入串出數(shù)據(jù)冒泡排序方法,其特征在于,第四步中,若“比較位寄存器”不大于“剩余數(shù)據(jù)量寄存器”,則繼續(xù)進(jìn)行數(shù)據(jù)比較,比較的數(shù)位是在比較寄存器數(shù)組中“剩余數(shù)據(jù)量寄存器”對(duì)應(yīng)的數(shù)據(jù)位及其前一位,并將較小的數(shù)據(jù)交換到“剩余數(shù)據(jù)量寄存器”對(duì)應(yīng)的數(shù)據(jù)位,并將“剩余數(shù)據(jù)量寄存器”的數(shù)值減1,比較完成后,將狀態(tài)跳轉(zhuǎn)指針指向“循環(huán)比較”。
3.如權(quán)利要求2所述的基于fpga的串入串出數(shù)據(jù)冒泡排序方法,其特征在于,第四步中,若“比較位寄存器”大于“剩余數(shù)據(jù)量寄存器”并且“比較位寄存器”小于總的數(shù)據(jù)個(gè)數(shù),則“比較位寄存器”賦值加1,“剩余數(shù)據(jù)量寄存器”賦初值為總的數(shù)據(jù)個(gè)數(shù),賦值完成后,將狀態(tài)跳轉(zhuǎn)指針指向“循環(huán)比較”。
4.如權(quán)利要求3所述的基于fpga的串入串出數(shù)據(jù)冒泡排序方法,其特征在于,第四步中,若“比較位寄存器”大于“剩余數(shù)據(jù)量寄存器”并且“比較位寄存器”不小于總的數(shù)據(jù)個(gè)數(shù),表明此時(shí)循環(huán)比較已經(jīng)完成,將狀態(tài)跳轉(zhuǎn)指針指向“數(shù)據(jù)輸出”。
5.如權(quán)利要求4所述的基于fpga的串入串出數(shù)據(jù)冒泡排序方法,其特征在于,fpga邏輯最小的運(yùn)行周期為晶振的時(shí)鐘沿,當(dāng)每一個(gè)時(shí)鐘沿到來時(shí),進(jìn)行狀態(tài)跳轉(zhuǎn)指針地址讀取,然后根據(jù)狀態(tài)跳轉(zhuǎn)指針地址跳轉(zhuǎn)到對(duì)應(yīng)的步驟進(jìn)行數(shù)據(jù)處理。
6.如權(quán)利要求5所述的基于fpga的串入串出數(shù)據(jù)冒泡排序方法,其特征在于,總的比較次數(shù)為n(n-1),即需要n(n-1)時(shí)鐘周期完成數(shù)據(jù)比較,n為數(shù)據(jù)個(gè)數(shù)。
7.如權(quán)利要求6所述的基于fpga的串入串出數(shù)據(jù)冒泡排序方法,其特征在于,冒泡排序不受輸入數(shù)據(jù)位寬的影響,適用于8位、16位或者是32位寬度的模擬量。
8.如權(quán)利要求7所述的基于fpga的串入串出數(shù)據(jù)冒泡排序方法,其特征在于,外部數(shù)據(jù)刷新時(shí)間小于冒泡取數(shù)的時(shí)間間隔t。
9.如權(quán)利要求1-8中任一項(xiàng)所述的基于fpga的串入串出數(shù)據(jù)冒泡排序方法,其特征在于,使用2v1000為核心fpga,使用ad轉(zhuǎn)換芯片ad7656作為模擬量輸入源。
10.一種基于權(quán)利要求1-8中任一項(xiàng)所述的基于fpga的串入串出數(shù)據(jù)冒泡排序方法在航空電氣技術(shù)中的應(yīng)用。