【合集一】每日一练30讲,轻松掌握Verilog语法

本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(www.meyesemi.com)

第一练:如何区分<=表示的含义?

题目:请描述以下两种方法产生的信号有何区别?

答案:根据“<=”所在语句,在赋值语句中表示非阻塞赋值,在条件判断语句中表示小于等于解析:如以下代码中,if后面括号中的语句表示条件判断,<=表示小于或等于,其余为赋值语句表示赋值。

第二练:变量之间的三目运算练习

问题:设变量a,b,c,请用三目运算符实现:c的值为a和b两者较大的数值

答案:assign c=(a>b)?a:b;

解析:condition_expr?true_expr1:false_expr2;

condition_expr为逻辑真则结果为true_expr1,condition_expr为逻辑假则结果为false_expr2

第三练:“inout"双向端口类型的使用

题目:Verilog除了input和output的端口类型,还有inout双向端口,比如在IIC协议中sda为双向信号。若sda在sda_out_en为1时输出sda_out的数值,在sda_out_en为0时sda为输入状态,如何使用三目运算符实现此功能?

答案:

解析:Verilog的4种数据状态:

0: 逻辑“0”或“假” ;

1: 逻辑“1”或“真” ;

x: 未知状态;

z: 高阻态;

若sda输出则将sda_out赋值给sda,若sda为输入则为高阻态“z”

第四练:位拼接符的使用

题目:请用位拼接符实现c[22:0]的表示,c的数值为:

答案:

解析: 位拼接运算符{ }用于将两个或多个信号拼接起来,中间用逗号间隔,表示一个整体的信号,支持嵌套写法,位拼接运算符需注意位宽的匹配。其中“3{b}”表示复制,“a[2]”表示变量a[3:0]即a[3],a[2],a[1],a[0]中的第二位。

练:位拼接符的应用

题目:若1bit串行信号data_in按高位先发的顺序传输一个8bit的数据,data_en为使能信号,请用位拼接符实现串行数据的接收并输出接收的8bit数据data[7:0]。

答案:

解析:data_in的接收顺序为高位在前,所以使用位拼接符将每次接收到的data_in放在data[7:0]的最低位,同时将原data[7:0]的低六位即data[6:0]往高位移一位,先接收的数据会逐步移位到高位,后接收的数据放在低位,接收完8bit数据后data[7:0]就是最终的结果。若低位在前则处理方式相反。

练:if_else语句基本用法

题目:请用if_else语句实现:c为a和b中的较大值。

答案:

解析:if-else基本语法。

第七练:if_else语句的嵌套用法

题目:请用if_else嵌套语句实现:d的值为a,b,c三个数取其中最大数值。

答案:

解析:if语句和else语句均支持嵌套用法。

第八练:if_else语句优先级

题目:利用if_else语句中多个条件的优先级关系实现:将变量a[5:0]的十进制中的十位对应的数字提取出来,并且将十位对应的数字赋值给变量b[3:0],要求每个if-else语句中每个条件表达式只允许使用一个关系运算符。

答案:

解析:if…else if…else语句中多个条件表达式具有按顺序的优先级关系,若题目答案中7个条件表达式顺序相反,则b一直为0。

第九练:基本逻辑运算符的使用

题目:用组合逻辑实现以下运算:

答案:assign L=(A&&B)||(!A&&B);

解析:verilog常用操作符如下,需注意多种操作符同时使用情况下操作符之间的优先级关系。

第十练:移位操作符的使用

题目:定义变量reg [7:0]a;reg [7:0]b;reg [7:0]c;暂不考虑溢出及小数,用移位操作符(<<、>>)实现b等于a乘以4的结果,c等于a除以8的结果

答案:

解析:A<<2表示A左移n位且低位补0,A>>2表示A右移n位且高位补0,若实现乘/除以2^n可使用移位操作符,移位操作符将变量a二进制数每左移(<<)一位表示乘以2,每右移(>>)一位表示除以2。

第十一练:二进制数值中1的个数奇偶判断

题目:用verilog实现变量flag为1表示变量a的数值中二进制1的个数是奇数,flag为0表示变量a的数值中二进制1的个数是偶数,比如:a为8’b1111_0000,则二进制1的个数为4,即偶数。

答案:

解析:按位异或,^a等效于a[7]^a[6]^a[5]^a[4]^a[3]^a[2]^a[1]^a[0],二进制中1的个数为奇数个的时候结果为1,二进制中11的个数为偶数个的时候结果为0。

第十二练:变量位宽的选取

题目:定义一个reg型变量a,a的最大值为2000,则a的最小位宽需定义为多少?

答案:reg [10:0]a;

解析:在verilog中位宽指二进制数的位宽,十进制的2000转成二进制为:111 1101 0000,所以变量a最小位宽为11。通常在代码上会为变量再预留一部分位宽避免溢出,若数值超出所定位宽能表示的最大值后会出现高位溢出。

