在數(shù)字電路中,數(shù)據(jù)的正確性非常重要。 為了保證數(shù)據(jù)的正確性,在傳輸數(shù)據(jù)時需要添加一些冗余信息,以便在接收端進(jìn)行校驗。 其中一種常用的校驗方式是奇偶校驗(Parity Check)。 本文將介紹奇偶校驗的基本原理及實現(xiàn)方法,并給出FPGA實現(xiàn)的代碼示例。
一、奇偶校驗原理
奇偶校驗是一種基本的數(shù)據(jù)校驗方式,其原理是在數(shù)據(jù)的尾部添加一個位,使得該位和數(shù)據(jù)中所有1的個數(shù)之和為奇數(shù)或偶數(shù)。 由于校驗位的加入,使得數(shù)據(jù)傳輸中一旦數(shù)據(jù)錯誤就能夠被檢測出來,從而保證了數(shù)據(jù)的正確性。
奇偶校驗可以采用兩種方式:奇校驗和偶校驗。
奇校驗::全部數(shù)據(jù)和該校驗位中“1”的總數(shù)為奇數(shù),則表示數(shù)據(jù)無誤,否則數(shù)據(jù)錯誤
偶校驗:全部數(shù)據(jù)和該校驗位中“1”的總數(shù)為偶數(shù),則表示數(shù)據(jù)無誤,否則數(shù)據(jù)錯誤
奇偶校驗的優(yōu)點是簡單、快速,不需要大量計算。 但是奇偶校驗只能檢測出錯誤,不能糾正錯誤,因此在實際應(yīng)用中很少單獨使用,通常與其它更加強(qiáng)大的校驗方式結(jié)合起來使用。
以輸出一組16bit數(shù)據(jù)為“1100_0011_1101_0100”為例,這組數(shù)據(jù)中有8個“1”。
如果使用奇校驗,則校驗位為1,傳輸數(shù)據(jù)實際為16bit數(shù)據(jù)+1bit奇校驗位,即“1100_0011_1101_0100_1”。
如果使用偶校驗,則校驗位為0,傳輸數(shù)據(jù)實際為16bit數(shù)據(jù)+1bit偶校驗位,即“1100_0011_1101_0100_0”。
二、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 even = ^data_in;
assign odd = ~even;
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 begin
data_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;
end
endmodule
仿真測試結(jié)果圖:
從圖中可以看出,仿真測試結(jié)果與預(yù)期一致。
三、總結(jié)
奇偶校驗算法很簡單,實現(xiàn)起來也很容易,本文提供了一個比較簡單的方法實現(xiàn),大家可以參考下。
-
FPGA
+關(guān)注
關(guān)注
1643文章
21954瀏覽量
613943 -
仿真
+關(guān)注
關(guān)注
51文章
4234瀏覽量
135290 -
數(shù)字電路
+關(guān)注
關(guān)注
193文章
1637瀏覽量
81559 -
代碼
+關(guān)注
關(guān)注
30文章
4886瀏覽量
70239 -
奇偶校驗
+關(guān)注
關(guān)注
0文章
15瀏覽量
8303
發(fā)布評論請先 登錄
串口調(diào)試助手的奇偶校驗測試方法
奇偶校驗碼
奇偶校驗碼,奇偶校驗碼原理是什么?
stm32串口奇偶校驗
stm32 usart奇偶校驗如何配置

奇偶校驗的優(yōu)缺點及奇偶校驗代碼實現(xiàn)

增強(qiáng)FIFO模式下的奇偶校驗
介紹FPGA奇偶校驗的基本原理及實現(xiàn)方法

奇偶校驗器的設(shè)計方法和特點

評論