【芯片设计- RTL 数字逻辑设计入门 10 -- 奇偶校验实现】

文章目录

    • 奇偶校验
      • 单目运算符(|,^,&)
      • verilog code
      • verilog code
      • testbench code
    • 问题总结

奇偶校验

现在需要对输入的32位数据进行奇偶校验,根据sel输出校验结果。
在这里插入图片描述

实际上这里做的是奇偶检测,如果是奇数个 1 则结果为 1,使用单目运算符 ^ 即可。

输入描述

  • 输入信号 data_in, sel
  • 类型 wire

输出描述

  • 输出信号 q
  • 类型 wire

单目运算符(|,^,&)

假设 d = 3'b100;则:

e =& d= d[2] & d[1] & d[0];= 1'b0; 
f =^ d= d[2] ^ d[1] ^ d[0];= 1'b1

所以:

  • e =& d; ----> 可以用于检测是否为全1(是否含0)
  • f =^ d; -----> 奇偶校验
  • g =| d; -----> 检测是否全为0

verilog code

在Verilog中,^运算符作为单目运算符时的功能是"按位异或",作为双目运算符时的功能是"异或"。当data_in是一个8 bit,的数据时:
^data_in = data_in[0] ^ data_in[1] ^ data_in[2] ^ data_in[3] ^ data_in[4] ^ data_in[5] ^ data_in[6] ^ data_in[7]

简言之,就是^bus,就是检查bus中1的个数是否是成对的,如果成队,那就是为0,也就是偶校验,所以奇校验刚好取反。

此外,还会根据 sel 的值来选择 校验结果是正常输出还是取反输出。

verilog code

在这里插入图片描述

testbench code

在这里插入图片描述在这里插入图片描述

问题总结

在使用VCS 仿真是一开始出现了如下面问题:
在这里插入图片描述
从波形上可以看到数据总线上是没有数据输入的,导致了 out 信号输出的问题,所以在复位以后就需要将数据总线赋值,这里在 testbench 中是将 数据总线在复位后赋值为0,最后结果如下图:
在这里插入图片描述

sel == 1'b1

  • 当有奇数个1 时,校验结果为 1 ,例如当 data 为 7,e, 1 时(校验结果在时钟上升沿时变化);
  • 当有偶数个1 时,校验结果为 0 ,例如当 data 为 0,6 时;

sel == 1'b0 时输出结果正好相反。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/672424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#入门详解_01_课程简介、C#语言简介、开发环境和学习资料的准备

文章目录 1. 课程简介2. C#语言简介3.开发环境与学习资料 1. 课程简介 开设本课程的目的 传播C#开发的知识,让更多的人有机会接触到软件开发行业引导有兴趣或者想转行的朋友进入软件开发行业 课程内容 完整讲述C#语言在实际软件开发中的应用采用知识讲述加实例程序…

VR视频编辑解决方案,全新视频内容创作方式

随着科技的飞速发展,虚拟现实(VR)技术正逐渐成为各个领域的创新力量。而美摄科技,作为VR技术的引领者,特别推出了一套全新的VR视频编辑方案,为企业提供了一个全新的视频内容创作方式。 美摄科技的VR视频编…

8.0 Zookeeper 四字命令教程详解

zookeeper 支持某些特定的四字命令与其交互,用户获取 zookeeper 服务的当前状态及相关信息,用户在客户端可以通过 telenet 或者 nc(netcat) 向 zookeeper 提交相应的命令。 安装 nc 命令: $ yum install nc …

Linux命令-atrm命令(删除待执行任务队列中的指定任务)

说明 atrm命令 用于删除待执行任务队列中的指定任务。 语法 atrm(选项)(参数)选项 -V:显示版本号参数 任务号:指定待执行队列中要删除的任务 示例 删除已经排队的任务 # 显示当前已经设置的任务 atq 2 Mon May 17 08:00:00 2010 a root 1 Sat May…

OpenAI Gym高级教程——解决实际问题与研究探索

Python中的OpenAI Gym高级教程:解决实际问题与研究探索 导言 OpenAI Gym是一个强化学习的标准工具包,可用于解决各种实际问题和进行研究探索。本教程将深入探讨如何利用OpenAI Gym解决实际问题,并进行相关研究。我们将使用代码示例来说明这…

thinkphp6入门(19)-- 中间件向控制器传参

可以通过给请求对象赋值的方式传参给控制器&#xff08;或者其它地方&#xff09;&#xff0c;例如 <?phpnamespace app\middleware;class Hello {public function handle($request, \Closure $next){$request->hello ThinkPHP;return $next($request);} } 然后在控制…

改进神经网络