第十三练:计数器计时

题目:已知外部输入时钟信号clk为50MHz,请用verilog实现计数器的计时1秒钟,每间隔1秒输出一个clk时钟周期的脉冲信号flag,参考波形如下:

答案:

解析:时钟信号为50MHz则50_000_000个时钟周期的时间为1s,所以计数器需按每个时钟上升沿+1计数,计数范围从0~49_999_999,循环计数,计数器每次计到一个固定数值时flag信号置为1。

第十四练:寄存器“打一拍”

题目:请用verilog实现寄存器“打一拍”,将信号延时1个时钟周期,默认signal与clk信号同步,参考波形如下:

答案:

解析:“打拍”即使用寄存器将信号延时1个时钟周期。如题目波形图,在时序电路中时钟上升沿3处将signal由0置为1,同一时刻将signal当前值赋给signal_1d,所以signal_1d仍为0;时钟上升沿5处将signal由1置为0,同一时刻将signal当前值赋给signal_1d,所以signal_1d仍为1,达到延时1个时钟周期的效果。

第十五练:识别信号边沿

题目:请用verilog实现signal信号上升沿的识别,每识别到上升沿将flag信号拉高1个时钟周期。

答案:

解析:signal信号经过“打一拍”处理后,延时一个时钟周期的signal_1d信号,在signal为1并且signal_1d为0处即为上升沿的标志,下降沿则相反。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[C/C++]数据结构 循环队列

前言: 队列是一种具有先进先出特性的结构,但是当数据出队列以后,前面的空间就无法再次利用了,循环队列就可以解决这个问题 一:概念及结构: 1.循环队列概念 循环队列是一种线性数据结构&#xff0c;其操作表现基于 FIFO&#xff08;先进先出&#xff09;原则并且队尾被连接在队…

CART算法解密:从原理到Python实现

本文深入探讨了CART&#xff08;分类与回归树&#xff09;算法的核心原理、实现方法以及应用场景。文章首先介绍了决策树的基础知识&#xff0c;然后详细解析了CART算法的工作机制&#xff0c;包括特征选择和树的构建。接着&#xff0c;通过Python和PyTorch的实例代码展示了CAR…

重生之我是一名程序员 37 ——C语言中的栈溢出问题

哈喽啊大家晚上好&#xff01; 今天呢给大家带来一个烧脑的知识——C语言中的栈溢出问题。那什么是栈溢出呢&#xff1f;栈溢出指的是当程序在执行函数调用时&#xff0c;为了保护函数的局部变量和返回地址&#xff0c;将这些数据存储在栈中。如果函数在函数调用时使用了过多的…

一站式企业快递管理平台使用教程

因公寄件在企业中重要性的提升&#xff0c;催生出了企业快递管理平台。为什么这么说呢&#xff1f; 随着经济和快递行业的发展&#xff0c;因公寄件在企业中成了一件“常事”&#xff0c;寄文件合同、发票、节假日慰问品、样品等等&#xff0c;这种情况之下&#xff0c;因公寄件…

HDX读卡器牛羊管理RFID设备品牌

半双工HDX&#xff08;Half Duplex&#xff09;技术是ISO11784/5中规定的另一种标签与读写器之间的通讯方式&#xff0c;与全双工工&#xff08;FDX&#xff09;相比&#xff0c;HDX通常识别能力更强&#xff0c;有更大的识别距离。在HDX读写器的射频场与HDX标签响应期间关闭&a…

1. git入门操作

1. git入门操作 1、基本名词解释 图片 名词含义index索引区&#xff0c;暂存区master分支名&#xff0c;每个仓库都有个master&#xff0c;它作为主分支。branch其他分支&#xff0c;我们可以把master分支上的代码拷贝一份&#xff0c;重新命名为其他分支名work space就是我…

深眸科技聚焦AI机器视觉检测,驱动3C电子行业集成创新实现新需求

随着消费的升级及国家政策的助推&#xff0c;国内3C电子市场不断扩大&#xff0c;行业实现高速发展。近年来&#xff0c;3C电子产品持续迭代&#xff0c;生产工艺也逐渐复杂化&#xff0c;相关生产线定位组装、零部件检测、整机产品检测等环节&#xff0c;亟需使用具备较强适应…

electerm 跨平台的终端 /ssh/sftp 客户端

文章目录 electerm功能特性主题配色 electerm 每个程序员基本都离开SSH链接工具,目前市场上好用的基本都是收费的 给大家推荐一款国人开发的开源链接工具https://github.com/electerm/electerm 到目前为止star已经9.5K了,非常受欢迎 功能特性 支持ssh,telnet,serialport,本地和…

Spring Cloud LoadBalancer 简单介绍与实战

前言 本文为SpringCloud的学习笔记&#xff0c;如有错误&#xff0c;希望各位高手能指出&#xff0c;主要介绍SpringCloudLoadBalancer的基本概念和实战 文章目录 前言什么是LoadBalancer负载均衡分类服务端负载均衡客户端负载均衡服务端负载均衡和客户端负载均衡的优缺点 常见…

JOSEF约瑟 热过载保护继电器 JR36-160,整定值100-160A

系列型号 JR36-20 1.0-1.6A热继电器 JR36-20 0.25-0.35A热继电器 JR36-20 0.32-0.5A热继电器 JR36-20 0.45-0.72A热继电器 JR36-20 0.68-1.1A热继电器 JR36-20 1.5-2.4A热继电器 JR36-20 2.2-3.5A热继电器 JR36-20 3.2-5A热继电器 JR36-20 4.5-7.2A热继电器 JR36-20 …

季报含金量强势推高股价,满帮十年持续拉高数字货运生态天花板

经济活动越发密集&#xff0c;跑在路上的货车和司机们成为最忙碌的角色。11月20日美股盘前&#xff0c;数字货运龙头满帮集团&#xff08;YMM.US&#xff0c;以下简称&#xff1a;满帮&#xff09;发布2023年第三季度财报&#xff0c;其用户规模、业绩数据、履约单量等指标全面…

CMSIS-DSP实数FFT相关API(单精度浮点float)

目录 1. CMSIS-DSP的实数FFT 2. 频域上求模值 3. 如何求解相位 4. 对比python的求解过程 5. 在频域上以模和相角的方式还原信号 6. 求能量值 平台&#xff1a;STM32F407-DiscoveryCMSIS-DSP-V1.6.0 1. CMSIS-DSP的实数FFT 文件&#xff1a;\CMSIS\DSP\Source\Transform…

额温枪方案,MS8551,MS8601;MS1112,MS1100

鉴于测温的传感器信号非常微弱&#xff0c;需要用高精度、低噪声的运算放大器和高精度、低功耗的ADC。 运算放大器可供选择&#xff1a;MS8551 or MS8601&#xff0c;具有低失调&#xff08;1uV&#xff09;、低噪&#xff08;22nV√Hz &#xff09;、封装小等优点&#xff0c…

140. 单词拆分 II

140. 单词拆分 II Java错误代码&#xff1a;不该回溯数组的&#xff0c;回溯数组是以固定顺序来的&#xff0c;应该回溯字符串&#xff01; class Solution {StringBuilder sb;List<String> list;List<String> tmp;private String getString() {StringBuilder str…

云服务器-从零搭建前后端服务(自动化部署、数据库)

免密登陆 第一步就是能免密快速登录到服务器 可以直接使用 FinalShell、MobaXterm 或 XShell 等进行连接 如下方法是直接用命令行操作 安装 Remote - SSH 插件&#xff0c;即可在 VSCode 中进行配置 配置别名快速登录&#xff1a;ssh-config&#xff08;也可以直接找到本机…

Python自动化测试框架之unittest使用详解!

这篇文章主要介绍了Python接口自动化浅析unittest单元测试原理,文中描述了单元测试&#xff0c;unittest模块特性、大致流程、源码及实战例子这几个模块&#xff0c;有需要的朋友可以借鉴参考下 以下主要介绍unittest特性、运行流程及实际案例。 一、单元测试三连问 1、什么是…

【腾讯云云上实验室】探索保护数据之盾背后的安全监控机制

当今数字化时代&#xff0c;数据安全成为了企业和个人最为关注的重要议题之一。随着数据规模的不断增长和数据应用的广泛普及&#xff0c;如何保护数据的安全性和隐私性成为了迫切的需求。 今天&#xff0c;我将带领大家一起探索腾讯云云上实验室所推出的向量数据库&#xff0c…

酵母双杂交服务专题(一)

酵母双杂交系统是一种在酵母这种真核生物模型中执行的实验方法&#xff0c;用于探索活细胞内部蛋白质间的相互作用。这种技术能够敏感地捕捉蛋白质间的细微和短暂相互作用&#xff0c;通过检测报告基因的表达产物来实现。作为一种高度灵敏的技术&#xff0c;酵母双杂交系统被广…

FreeRTOS-FreeRTOS概述

FreeRTOS FreeRTOS目录结构 移植过程 在工程中创建freertos文件夹&#xff0c;在freertos文件夹中创建src文件夹、inc文件夹、port文件夹。 freertos/src存放源码freertos/inc存放头文件freertos/port存放移植平台的相关文件 复制内存管理文件&#xff1a;复制FreeRTOS/Sourc…

井盖位移传感器厂家批发,守护井盖安全

窨井盖广泛分布于城市街道&#xff0c;其管理效果直接反映了城市治理的现代化程度。根据住房和城乡建设部发布的《关于进一步加强城市窨井盖安全管理的通知》&#xff0c;全国各地需加强窨井盖的安全管理。作为市政基础设施的一个重要的组成部分&#xff0c;井盖的管理工作不仅…