牛客网Verilog刷题 | 入门特别版本

文章目录

  • 1、 VL1 输出1
  • 2、VL2 wire连线
  • 3、 VL3 多wire连接
  • 4、VL4 反相器
  • 5、VL5 与门
  • 6、VL6 NOR 门
  • 7、VL7 XOR 门
  • 8、VL8 逻辑运算
  • 10、VL10 逻辑运算2
  • 11、VL11 多位信号
  • 12、VL12 信号顺序调整
  • 13、VL13 位运算与逻辑运算
  • 14、VL14 对信号按位操作
  • 15、VL15 信号级联合并
  • 16、VL16 信号反转输出
  • 17、VL17 三元操作符
  • 18、VL18 多位信号xnor
  • 19、VL19 五到一选择器
  • 20、VL20 256选1选择器

1、 VL1 输出1

描述
构建一个没有输入和一个输出常数1的输出的电路
输入描述:

输出描述:
输出信号为one

`timescale 1ns/1ns
 
module top_module(
    output  one   
);

assign one = 1;

endmodule

2、VL2 wire连线

描述
创建一个具有一个输入和一个输出的模块,其行为类似于电路上的连线。
输入描述:
输入信号in0
输出描述:
输出信号out1

`timescale 1ns/1ns

module wire0( input in0, output out1
    
);
    assign out1 = in0;
endmodule

3、 VL3 多wire连接

描述
创建一个具有 2个输入和 3个输出的模块,使用线连接的方式:
a -> z
b -> x
b -> y

输入描述:
input wire a b
输出描述:
output wire x y z

`timescale 1ns/1ns

module top_module(

  a, b, x, y, z

);
    input  a, b;
    output x, y, z;
    assign x = b;
    assign y = b;
    assign z = a;

endmodule

4、VL4 反相器

描述
输出输入信号的值的相反的值
输入描述:
in
输出描述:
out

`timescale 1ns/1ns

module top_module(
   	input in,
	output out 
);
	assign out = ~in;
endmodule

5、VL5 与门

描述
创建实现 AND 门的模块,输入有三个wire,将三个信号(a b c)进行与操作,请思考在实际电路需要几个与门?请写出对应的RTL
输入描述:
a b c
输出描述:
d

`timescale 1ns/1ns
module top_module( 
    input a, 
    input b, 
    input c,
    output d );

    assign d = a & b & c;

endmodule

6、VL6 NOR 门

描述
创建实现 OR和NOR 的模块,NOR 门是输出反相的 OR 门。
c 是 nor输出,d是or输出
输入描述:
a b
输出描述:
c d

`timescale 1ns/1ns

module top_module( 
    input a, 
    input b, 
    output c,
    output d);

    assign c = a ~| b;
    assign d = a | b;

endmodule

7、VL7 XOR 门

描述
创建一个实现 XOR 门的模块
输入描述:
a b
输出描述:
c

`timescale 1ns/1ns

module top_module( 
    input a, 
    input b, 
    output c );
    
    assign c = a ^ b;

endmodule

8、VL8 逻辑运算

描述
写出如图的rtl逻辑,限制使用最多四次assign
在这里插入图片描述
输入描述:
a b c d
输出描述:
e f

`timescale 1ns/1ns

module top_module (
	input a,
	input b,
	input c,
	input d,
	output e,
	output f );
	
	wire out_xor;
	assign out_xor = (a & b) ^ (c | d);
	assign e = ~out_xor;
	assign f = out_xor;

endmodule

9、VL9 模拟逻辑芯片
描述
下图为某芯片的逻辑,请通过RTL实现它的功能
在这里插入图片描述
输入描述:
p1a, p1b, p1c, p1d, p1e, p1f,p2a, p2b, p2c, p2d
输出描述:
p1y,p2y

`timescale 1ns/1ns

module top_module ( 
    input p1a, p1b, p1c, p1d, p1e, p1f,
    output p1y,
    input p2a, p2b, p2c, p2d,
    output p2y );

    assign p1y = (p1a & p1b & p1c) | (p1f & p1e & p1d);
    assign p2y = (p2a & p2b) | (p2c & p2d);
endmodule

10、VL10 逻辑运算2

描述
根据下述逻辑,给出对应的module设计
在这里插入图片描述
输入描述:
a b c d
输出描述:
e f

`timescale 1ns/1ns

module top_module (
	input a,
	input b,
	input c,
	input d,
	output e,
	output f );
	
	wire out_xor;
	assign out_xor = (a & b) ^ (c ^ d);
	assign e = ~out_xor;
	assign f = out_xor | d;
