FPGA奇偶校驗如何設(shè)計?代碼又該如何實現(xiàn)?
FPGA奇偶校驗設(shè)計和代碼實現(xiàn)將是下述內(nèi)容的主要介紹內(nèi)容,通過這篇文章,小編希望大家可以對FPGA奇偶校驗的相關(guān)情況以及信息有所認(rèn)識和了解,詳細(xì)內(nèi)容如下。
一、奇偶校驗原理
奇偶校驗是一種基本的數(shù)據(jù)校驗方式,其原理是在數(shù)據(jù)的尾部添加一個位,使得該位和數(shù)據(jù)中所有1的個數(shù)之和為奇數(shù)或偶數(shù)。由于校驗位的加入,使得數(shù)據(jù)傳輸中一旦數(shù)據(jù)錯誤就能夠被檢測出來,從而保證了數(shù)據(jù)的正確性。
奇偶校驗的優(yōu)點是簡單、快速,不需要大量計算。但是奇偶校驗只能檢測出錯誤,不能糾正錯誤,因此在實際應(yīng)用中很少單獨使用,通常與其它更加強(qiáng)大的校驗方式結(jié)合起來使用。
二、FPGA奇偶校驗設(shè)計
1、多位輸入,分別用每位做:與、或、異或
module test(input [3:0] in,output out_and,output out_or,output out_xor);//方法一
assign out_and = in[0] & in[1] & in[2] & in[3];
assign out_or = in[0] | in[1] | in[2] | in[3];
assign out_xor = in[0] ^ in[1] ^ in[2] ^ in[3];//方法二
assign out_and = ∈assign out_or = |in;assign out_xor = ^in;
endmodule
2、奇偶校驗測試
奇偶校驗只要求出其中一個,另一個取反即得到了。
module parity_check(input [7:0] data_in,input sel,output check);
wire even;// 偶校驗
wire odd;// 奇校驗
assign odd = ^data_in;
assign even = ~odd;
assign check = (sel)?odd : even;
endmodule
測試激勵
module sim();
reg clk;
reg [7:0] data_in;
parity_check u_parity_check (.data_in(data_in),.sel(1'b0));initial begindata_in = 0;
#10 data_in = 8'b1011_1000;
#10 data_in = 8'b1011_0000;
#10 data_in = 8'b1111_1000;
#10 data_in = 8'b1011_1100;
#10 data_in = 8'b1011_1010;
#10 data_in = 8'b1111_1010;
#10 data_in = 8'b1011_1001;
#10 data_in = 8'b1011_1101;
#10 data_in = 8'b1011_1011;
#10 $finish;
endendmodule
仿真測試結(jié)果圖:
從圖中可以看出,仿真測試結(jié)果與預(yù)期一致。
三、奇偶校驗知識拓展之奇偶監(jiān)督碼
奇偶監(jiān)督碼是一種增加二進(jìn)制傳輸系統(tǒng)最小距離的簡單和廣泛采用的方法。例如,單個的奇偶監(jiān)督將使碼的最小距離由一增加到二。
一個二進(jìn)碼字,如果它的碼元有奇數(shù)個1,就稱為具有奇性。例如,碼字“1011010111”有七個1,因此,這個碼字具有奇性。同樣,偶性碼字具有偶數(shù)個1。注意奇性檢測等效于所有碼元的模二加,并能夠由所有碼元的異或運算來確定。對于一個n位字,奇性由式(8-1)給出:
奇性=a0⊕a1⊕a2⊕…⊕an(8-1)
很明顯,用同樣的方式,我們也能夠根據(jù)每一個碼字的零的個數(shù)來構(gòu)成奇偶監(jiān)督。
單個的奇偶監(jiān)督碼可描述為:給每一個碼字加一個監(jiān)督位,用它來構(gòu)成奇性或偶性監(jiān)督。
在一個典型系統(tǒng)里,在傳輸以前,由奇偶發(fā)生器把奇偶監(jiān)督位加到每個字中。原有信息中的數(shù)字在接收機(jī)中被檢測,如果沒有出現(xiàn)正確的奇、偶性,這個信息標(biāo)定為錯誤的,這個系統(tǒng)將把錯誤的字拋掉或者請求重發(fā)。注意,用單個的奇偶監(jiān)督碼僅能檢出奇數(shù)個碼元的錯誤。
經(jīng)由小編的介紹,不知道你對FPGA奇偶校驗是否充滿了興趣?如果你想對FPGA奇偶校驗有更多的了解,不妨嘗試度娘更多信息或者在我們的網(wǎng)站里進(jìn)行搜索哦。