FPGA奇偶校驗設計和代碼實現將是下述內容的主要介紹內容,通過這篇文章,小編希望大家可以對FPGA奇偶校驗的相關情況以及信息有所認識和了解,詳細內容如下。
一、奇偶校驗原理
奇偶校驗是一種基本的數據校驗方式,其原理是在數據的尾部添加一個位,使得該位和數據中所有1的個數之和為奇數或偶數。由于校驗位的加入,使得數據傳輸中一旦數據錯誤就能夠被檢測出來,從而保證了數據的正確性。
奇偶校驗的優(yōu)點是簡單、快速,不需要大量計算。但是奇偶校驗只能檢測出錯誤,不能糾正錯誤,因此在實際應用中很少單獨使用,通常與其它更加強大的校驗方式結合起來使用。
二、FPGA奇偶校驗設計
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ān)督碼
奇偶監(jiān)督碼是一種增加二進制傳輸系統(tǒng)最小距離的簡單和廣泛采用的方法。例如,單個的奇偶監(jiān)督將使碼的最小距離由一增加到二。
一個二進碼字,如果它的碼元有奇數個1,就稱為具有奇性。例如,碼字“1011010111”有七個1,因此,這個碼字具有奇性。同樣,偶性碼字具有偶數個1。注意奇性檢測等效于所有碼元的模二加,并能夠由所有碼元的異或運算來確定。對于一個n位字,奇性由式(8-1)給出:
奇性=a0⊕a1⊕a2⊕…⊕an(8-1)
很明顯,用同樣的方式,我們也能夠根據每一個碼字的零的個數來構成奇偶監(jiān)督。
單個的奇偶監(jiān)督碼可描述為:給每一個碼字加一個監(jiān)督位,用它來構成奇性或偶性監(jiān)督。
在一個典型系統(tǒng)里,在傳輸以前,由奇偶發(fā)生器把奇偶監(jiān)督位加到每個字中。原有信息中的數字在接收機中被檢測,如果沒有出現正確的奇、偶性,這個信息標定為錯誤的,這個系統(tǒng)將把錯誤的字拋掉或者請求重發(fā)。注意,用單個的奇偶監(jiān)督碼僅能檢出奇數個碼元的錯誤。
經由小編的介紹,不知道你對FPGA奇偶校驗是否充滿了興趣?如果你想對FPGA奇偶校驗有更多的了解,不妨嘗試度娘更多信息或者在我們的網站里進行搜索哦。