Improve NN 文章目录 Improve NNtrain/dev/test setBias/Variancebasic recipeRegularizationLogistic RegressionNeural networkother ways optimization problemNormalizing inputsvanishing/exploding gradientsweight initializegradient checkNumerical approximationgrad…

python flask 魔术方法

魔术方法作用_init_对象的初始化方法_class_返回对象所属的类_module_返回类所在的模块_mro_返回类的调用顺序&#xff0c;可以找到其父类&#xff08;用于找父类&#xff09;_base_获取类的直接父类&#xff08;用于找父类&#xff09;_bases_获取父类的元组&#xff0c;按它们…

Adaptec RAID 控制器arcconf 管理命令的常见的查询操作

ARCCONF命令行工具可以在服务器正常运行过程中对Adaptec RAID卡进行带内在线查询配置操作&#xff0c;无需重启服务器&#xff0c;十分方便快捷&#xff0c;本文讲解常见的查询操作。 一、查询流程 二、常见指令 1、查询已安装的RAID卡清单 [rootlocalhost ~]# ./arcconf-lin…

CGAL::2D Arrangements-5

5.Arrangement无界曲线 前几章中构建和操作的所有Arrangement都只由线段引起&#xff0c;线段尤其是有界曲线。这样的Arrangement总是具有一个包含所有其他Arrangement特征的unbounded face。在本节中&#xff0c;我们将解释如何构造无界曲线的Arrangement。为了简化说明&…

edge浏览器无法显示latex公式

1&#xff09;从镜像下载 https://hub.nuaa.cf/emichael/texthings/archive/refs/tags/v1.1.5.zip TeX All the Things插件压缩包&#xff08;目前最新版是1.1.5版&#xff09; 2&#xff09;下载到本地后解压为文件夹 3&#xff09;打开edge浏览器管理扩展页面&#xff0c…

DolphinScheduler本地安装

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问&#xff0c;结合内…

【Web - 框架 - Vue】随笔 - 通过`CDN`的方式使用`VUE 2.0`和`Element UI`

通过CDN的方式使用VUE 2.0和Element UI VUE 网址 https://cdn.bootcdn.net/ajax/libs/vue/2.7.16/vue.js源码 https://download.csdn.net/download/HIGK_365/88815507测试 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset&quo…

储氢材料行业调研:市场需求将不断增长

近年来&#xff0c;热度持续升温的碳中和、碳达峰话题&#xff0c;使得氢能及其相关产业被高度关注&#xff0c;而决定氢能应用关键的是安全、高效的氢能储运技术。在氢能需求不断增长的情况下&#xff0c;储氢材料行业是市场也将不断发展。在氢能需求不断增长的情况下,储氢材料…

如何实现Vuex本地存储

在前端开发中&#xff0c;Vuex是一款非常强大的状态管理工具&#xff0c;但是默认情况下&#xff0c;Vuex的数据是存储在内存中的&#xff0c;刷新页面后数据将会丢失。这往往会导致用户在刷新页面后需要重新登录等繁琐的操作。本篇文章将教会您如何实现Vuex的本地存储&#xf…

从零开始手写mmo游戏从框架到爆炸(一)— 开发环境

一、创建项目 1、首先创建一个maven项目&#xff0c;pom文件如下&#xff1a; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0…

【JavaEE Spring】Spring 原理

Spring 原理 1. Bean的作⽤域1.1 概念1.2 Bean的作⽤域 2. Bean的⽣命周期 1. Bean的作⽤域 1.1 概念 在Spring IoC&DI阶段, 我们学习了Spring是如何帮助我们管理对象的. 通过 Controller , Service , Repository , Component , Configuration ,Bean 来声明Bean对象。通…

std::function与回调函数的区别

单纯的函数指针并没有捕捉上下文的能力&#xff0c;这里的上下文就是指代码依赖的数据&#xff0c;你不得不自己动手构造出一个结构体用来存储代码依赖的上下文。 在C中你没有办法单纯的利用函数指针指向对象的成员函数&#xff0c;就是因为函数指针没有办法捕捉this(指向对象…

img图片鉴权附加token

<img 标签预览图片如何携带token进行验证 前言 vue中给img的src添加token 因项目中安全测评的需要&#xff0c;请求图片时要求添加token&#xff0c;方法如下&#xff1a;在项目中循环渲染的img标签中的图片要显示&#xff0c;src需要加请求头token&#xff08;正常情况下&…

Gartner 2024年十大战略技术趋势解读

最近Gartner发布了2024年十大战略技术趋势报告&#xff0c;这十大技术趋势中有七项是关于AI技术及其技术应用相关。下面我们做一个简单解读。 首先&#xff0c;报告中着重强调了AI信任、风险和安全管理的重要性。企业需要对AI应用实施信任、风险和安全管理&#xff0c;以提高决…