endmodule

11、VL11 多位信号

描述
构建一个具有一个3位输入in的信号[2:0],将其分成三个独立的输出a b c(从2到0)
输入描述:
in
输出描述:
a b c

`timescale 1ns/1ns

module top_module(
    in, a, b, c
);

    input [2:0] in;
    output a, b, c;
    assign a = in[2];
    assign b = in[1];
    assign c = in[0];

endmodule

12、VL12 信号顺序调整

描述
一个16位信号in包含四个四位数[3:0]a[3:0]b[3:0]c[3:0]d,将它们顺序倒置为dcba输出,输出out
输入描述:
in
输出描述:
out

`timescale 1ns/1ns

module top_module(
    in, out
);
    input [15:0] in;
    output [15:0] out;
    assign out = { in[3:0], in[7:4], in[11:8], in[15:12] };
endmodule

13、VL13 位运算与逻辑运算

描述
现有一个模块,输入信号为[2:0]a和[2:0]b,请输出信号的按位或[2:0]c和或信号d

输入描述:
[2:0]a [2:0]b
输出描述:
[2:0]c d

`timescale 1ns/1ns

module top_module(
	input [2:0] a, 
	input [2:0] b, 
	output [2:0] c,
	output d
);
	
	assign c = a | b;
	assign d = a || b;
endmodule

14、VL14 对信号按位操作

描述
将一个五输入的信号分别进行的每一位进行: 全部按位与;全部按位或;全部按位异或
输入描述:
[4:0]in
输出描述:
out_and, out_or, out_xor

`timescale 1ns/1ns

module top_module( 
    input [4:0] in,
    output out_and,
    output out_or,
    output out_xor
);
    assign out_and = & in;
    assign out_or = | in;
    assign out_xor = ^ in; 
endmodule

15、VL15 信号级联合并

描述
将6个输入信号串联转为四个信号输出,输入信号为[4:0] a[4:0] b[4:0]c [4:0]d [4:0]e [4:0]f,末尾增加一个宽度为两位的3,形成32位长度后,按照从前到后的顺序输出[7:0]w [7:0]x [7:0]y [7:0]z
输入描述:
[4:0] a[4:0] b[4:0]c [4:0]d [4:0]e [4:0]f
输出描述:
[7:0]w [7:0]x [7:0]y [7:0]z

在`timescale 1ns/1ns

module top_module(
    input [4:0] a, b, c, d, e, f,
    output [7:0] w, x, y, z );
    assign { w, x, y, z } = {a, b, c, d, e, f, 2'b11};
endmodule

16、VL16 信号反转输出

描述
输入一个16位的信号in,将其从低位到高位输出(即反转顺序输出)为out
输入描述:
[15:0] in
输出描述:
[15:0] out

`timescale 1ns/1ns

module top_module(
    input [15:0] in,
	output [15:0] out
);
    reg [15:0] out;
    integer i;
    always@(*)begin
        for(i=0; i<=15; i=i+1) begin
            out[15-i] = in[i];
        end
    end
endmodule

个人完成90%,这里一开始用initial总是不成功
需要搞清楚 always 和initial的用法。

17、VL17 三元操作符

描述
给定四个无符号数字,找到最大值。不使用if进行判断,尽量少使用语句的情况下完成。
输入描述:
[7:0]a b c d
输出描述:
[7:0] max

`timescale 1ns/1ns

module top_module(
    input [7:0] a, b, c, d,
    output [7:0] max);

        assign max = (((a >= b) ? a:b)>=((c>=d)? c:d)) ?((a >= b) ? a:b):((c>=d) ? c:d);

endmodule

注:一开始分开比较测试但就是 不用过,最后干脆就直接一行搞定,既然尽量少使用语句,那就一行。

18、VL18 多位信号xnor

描述
给定五个1bit信号(a、b、c、d 和 e),生成两种25位的数据: 一种是将信号复制五次后连接起来aaaaabbbbb…,一种是将信号连接起来复制五次成为abcdeabcde… 。比较两个25位信号,如果两个信号的同样位置的位相等,则输出1。

输入描述:
a, b, c, d, e,
输出描述:
[24:0] out

`timescale 1ns/1ns

module top_module(
    input a, b, c, d, e,
	output [24:0] out
);
    assign out = {{5{a}}, {5{b}}, {5{c}}, {5{d}}, {5{e}}} ~^ {5{a, b, c, d, e}};
