数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 (八)使用generate…for语句简化代码
admin
2024-05-12 11:40:17
0

数字IC设计、验证、FPGA笔试必会 - Verilog经典习题 (八)使用generate…for语句简化代码


🔈声明:
😃博主主页:王_嘻嘻的CSDN博客
🧨未经作者允许,禁止转载
🔑系列专栏:牛客Verilog习题集
🚩推荐一个IC、FPGA新手入门的好网站:👉快 点 击 进 入 学 习 吧


  继续整理牛客网经典Verilog习题讲解,牛客网里除了最新的Verilog题库还有其它领域的经典笔试、面试题,大家快和我一起刷起来吧 点 击 跳 转



题目


  在某个module中包含了很多相似的连续赋值语句,请使用generata…for语句编写代码,替代该语句,要求不能改变原module的功能。


module template_module( input [7:0] data_in,output [7:0] data_out
);assign data_out [0] = data_in [7];assign data_out [1] = data_in [6];assign data_out [2] = data_in [5];assign data_out [3] = data_in [4];assign data_out [4] = data_in [3];assign data_out [5] = data_in [2];assign data_out [6] = data_in [1];assign data_out [7] = data_in [0];endmodule

分析:

  本题主要是考察Verilog中如何使用循环来简化代码。在Verilog中循环的使用会比软件语言稍稍麻烦一些,需要额外有一个generate——endgenerate的语句块,所有的for循环需要写在块内generate内的循环变量需要用genvar额外声明

  generate的功能其实就是复制,将同样的电路复制多份,不论是always块或者assign组合逻辑,都可以在generate中

  此外,在每个for循环后最好使用begin:loop_name(自定义),给循环取一个名字,避免后期lint报错的问题。




题解:


`timescale 1ns/1ns
module gen_for_module( input [7:0] data_in,output [7:0] data_out
);generategenvar i;for(i=0;i<8;i=i+1)begin: loopassign data_out[i] = data_in[7-i];end
endgenerateendmodule


相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...