色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

奇偶校驗器的設計方法和特點

Hack電子 ? 來源:Hack電子 ? 2023-09-05 10:40 ? 次閱讀

bc659b9a-4b94-11ee-a25d-92fbcf53809c.png

奇偶校驗是一種簡單、實現代價小的檢錯方式,常用在數據傳輸過程中。對于一組并行傳輸的數據(通常為8比特),可以計算岀它們的奇偶校驗位并與其一起傳輸。接收端根據接收的數據重新計算其奇偶校驗位并與接收的值進行比較,如果二者不匹配,那么可以確定數據傳輸過程中岀現了錯誤;如果二者匹配,可以確定傳輸過程中沒有出錯或者出現了偶數個錯誤(出現這種情況的概率極低)。

需要指出當出現偶數個錯誤時,奇偶校驗是無法檢測此時電路出現傳輸錯誤。例如,發送的數據為8’b1010_1011此時計算出的偶校驗值是1。如果在傳輸中后兩位從11跳變為00,那么此時接收到的數據為8’b10100100,接收的偶校驗值仍然為1。對接收的數據進行偶校驗計算,得到的結果仍然為1,這與收到的校驗值是相同的,接收電路無法檢測出接收數據中岀現的錯誤。

奇偶校驗位有兩種類型:偶校驗位與奇校驗位。

以偶校驗位來說,如果一組給定數據位中1的個數是奇數,補一個bit為1,使得總的1的個數是偶數。例:0000001, 補一個bit為1, 00000011。

以奇校驗位來說,如果給定一組數據位中1的個數是奇數,補一個bit為0,使得總的1的個數是奇數。例:0000001, 補一個bit為0, 00000010。

bc8e3b4a-4b94-11ee-a25d-92fbcf53809c.png

簡單理解奇偶校驗:

奇校驗:原始碼流+校驗位 總共有奇數個1

偶校驗:原始碼流+校驗位 總共有偶數個1

二、XOR

2.1 XOR法

題目:采用XOR法試寫一個發送端奇偶校驗器,在發送端會輸入一段8bit的數據,可以選擇切換奇數校驗或者偶數校驗,并且將校驗值附在末位輸出。

2.2 verilog代碼

//使用XOR法設計奇偶校驗器

module parity_checker01(

input clk,

input rst_n,

input parity_odd,//是否為奇校驗:奇數校驗為1,偶數校驗位0

input [7:0] data_in,//輸入的八位數據

output [8:0] data_out,//輸出的九位數據

output reg even_bit,//偶數校驗碼

output reg odd_bit//計數校驗碼

);

//使用按位異或確定偶數校驗碼和奇數校驗碼

always@(posedge clk or negedge rst_n) begin

if(!rst_n) begin

even_bit <= 1'b0;

odd_bit <= 1'b0;

end

else begin

even_bit <= ^data_in;? ?//偶校驗條件下計算出來的校驗位

odd_bit <= ~(^data_in);//奇校驗條件下計算出來的校驗位

end

end

//組合邏輯完成輸入數據與校驗碼的拼接

assign data_out = parity_odd ? {data_in[7:0],odd_bit}

: {data_in[7:0],even_bit};

endmodule

2.3 Testbench

`timescale 1ns / 1ps//仿真時間單位1ns 仿真時間精度1ps

module parity_checker01_tb();

//信號申明

regclk;

regrst_n;

reg parity_odd;

reg [7:0] data_in;

wire [8:0] data_out;

wire even_bit;

wire odd_bit;

//模塊實例化(將申明的信號連接起來即可)

parity_checker01 u_parity_checker01(

.clk (clk),

.rst_n (rst_n),

.parity_odd (parity_odd),

.data_in (data_in),

.data_out (data_out),

.even_bit (even_bit),

.odd_bit (odd_bit)

);

//生成時鐘信號

always #5 clk = ~clk;

//生成復位信號

//為時鐘信號和復位信號等賦初值

initial begin

clk = 1;

rst_n = 1;

data_in = 0;

parity_odd = 1;

#5 rst_n <= 0;

#5 rst_n <= 1;

data_in = 8'h01;

#20

data_in = 8'hb7;

#20

data_in = 8'h32;

#20

data_in = 8'he9;

#20

data_in = 8'hd3;

end

endmodule

2.4 仿真結果

bcad67ea-4b94-11ee-a25d-92fbcf53809c.png

三、計數器法

3.1 計數器法

題目:采用計數器法試寫一個發送端奇偶校驗器,在發送端會輸入一段8bit的數據,可以選擇切換奇數校驗或者偶數校驗,并且將校驗值附在末位輸出。

3.2 verilog代碼

//使用計數器法設計奇偶校驗器

module parity_checker02(

input clk,

input rst_n,

input parity_odd,//是否為奇校驗:奇數校驗為1,偶數校驗位0

input [7:0] data_in,//輸入的八位數據

output [8:0] data_out,//輸出的九位數據

output reg even_bit,//偶數校驗碼

output reg odd_bit//奇數校驗碼

);

//定義一個三位寬的計數器

reg[2:0] cnt;

//計數器模塊

//輸入數據data_in逢1逐位計數

integer i;

always @(*) begin

cnt = 3'd0;

for (i=0;i<8;i=i+1) begin

if(data_in[i]==1'b1) begin

cnt = cnt + 1;

end

end

end

//計數器校驗模塊

//使用時序邏輯對計數器中的1校驗奇數or偶數

//計數器最低位為奇數,則整體為奇數,反之為偶數

always@(posedge clk or negedge rst_n) begin

if(!rst_n) begin

even_bit <= 1'b0;

odd_bit <= 1'b0;

end

else if(cnt[0] == 1'b1) begin//通過計數器最低位判斷是否為偶數

even_bit <= 1'b1;??

odd_bit <= 1'b0;

end

else begin

even_bit <= 1'b0;

odd_bit <= 1'b1;

end

end

//組合邏輯完成輸入數據與校驗碼的拼接

assign data_out = parity_odd ? {data_in[7:0],odd_bit}

: {data_in[7:0],even_bit};

endmodule

3.3 Testbench

`timescale 1ns / 1ps//仿真時間單位1ns 仿真時間精度1ps

module parity_checker02_tb();

//信號申明

regclk;

regrst_n;

reg parity_odd;

reg [7:0] data_in;

wire [8:0] data_out;

wire even_bit;

wire odd_bit;

//模塊實例化(將申明的信號連接起來即可)

parity_checker02 u_parity_checker02(

.clk (clk),

.rst_n (rst_n),

.parity_odd (parity_odd),

.data_in (data_in),

.data_out (data_out),

.even_bit (even_bit),

.odd_bit (odd_bit)

);

//生成時鐘信號

always #5 clk = ~clk;

//生成復位信號

//為時鐘信號和復位信號等賦初值

initial begin

clk = 1;

rst_n = 1;

data_in = 0;

parity_odd = 1;

#5 rst_n <= 0;

#5 rst_n <= 1;

data_in = 8'h01;

#10

data_in = 8'hb7;

#10

data_in = 8'h32;

#10

data_in = 8'he9;

#10

data_in = 8'hd3;

end

endmodule

仿真結果

bcc71fbe-4b94-11ee-a25d-92fbcf53809c.png

四、總結

奇偶校驗器設計主要思路是通過弄清一組數據中“1”和“0”的數目。若是奇校驗則原始碼流+校驗位總共有奇數個“1”;若是偶校驗則原始碼流+校驗位總共有偶數個“1”。設計方法主要有XOR法和計數器法。XOR法最簡單,只需要對數據使用按位異或,輸出為“0”代表數據中“1”位偶數個;計數器法最直觀,計數器中數值的奇偶性表示對應數據中“1”個數的奇偶。

Tips:判斷計數器是奇數還是偶數主要有判斷data_out[0]和取余數兩種方法,前者綜合后耗損的資源太多不推薦前者。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Verilog
    +關注

    關注

    28

    文章

    1355

    瀏覽量

    110843
  • 計數器
    +關注

    關注

    32

    文章

    2278

    瀏覽量

    95422
  • 奇偶校驗器
    +關注

    關注

    0

    文章

    7

    瀏覽量

    7163
  • 代碼
    +關注

    關注

    30

    文章

    4857

    瀏覽量

    69529

原文標題:FPGA基礎-奇偶校驗器設計