endmodule

19、VL19 五到一选择器

描述
输入5个4bit信号,根据sel的值选出对应的信号,对应关系为:0~a 1~b 2~c 3~d 4~e 其他~置零
输入描述:
[3:0] a b c d e
[2:0]sel
输出描述:
[3:0] out

`timescale 1ns/1ns

module top_module( 
    input [3:0] a, b, c, d, e, 
    input [2:0] sel,
    output reg [3:0] out );

    always @(*)
        case(sel)
            3'b000:  out = a;
            3'b001:  out = b;
            3'b010:  out = c;
            3'b011:  out = d;
            3'b100:  out = e;
            default: out =0;
        endcase

endmodule

20、VL20 256选1选择器

描述
输入一个256位信号,根据sel信号输出对应位数值,当 sel = 0 时选择 in[0],sel = 1 时选择 in[1],以此类推
输入描述:
[255:0] in
[7:0]sel
输出描述:
out

`timescale 1ns/1ns

module top_module (
	input [255:0] in,
	input [7:0] sel,
	output  out
	
);

	assign out = in[sel]; 
	
endmodule

这道题一开始一直在纠结这个索引是二进制不是常量怎么办,想用for循环的,但卡在了索引上,看了下有个人是直接赋值,居然可以。

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

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

相关文章

安装Docker并配置镜像加速器、容器

1.安装docker服务&#xff0c;配置镜像加速器 安装软件包 [rootlocalhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 设置yum源 [rootlocalhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo…

【问题处理】解决Spring事务@Transactional多层嵌套失效

场景&#xff1a; 在 AService 中&#xff0c;我会直接调用 A 的数据操作层去操作 A的数据 以及 A关联密切的其它数据&#xff0c;在操作完之后&#xff0c;会去调用 BService 和 CService 中更新对应的数据&#xff0c;并在每个方法上使用了事务&#xff0c;但在调用 BService…

VMware 中Centos8的NAT网络设置

1、先将虚拟机设置为NAT模式 2、打开虚拟网络编辑器&#xff0c;记录以下信息 NAT设置&#xff1a;子网掩码、网关 DHCP设置&#xff1a;I P 范围 (自动时) 3、进入Centos8的网络设置页面&#xff0c;按照记录的信息进行配置 4、重载、重启网卡 nmcli c reload ensl60 n…

4G电力摄像机如何通过AT指令对接到国网平台呢?

对于针对电网安全运行的迫切需求&#xff0c;”输电线路智能可视化监测系统”被研发并应用&#xff0c;通过视频监控和AI智能分析技术&#xff0c;实现了对输电线路远程视频在线监测、外力破坏智能分析&#xff0c;可实现对输电线路的全天候实时监测和预警&#xff0c;有效保障…

element plus 的图片上传组件回显

element图片回显是通过修改file-list属性的url属性实现的。 <!-- 图片上传 --><el-form-item label"景区图片" prop"s_img"><el-uploadlist-type"picture-card":action"网址":on-change"handleChange":befor…

【KingSCADA】问题处理:记录KS历史报警查询异常

哈喽&#xff0c;大家好&#xff01;我是雷工。 本篇记录KingSCADA的历史报警应用中的一个问题&#xff0c;及处理过程。 一、问题描述 最近客户遇到这么一个问题&#xff1a;当打开历史报警窗界面&#xff0c;自动加载的报警信息中有显示最近几天的报警信息&#xff0c;但当…

[JavaWeb]【十二】web后端开发-事务管理AOP

目录 一、事务管理 1.1 事务回顾 1.2 Spring事务管理 1.2.1 案例 1.2.1.1 EmpMapper新增deleteByDeptId方法 1.2.1.2 DeptServiceImpl 1.2.1.3 启动服务-测试 1.2.2 模拟异常 1.2.3 分析问题 1.2.4 Spring事务管理&#xff08;一般用在类似多次delete&#xff09; 1.2.4…

