8位數據的奇偶校驗verilog程序_zt


利用Verilog語言實現對一個8位數據進行奇偶檢驗,具體方法如下,
實現奇偶檢驗的算法就是,如果是偶校驗,只要將該8位數據第一位和第二位進行異或,然后將得到的結果和第三位異或,依次下去,直到和第七位異或,
這樣得到的最后結果,就是偶校驗位;如果是奇校驗,將上面的偶校驗位取反即可。下面的一段小程序就是實現該功能的代碼。


module modelsim_test (even_bit,odd_bit,a);
 input[7:0] a;
 output even_bit,odd_bit;
 assign even_bit = ^a;
 assign odd_bit = ~even_bit;
endmodule


然后利用modelsim測試一下得到波形如下圖。


可以看到實現了奇偶校驗的效果。但是一直對,assign even_bit = ^a;這段不明白。
^是按位異或,是二目運算符,這里怎么只用一個操作數呢?

其實在verilog中,與,或,非,異或,同或,這5個運算符,除了非以外,其他4個都是二目運算符,也即是需要兩個操作數,然后中間加上相應的運算符。

但是這里有一種稱作,一元約減運算符,就是說,與,或,異或,同或,這4個運算符可以作為一元約減運算符,也即是只需要一個操作數,例如:even_bit = ^a;
不過運算的過程,和二目運算符不同了,一元約減運算符的運算過程是:首先將操作數 的第一位和第二位進行與、或、非運算;然后再將運算結果和第三位進行與、或、非運算; 依次類推直至最后一位。
就是說,assign even_bit = ^a;等效於 assign even_bit = a[0]^a[1]^a[2]^a[3]^a[4]^a[5]^a[6]^a[7];


最后提到一下C語言 &=^=|=運算符,例如:b^=a;等效於b=b^a;這個和上面提到的,不是同一個東西,注意不要混淆。我第一次看到那個語句的時候,就是利用C語言的方式來理解的,百思不得其解。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM