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

news2024/11/14 1:26:59

本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处(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处即为上升沿的标志,下降沿则相反。

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

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

相关文章

什么年代了,你还不会自动化测试?

一、前言 在软件测试中&#xff0c;自动化测试指的是使用独立于待测软件的其他软件来自动执行测试、比较实际结果与预期并生成测试报告这一过程。在测试流程已经确定后&#xff0c;测试自动化可以自动执行的一些重复但必要测试工作。也可以完成手动测试几乎不可能完成的测试。…

葡萄酒怎么按照饮用时间分类?

不同的葡萄酒搭配不同的餐食&#xff0c;会让饮酒人有不一样的感受和体会&#xff0c;所以&#xff0c;葡萄酒是分场合并且有饮用时间的。云仓酒庄的品牌雷盛红酒分享一般按照饮用时间分类可以把葡萄酒分为三大类&#xff0c;分别是餐前酒、佐餐酒和餐后酒。 餐前酒&#xff1…

C++之模版初阶(简单使用模版)

前言 在学习C的模版之前&#xff0c;咱们先来说一说模版的概念&#xff0c;模版在我们的日常生活中非常常见&#xff0c;比如我们要做一个ppt&#xff0c;我们会去在WPS找个ppt的模版&#xff0c;我们只需要写入内容即可&#xff1b;比如我们的数学公式&#xff0c;给公式套值&…

Python监控服务进程及自启动服务方法与实践

1. 需求概述 当我们在Windows Server环境中部署XX系统的实际应用中&#xff0c;往往会遇到一些运维管理的挑战。为了确保系统的持续稳定运行&#xff0c;特别是在服务程序因各种原因突然关闭的情况下&#xff0c;我们可以借助Python的强大生态系统来构建一个监控与自动重启的管…

CBTC 2023氢能展倒计时6天,最新同期会议活动Plus版发布

随着时间的推移&#xff0c;CBTC2023深圳氢能技术展览会即将拉开序幕。这场盛会将于11月30日在深圳福田会展中心盛大开幕&#xff0c;以“以储赋能&#xff0c;智造未来”为主题&#xff0c;旨在搭建一个商务交流、供需合作、创新产品发布的平台&#xff0c;让氢能全产业链之间…

要想固态跑得稳,散热器也要够扎实,ORICO J-10 固态散热组合体验

我们在日常工作中&#xff0c;经常需要读写各种体积庞大的文件和数据&#xff0c;如果硬盘速度跟不上的话&#xff0c;工作效率就会大大降低。最近我发现M.2固态硬盘的价格已经大幅降低了&#xff0c;越来越多的国产品牌开始加入其中。所以我最近入手了一款ORICO J-10固态硬盘&…

HHDESK客户端连接导入导出

HHDESK客户端连接可以一键导出xlsx表格进行备份&#xff0c;也可一键导入设置连接。 1 导出 点击“资源”——“导出” 在弹出框中选择“保存”即可。 2 导入 右键“资源”——“导入” 点击“浏览”&#xff0c;选择相应的xlsx文档&#xff1b; 点击“确认”。 选择“…

一、TIDB基础

TIDB整个逻辑架构跟MYSQL类似&#xff0c;如下&#xff1a; TIDB集群&#xff1a;相当于MYSQL的数据库服务器&#xff0c;区别是MYSQL数据库服务器为单进程的&#xff0c;TIDB集群为分布式多进程的。 数据库&#xff1a;同MYSQL数据库&#xff0c;数据库属于集群&#xff0c;…

持续集成交付CICD:GitLabCI 通过trigger触发流水线

目录 一、理论 1.GitLabCI 二、实验 1.搭建共享库项目 2.GitLabCI 通过trigger触发流水线 三、问题 1.项目app02未触发项目app01 2.GitLab 报502网关错误 一、理论 1.GitLabCI (1) 概念 GitLab CI&#xff08;Continuous Integration&#xff09;是一种持续集成工具…

convertRect:toView 方法注意事项

这是在网上找到的一张图 我们开发中有时候会用到左边转换&#xff0c;convertRect:toView 通常情况下&#xff0c;我们回这样使用 CGRect newRect [a convertRect:originframe toView:c];其中newRect和 originframe的size相同&#xff0c;只改变origin newRect.origin a…

@ResponseBody详解

ResponseBody() 作用&#xff1a; responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后&#xff0c;写入到response对象的body区&#xff0c;通常用来返回JSON数据或者是XML数据。 位置&#xff1a; ResponseBody是作用在方法上的&…

AlphaPose-RKNN-rk3588

1. AlphaPose背景介绍 AlphaPose是一个用于人体姿态估计的开源工具。人体姿态估计在计算机视觉中是一个核心问题&#xff0c;它旨在定位并识别图像或视频中的人体关键点和骨骼结构。在许多应用中&#xff0c;如动作识别、行为分析、虚拟现实和增强现实&#xff0c;人体姿态估计…

解释PCIe MSI 中断要求中断向量连续?PCIe 规范里并没有明确指出

MSI 向量必须连续&#xff1f; 前言 MSI 物理条件&#xff0c;MSI 中断产生的逻辑是RC初始化的时候&#xff0c;由软件将配置写入到 EP 的 2 个寄存器中&#xff0c;这两个寄存器一个指示的是地址 Message Address&#xff0c;一个指示的是数据 Message Data。当 EP 试图触发…

MTK联发科MT6762/MT6763/MT6765安卓核心板参数规格比较

MT6762安卓核心板 MTK6762安卓核心板是一款工业级高性能、可运行 android9.0 操作系统的 4G智能模块。 CPU&#xff1a;4xCortex-A53 up to 2.0Ghz/4xCortex-A53 up to 1.5GhzGraphics&#xff1a;IMG GE8320 Up to 650MhzProcess&#xff1a;12nmMemory&#xff1a;1xLP3 9…

小学语文老师重点工作

小学语文老师是学生在语言学习过程中的关键引导者&#xff0c;他们的主要职责是帮助学生建立正确的语言基础&#xff0c;培养良好的阅读习惯&#xff0c;并提高学生的语文素养。以下是小学语文老师的一些重点工作。 一、教授语言知识 小学语文老师首要的任务是教授学生语言知识…

【深度学习】卷积神经网络结构组成与解释

卷积神经网络是以卷积层为主的深度网路结构&#xff0c;网络结构包括有卷积层、激活层、BN层、池化层、FC层、损失层等。卷积操作是对图像和滤波矩阵做内积&#xff08;元素相乘再求和&#xff09;的操作。 1. 卷积层 常见的卷积操作如下&#xff1a; 卷积操作解释图解标准卷…

LSTM模型预测时间序列:根据历史销量数据预测商品未来销量

经常会遇到一些需要预测的场景&#xff0c;比如预测品牌销售额&#xff0c;预测产品销量。 时间序列 今天分享一波使用 LSTM 进行端到端时间序列预测的完整代码和详细解释。 我们先来了解两个主题&#xff1a; 什么是时间序列分析&#xff1f; 什么是 LSTM&#xff1f; 时…

【nlp】3.6 Tansformer模型构建(编码器与解码器模块耦合)

Tansformer模型构建(编码器与解码器模块耦合) 1. 模型构建介绍2 编码器-解码器结构的代码实现3 Tansformer模型构建过程的代码实现4 小结1. 模型构建介绍 通过上面的小节, 我们已经完成了所有组成部分的实现, 接下来就来实现完整的编码器-解码器结构耦合. Transformer总体架…