文章出處:【微信號:Hack電子,微信公眾號:Hack電子】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    串口調試助手的奇偶校驗測試方法

    很多串口調試助手感覺奇偶校驗功能都是形同虛設的(我設置奇校驗和偶校驗都能收到數據)。是不是我測試方法有誤呢?串口助手校驗失敗會有什么現象啊?
    發表于 04-28 15:11

    UART中有奇偶校驗位和無奇偶校驗位的數據傳輸是怎樣的?

    例如,我使用 8 位數據傳輸類型。奇偶校驗位共有 3 種類型無奇偶校驗校驗校驗----------------------偶校驗我假設
    發表于 12-08 07:24

    奇偶校驗

    奇偶校驗碼   奇偶校驗碼是一種開銷最小,能發現數據代碼中一位出錯情況的編碼,常用于存儲讀寫檢查,或ASCII字符、其它類
    發表于 10-13 16:42 ?5433次閱讀

    奇偶校驗,奇偶校驗是什么意思

    奇偶校驗,奇偶校驗是什么意思 奇偶校驗定義 為了系統的可靠性,對于位數
    發表于 03-08 17:32 ?2286次閱讀

    奇偶校驗碼,奇偶校驗碼原理是什么?

    奇偶校驗碼,奇偶校驗碼原理是什么? 奇偶校驗碼是奇校驗碼和偶校驗碼的統稱,是一種最基本的檢錯碼。它是由n-1位信息元和1位
    發表于 03-17 17:39 ?6.3w次閱讀

    奇偶校驗_奇偶校驗設計程序

    本內容提供了奇偶校驗_奇偶校驗設計的程序代碼,希望對大家有幫助
    發表于 11-11 10:04 ?5777次閱讀

    stm32串口奇偶校驗

    STM32串口通信使用奇偶校驗的時候應該設置數據位長度9bit,奇偶校驗是硬件完成的,并且stm32用校驗位時,數據位要選9位,8位會出現故障可能。
    的頭像 發表于 07-23 09:26 ?1.1w次閱讀

    stm32 usart奇偶校驗如何配置

    stm32 usart奇偶校驗如何配置?或許你在stm32 usart奇偶校驗過程中會遇到如下一些坑,stm32 usart偶校驗錯誤標志位以及出現偶校驗錯誤,
    的頭像 發表于 07-23 09:55 ?7760次閱讀
    stm32 usart<b class='flag-5'>奇偶校驗</b>如何配置

    STM32的UART奇偶校驗注意

    STM32的UART奇偶校驗注意STM32的UART在初始化時,我們通常用到最多的就是無校驗位,1停止位。但是我在項目中也遇到某些芯片通信用的需要奇校驗或者偶校驗,這里需要特別注意的是
    發表于 12-28 19:10 ?20次下載
    STM32的UART<b class='flag-5'>奇偶校驗</b>注意

    增強FIFO模式下的奇偶校驗

    自昊芯推出專題講解SCI串口通訊奇偶校驗,分為兩期講解,上期主要講解標準SCI模式下的奇偶校驗,本期主要講解增強FIFO模式下的奇偶校驗
    的頭像 發表于 11-02 09:30 ?1194次閱讀

    FPGA奇偶校驗的基本原理及實現方法

    在數字電路中,數據的正確性非常重要。為了保證數據的正確性,在傳輸數據時需要添加一些冗余信息,以便在接收端進行校驗。其中一種常用的校驗方式是奇偶校驗(Parity Check)。本文將介紹奇偶校
    的頭像 發表于 05-14 14:59 ?3275次閱讀
    FPGA<b class='flag-5'>奇偶校驗</b>的基本原理及實現<b class='flag-5'>方法</b>

    什么是奇偶校驗 奇偶校驗的基本原理 奇偶校驗電路什么意思

    什么是奇偶校驗 奇偶校驗的基本原理 奇偶校驗電路什么意思? 奇偶校驗是一種用于檢測二進制數據中錯誤的方法。它的基本原理是在二進制數據的末尾添
    的頭像 發表于 10-17 16:16 ?4036次閱讀

    什么是奇偶校驗電路?奇偶校驗是時序邏輯電路嗎?

    什么是奇偶校驗電路?奇偶校驗是時序邏輯電路嗎? 奇偶校驗電路是一種數字電路,在數據傳輸過程中用于檢測數據是否發生錯誤。在每個數據字節(通常是8位)的最高位添加一位(偶
    的頭像 發表于 10-17 16:16 ?3819次閱讀

    什么是奇校驗和偶校驗?常見的奇偶校驗方式有哪些?

    校驗,以保證正確性。常用的校驗方法奇偶校驗、循環冗余校驗(CRC)、海明碼等。 2. 奇偶校驗是一種最簡單的
    的頭像 發表于 10-17 16:28 ?1.1w次閱讀

    奇偶校驗和crc校驗的區別 CRC校驗奇偶校驗之間有什么關系?

    奇偶校驗和crc校驗的區別 CRC校驗奇偶校驗之間有什么關系? 奇偶校驗和 CRC(Cyclic Redundancy Check)
    的頭像 發表于 10-17 16:28 ?3587次閱讀
    主站蜘蛛池模板: 妻子+免费观看完整 | 免费成年人在线视频 | 91精品福利一区二区 | 伊人AV一区二区三区夜色撩人 | 在线免费看a | 97精品国产亚洲AV超碰 | 狠狠色丁香久久婷婷综合_中 | 拔擦拔擦8X永久华人免费播放器 | 伊人国产在线播放 | 国产成人综合在线视频 | 青柠在线观看免费高清电视剧荣耀 | 欧美乱妇狂野欧美在线视频 | 亚洲日韩有码无线免费 | 精品无码国产AV一区二区三区 | 亚洲精品有码在线观看 | 综合久久伊人 | 国产一区二区在线免费观看 | 曰批国产精品视频免费观看 | 动漫人物差差差30分钟免费看 | 亚洲国产成人在线视频 | 男女作爱在线播放免费网页版观看 | 先锋资源久久 | 国产精品视频在线自在线 | 久久国语精品 | 亚洲 天堂 欧美 日韩 国产 | 日韩吃奶摸下AA片免费观看 | 日日噜噜夜夜躁躁狠狠 | 啦啦啦WWW在线观看免费高清版 | 扒开美女下面粉嫩粉嫩冒白浆 | 日本一本免费线观看视频 | 精品AV无码一二三区视频 | 亚洲日韩国产成网站在线 | 免费人成网站在线观看10分钟 | 日本A级作爱片金瓶双艳 | 7723日本高清完整版在线观看 | 欧美区 bt| 妖精视频在线观看高清 | 青草影院内射中出高潮-百度 | 国产成人一区二区三中文 | 亚洲成a人片777777久久 | 久久理伦片琪琪电影院 |