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