日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

牛客网-Verilog篇

發布時間:2023/12/14 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客网-Verilog篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

VL3 奇偶校驗

原題鏈接

1.原題復現

2.思路以及代碼

以前做過HDLBits,也是有相關的奇偶校驗題目,但是被遺忘的差不多啦,特此找了一篇博客,重新學習一下奇偶校驗的相關知識:

參考的相關博客為:論述:Verilog中的奇偶校驗

用自己的話大概來總結下:
1.首先要明白奇偶校驗的定義:
2. 奇偶校驗的工作原理:
以 8位的輸入 data_in 為例子:

data_in二進制碼中“1”的個數^data_in的值偶校驗位的值
奇數11
偶數00

探究^data_in和偶校驗值之間的關系:
可以發現,當作為單比特數據進行異或運算時候,可以等價理解為:k個一比特數據的異或運算可以被視為"k個一比特數據在不考慮進位和溢出問題時的求和運算"。
即^data_in和偶校驗位之間的關系可以理解為:
對data_in的二進制碼中所有的比特位進行不考慮進位或者溢出問題的求和:

  • 如果求和最低位的結果為1:即(^data_in)的結果為1,說明data_in的1的個數為奇數,因此偶校驗位為1
  • 如果求和最低位的結果為0:即(^data_in)的結果為0,說明data_in的1的個數為偶數,因此偶校驗位為0.

針對于奇校驗,應該比較容易理解:數據和校驗位如果滿足偶校驗的要求的話,那么數據和取反后的校驗位合起來能滿足奇校驗的要求。
也就是 assign odd_bit = ~even_bit 的原理出處。

據此,再次給出參考博客寫好的針對數據進行奇偶校驗時候的詳細Verilog模塊代碼:

module generate_parity_bit #(parameter DATA_WIDTH = 8,parameter PARITY_TYPE = "even parity" //允許的取值:"even parity""odd parity" ) (input [DATA_WIDTH-1:0] data_in,output parity_bit_out );wire even_bit;//偶校驗需求下計算出來的校驗位 wire odd_bit; //奇校驗需求下計算出來的校驗位assign even_bit = ^data_in; assign odd_bit = ~even_bit;if(PARITY_TYPE == "even parity") beginassign parity_bit_out = even_bit; end else beginassign parity_bit_out = odd_bit; endendmodule

-最后給出 牛客網上相關題目的代碼解析:

`timescale 1ns/1ns module odd_sel( input [31:0] bus, input sel, output check ); //*************code***********////奇校驗wire even_bit ;assign even_bit = ^bus;wire odd_bit;assign odd_bit = ~even_bit;reg check_mid;assign check = sel? even_bit:odd_bit;//偶校驗//*************code***********// endmodule

總結

以上是生活随笔為你收集整理的牛客网-Verilog篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。