当前位置: 首页 > article >正文

牛客网Verilog刷题——VL3

牛客网Verilog刷题——VL3

  • 题目
  • 答案

题目

  要求设计一个奇偶校验模块,根据sel信号选择进行奇校验还是偶校验(sel=0,进行偶校验;sel=1,进行奇校验),根据输入的32位数据生成1位的奇偶校验位。
在这里插入图片描述
在这里插入图片描述
  奇偶校验位的生成与利用奇偶校验位进行校验的原理如下:
  在发送端,根据奇校验还是偶校验来说生成奇偶校验位。

  • 奇校验:确保传输的数据(数据位+校验位)中“1”的个数为奇数个。如果数据位中“1”的个数为奇数个,校验位则为0,此时数据位加校验位中“1”的个数还是奇数个;如果数据位中“1”的个数为偶数个,校验位则为1,此时数据位加校验位中“1”的个数变为奇数个。
  • 偶校验:确保传输的数据(数据位+校验位)中“1”的个数为偶数个。如果数据位中“1”的个数为奇数个,校验位则为1,此时数据位加校验位中“1”的个数变为偶数个;如果数据位中“1”的个数为偶数个,校验位则为0,此时数据位加校验位中“1”的个数还是奇数个。

  而在接收端,计算接收到的数据(数据位+校验位)中“1”的个数是奇数个还是偶数个,来判断接收到的数据是否正确。

  • 奇校验:采用奇校验方式,若数据中“1”的个数为奇数个,接收数据正确;若数据中“1”的个数为偶数个,则接收数据有误。
  • 偶校验:采用偶校验方式,若数据中“1”的个数为偶数个,接收数据正确;若数据中“1”的个数为奇数个,则接收数据有误。

  奇偶校验在很多设计中都有用到,比如串口传输协议中等。奇偶校验只能达到检错的目的,并不能实现纠错。

  另外,在数电中,我们学过:奇数个1异或得到1,偶数个1异或得到0,根据该性质,可以用异或运算符实现奇偶校验。

答案

`timescale 1ns/1ns
module odd_sel(
input [31:0] bus,
input sel,
output check
);
//*************code***********//
wire check_temp;
assign check_temp = ^bus;

reg check_t;
always @(*)
  if(sel) 
    check_t <= check_temp;
  else
    check_t <= ~check_temp;

assign check = check_t;
//*************code***********//
endmodule

http://www.kler.cn/a/13715.html

相关文章:

  • 硬件语言Verilog HDL牛客刷题day10 华W部分 和 DJ部分
  • Qt网络编程 (udp广播和接收例)
  • Python函数 — 递归函数
  • jmeter的界面介绍
  • 微信小程序从零开始经验贴(含详细资料及链接)
  • vite的环境变量配置详解
  • Docker常用命令详解,有这些足够了
  • Prometheus+node_exporter+Grafana+夜莺 监控部署
  • 春秋云境:CVE-2022-28060(SQL注入)
  • 瀚高股份吕新杰:创新开源双驱动,躬耕国产数据库
  • NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
  • 图形学大纲
  • 3.5 方程组的状态与解的迭代改善
  • Python爬虫
  • 设计模式取舍之道:代码复杂度权衡
  • Mac电脑安装apktool工具包
  • java中Math函数使用
  • 软件工程——软件危机
  • 【AI生产力工具】ChatPDF:将 PDF 文档转化为交互式阅读体验的利器
  • C++ STL常用方法概述