牛客网——verilog练习题思路汇总

news2025/8/3 15:30:22

目录

基础语法

VL1 四选一多路器

VL2 异步复位的串联T触发器

VL3 奇偶校验

VL4 移位运算与乘法

VL5 位拆分与运算

VL6 多功能数据处理器

VL7 求两个数的差值

VL8 使用generate…for语句简化代码

VL9 使用子模块实现三输入数的大小比较

VL10 使用函数实现数据大小端转换

组合逻辑

VL11 4位数值比较器电路

VL12 4bit超前进位加法器电路

时序逻辑

VL21 根据状态转移表实现时序电路

VL22 根据状态转移图实现时序电路

VL23 ROM的简单实现

VL24 边沿检测


基础语法

VL1 四选一多路器

思路1:case语句(4路以上用case更方便)

case(sel)
    2'b00: mux_out = d3;
    2'b01: mux_out = d2;
    2'b10: mux_out = d1;
    2'b11: mux_out = d0;
    default:mux_out = 2'bxx;
endcase

思路2:三目运算符

assign mux_out = (sel==2'd0)?d3:((sel==2'd1)?d2:((sel==2'd2)?d1:(d0)));

VL2 异步复位的串联T触发器

T触发器功能:

        当输入端T=0时,时钟脉冲到达触发器保持原态不变;

        当输入端T=1时,每来一个时钟脉冲触发器的状态翻转一次。

信号示意图:

VL3 奇偶校验

奇偶校验概念:

奇校验:就是让原有数据序列中(包括你要加上的一位)1的个数为奇数

1000110(0)你必须添0这样原来有3个1已经是奇数了所以你添上0之后1的个数还是奇数个。

偶校验:就是让原有数据序列中(包括你要加上的一位)1的个数为偶数

1000110(1)你就必须加1了这样原来有3个1要想1的个数为偶数就只能添1了。  

缺点:1位误码能检测出,2位及2位以上检测不出来,而且不能纠错。

思路:^a操作,可以检测a中的“1”是否为奇数;

           若a=100,^a=1^0^0=1,则1的数量为奇数,

           若a=1100,^a=1^1^0^0=0,则1的数量为偶数。

assign check_ji = ^bus; //每个位相异或,
assign check = (sel == 1) ? check_ji : ~check_ji;

VL4 移位运算与乘法

在硬件中进行乘除运算比较消耗资源,因此我们采用移位操作。

out <= d_reg + {d_reg ,1'b0};     //1+2=3

out <= d_reg + {d_reg,1'b0} + {d_reg,2'b0};     //1+2+4=7

out <= {d_reg,3'b0};      //8*d_reg

vivado仿真图:

VL5 位拆分与运算

注意:

        wire变量只能用于组合逻辑中的assign语句(组合逻辑的always语句中不能用);

        reg型变量用于时序逻辑中的always语句。

        所以要注意看 该题设定好了输出变量类型,意味着要用下图设计方法。 

VL6 多功能数据处理器

         if else即可完成

VL7 求两个数的差值

        if else即可完成,要注意if eles的赋值语句超过1个,就要加begin...end

VL8 使用generate…for语句简化代码

1、作用:generate…for是用于简化代码,

2、generate…for和for循环的区别:

        generate-for只针对于module、regnet、assign、always、parameter、function.initial.task等语匀或煮模块,而g只针对打美例化的踊坎

3、使用方式:

 4、举例模板:

 5、本题实现代码

VL9 使用子模块实现三输入数的大小比较

VL10 使用函数实现数据大小端转换

组合逻辑

VL11 4位数值比较器电路

VL12 4bit超前进位加法器电路

时序逻辑

VL21 根据状态转移表实现时序电路

VL22 根据状态转移图实现时序电路

VL23 ROM的简单实现

VL24 边沿检测

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

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

相关文章

智慧城市建设的原则及规划目标

一、建设原则 智慧城市建设过程中必须把握以下原则&#xff1a; &#xff08;一&#xff09; 遵循市信息化建设总体规划与发展框架。遵循 “十二五” 信息化规划确定的“紧紧围绕国家西部大开发战略目标&#xff0c;强化信息技术和信息化在我市加快推进新型工业化进程中的战略…

数据库周期表整体设计方案

这是学习笔记的第 2442篇文章数据库周期表是我们自定义的名称&#xff0c;从数据视角来说&#xff0c;通常会有三类数据表&#xff1a;字典表&#xff0c;状态表&#xff0c;日志表&#xff0c;其中周期表从定位上更侧重于日志表。为什么叫周期表&#xff0c;主要是因为日志数据…

看着2022年世界杯,我无比怀念98世界杯

作者&#xff1a;朱金灿 来源&#xff1a;clever101的专栏 为什么大多数人学不会人工智能编程&#xff1f;>>> 断断续续看了2022年世界杯部分比赛&#xff0c;我无比怀念1998年世界杯&#xff01;该文权当本人的一点回忆文字&#xff0c;没有经过严谨认证&#xff0…

2023年第三届智能制造与自动化前沿国际会议(CFIMA 2023)

2023年第三届智能制造与自动化前沿国际会议(CFIMA 2023) 重要信息 会议网址&#xff1a;www.cfima.org 会议时间&#xff1a;2023年6月9-11日 召开地点&#xff1a;中国大理 截稿时间&#xff1a;2023年4月20日 录用通知&#xff1a;投稿后2周内 收录检索&#xff1a;EI,…

IDEA创建父子项目

一、搭建父项目 创建第一个maven项目作为父项目 创建完之后建议删掉src文件夹 pom.xml <packaging>POM</packaging><!--依赖版本的锁定--><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</pr…

Linux-Nginx前端项目部署

目录 一、Nginx简介 负载均衡 动静分离 二、Nginx安装 Tomcat负载均衡 准备2个tomcat 修改此三处 修改后保存 启动两个Tomcat 修改Tomcat主界面​编辑 Nginx配置 查看nginx.conf配置 添加/更改配置​编辑 重启Nginx服务&#xff0c;让配置生效 出现权限问题 测试N…

计算机组成原理4小时速成:I/O系统,IO指令,编址方式,串行并行,程序查询传送,中断程序传送,DMA传送,接口组成

计算机组成原理4小时速成&#xff1a;I/O系统&#xff0c;IO指令&#xff0c;编址方式&#xff0c;串行并行&#xff0c;程序查询传送&#xff0c;中断程序传送&#xff0c;DMA传送&#xff0c;接口组成 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#x…

verilog generate

Verilog 生成块generate块允许乘以模块实例或执行任何模块的条件实例化。它提供了基于 Verilog 参数构建设计的能力。当需要多次重复相同的操作或模块实例&#xff0c;或者必须根据给定的 Verilog 参数有条件地包含某些代码时&#xff0c;这些语句特别方便。generate块不能包含…

centos7 clamav 杀毒软件安装

壹&#xff1a;编译安装 1&#xff0c;官网获取源码包 clamav官网地址 2&#xff0c;创建clamav 用户和存放病毒库目录 a, 创建clamav 用户和用户组 groupadd clamav && useradd -g clamav clamav && id clamavb,日志存放目录 mkdir -p /henan/clamav/lo…

Spring中的ApplicationContext所体现出来的工厂模式

Spring初体验 通常我们写代码时&#xff0c;先定义一个Class&#xff0c;然后再别的地方实例化&#xff0c;再进行调用&#xff0c;比如下边的Hello World的例子&#xff0c;类Hello有一个say()方法&#xff0c;用于打印出“Hello World”的字符串&#xff0c;另一个类App&…

python和R绘制箱线图+抖动点

python和R绘制箱线图抖动点 散点箱线图 IPCC AR6 https://www.ipcc.ch/ 通过散点展示数据的直观分布 x轴刻度标签如果是“连续”数据&#xff0c;可添加渐变背景。通过渐变来体现升温幅度&#xff0c;美观形象。 python版本&#xff1a; 先手搓数据&#xff1a; import pan…

【构建ML驱动的应用程序】第 11 章 :监控和更新模型

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

c++11 unique_lock 使用

我们知道c11 提供了很多的类模板供我们使用&#xff0c;其中就有 lock_guard&#xff0c;这个用法也很简单&#xff0c;像这样&#xff1a; std::mutex m_mutex; std::lock_guard<std::mutex> guard(m_mutex); mutex 的 lock 和 unlock 完全是自动的&#xff0c;无需我…

新鲜出炉|基于深度学习的运维日志领域新进展

作者&#xff1a;云智慧算法工程师 Hugo Guo 运维日志领域研究方向主要包含异常日志检测、日志模式解析、日志内容分类、日志告警等。本篇文章介绍了热门异常检测模型 DeepLog、A2Log 等模型&#xff0c;以及云智慧自研模型 Translog 等。与此同时&#xff0c;在文章最后介绍了…

springboot自定义starter实践

创建一个spring项目 仿照spring的规范&#xff0c;artifact命名为xxx-spring-boot-starter 按需添加必要的依赖 这里只作为测试&#xff0c;就按最低的需求来只勾选如下三个 lombok、spring-boot-configuration-processor、spring-boot-autoconfigure 默认生成的项目结构如下…

使用HuggingFace实现 DiffEdit论文的掩码引导语义图像编辑

在本文中&#xff0c;我们将实现Meta AI和Sorbonne Universite的研究人员最近发表的一篇名为DIFFEDIT的论文。对于那些熟悉稳定扩散过程或者想了解DiffEdit是如何工作的人来说&#xff0c;这篇文章将对你有所帮助。 什么是DiffEdit? 简单地说&#xff0c;可以将DiffEdit方法…

【论文解读】Self-Explaining Structures Improve NLP Models

&#x1f365;关键词&#xff1a;性能提升、文本分类、信息推理 &#x1f365;发表期刊&#xff1a;arXiv 2020 &#x1f365;原始论文&#xff1a;https://arxiv.org/pdf/2012.01786.pdf &#x1f365;代码链接https://github.com/ShannonAI/Self_Explaining_Structures_Impro…

Java内部类

Java当中内部类主要有4种&#xff0c;分别是静态内部类、实例内部类/非静态内部类、局部内部类&#xff08;几乎不用&#xff09;、匿名内部类。静态内部类&#xff1a;被static修饰的内部成员类 ①在静态内部类只能访问外部类中的静态成员 ②创建静态内部类对象时&#xff0c;…

PB 2019 R3 MSOLEDBSQL SQL Server not available in Database Profiles

pb2019 pb2021,安装SQL OLEDB驱动时的注意事项&#xff1a; I installed PB 2019 R3, but when I go to the Database Profiles Window, MSOLEDBSQL SQL Server is not listed. Please go to the registry to check and see the key MSOLEDBSQL exists under HKEY_LOCAL_MACHI…

Python之tkinter图形界面设计学习二

图形用户界面&#xff08;简称GUI&#xff09;&#xff0c;是指采用图形方式显示的计算机操作用户界面。与计算机的命令行界面相比&#xff0c;图形界面对于用户的操作显得更加直观和简便。 一、tkinter模块 tkinter是Python的内置GUI模块。使用tkinter可以快速地创建GUI应用…