【快速傅里叶变换(fft)和逆快速傅里叶变换】生成雷达接收到的经过多普勒频移的脉冲雷达信号(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Jupyter Notebook 配置根目录

注&#xff1a;本文是在 Windows 10 上配置 Jupyter Notebook 打开的默认根目录&#xff0c;Linux 同。 步骤一&#xff1a;创建 Jupyter Notebook 配置文件 使用以下命令创建 Jupyter Notebook 配置文件&#xff08;如果尚未创建&#xff09;&#xff1a; jupyter notebook …

SecureBridge安全文件下载的组件Crack

SecureBridge安全文件下载的组件Crack SecureBridge包括SSH、SSL和SFTP客户端和服务器组件。它使用SSH或SSL安全传输层协议和加密消息语法来保护任何TCP流量&#xff0c;这些协议为客户端和服务器提供身份验证、强数据加密和数据完整性验证。SecureBridge组件可以与数据访问组件…

Neo4j实现表字段级血缘关系

需求背景 需要在前端页面展示当前表字段的所有上下游血缘关系&#xff0c;以进一步做数据诊断治理。大致效果图如下&#xff1a; 首先这里解释什么是表字段血缘关系&#xff0c;SQL 示例&#xff1a; CREATE TABLE IF NOT EXISTS table_b AS SELECT order_id, order_status F…

十五、systemctl命令如何使用?

在Linux系统中&#xff0c;一些内置服务可以通过systemctl控制&#xff0c;部分第三方软件也可以通过systemctl控制。 1、基础语法 start&#xff1a;开启服务&#xff1b; stop&#xff1a;关闭服务&#xff1b; status&#xff1a;查看服务当前状态&#xff1b; enable&a…

Centos 7.6 安装mongodb

以下是在CentOS 7.6上安装MongoDB的步骤&#xff1a; 打开终端并以root用户身份登录系统。 创建一个新的MongoDB存储库文件 /etc/yum.repos.d/mongodb-org-4.4.repo 并编辑它。 sudo vi /etc/yum.repos.d/mongodb-org-4.4.repo在编辑器中&#xff0c;添加下面的内容到文件中并…

Vue中使用element-plus中的el-dialog定义弹窗-内部样式修改-v-model实现-demo

效果图 实现代码 <template><el-dialog class"no-code-dialog" v-model"isShow" title"没有收到验证码&#xff1f;"><div class"nocode-body"><div class"tips">请尝试一下操作</div><d…

智慧化工地SaaS平台源码,PC端+APP端+智慧数据可视化大屏端,源码完全开源不封装,自主研发,支持二开,项目使用,微服务+Java++vue+mysql

智慧工地管理平台充分运用数字化技术&#xff0c;聚焦施工现场岗位一线&#xff0c;依托物联网、互联网、AI等技术&#xff0c;围绕施工现场管理的人、机、料、法、环五大维度&#xff0c;以及施工过程管理的进度、质量、安全三大体系为基础应用&#xff0c;实现全面高效的工程…

CAD哪个版本最好用?学习一下CAD版本转换方法

CAD即计算机辅助设计&#xff0c;是一个制图软件&#xff0c;用于绘制建筑、机械、电子等领域的图纸。CAD文件通常被称为“图纸”或“工程图”。 CAD文件通常在以下方面使用&#xff1a; 1. 建筑&#xff1a;建筑师使用CAD文件来创建建筑物的平面图、立体图和剖面图。 2. 机…

Hugo托管到Github Pages

Github通过其Github Pages服务可以user、project或organization提供免费快速的静态托管&#xff0c;同时使用Github Actions自动化开发工作流和构建。 1.创建Github仓库 可见性为public。 命名为username.github.io&#xff0c;username为你的Github用户名。 2.添加远程仓库…

Hystrix: 服务降级

cloud是基础&#xff0c;eureka是服务注册和发现&#xff0c;consumer是消费者去消费provider里的东西&#xff0c;消费方式就是Feign和Ribbon&#xff0c;feign 接口消费&#xff0c;ribbon Rest消费 服务降级发生在客户端&#xff0c;客户端因为请求关闭的服务器&#xff0…

备份集中的数据库备份与现有的数据库不同?

数据已经成为公司的主要资产,特别是对于企业来说&#xff0c;数据库中存储的信息通常是其业务运营的核心。 因此&#xff0c;确保数据库的安全性和完整性至关重要。这导致数据库备份成为企业信息管理的重要组成部分。本文将详细介绍备份密集数据库备份的必要性&#xff0c;以及…

Mybatis的动态SQL及关键属性和标识的区别(对SQL更灵活的使用)

&#xff08; 虽然文章中有大多文本内容&#xff0c;想了解更深需要耐心看完&#xff0c;必定大有受益 &#xff09; 目录 一、动态SQL ( 1 ) 是什么 ( 2 ) 作用 ( 3 ) 优点 ( 4 ) 特殊标签 ( 5 ) 演示 二、#和$的区别 2.1 #使用 ( 1 ) #占位符语法 ( 2 ) #优点 2.…