verilog牛客网刷题代码汇总(上)(3)

简介: 1. Verilog快速入门1. 基础语法VL1 四选一多路器VL2 异步复位的串联T触发器LV3 奇偶校验VL4 移位运算与乘法LV5 位拆分与运算VL6 多功能数据处理器VL7 求两个数的差值VL8 使用generate…for语句简化代码VL9 使用子模块实现三输入数的大小比较VL10 使用函数实现数据大小端转换02 组合逻辑VL11 4位数值比较器电路VL12 4bit超前进位加法器电路VL13 优先编码器电路①VL14 用优先编码器①实现键盘编码电路VL15 优先编码器ⅠVL16 使用8线-3线优先编码器Ⅰ实现16线-4线优先编码器

VL13 优先编码器电路①

VL13 优先编码器电路①

`timescale 1ns/1ns
module encoder_0(
    input              [   8:0]         I_n                        ,
    output reg         [   3:0]         Y_n                         
);
always @(*) begin
   casex (I_n)
    9'b1_1111_1111:Y_n <= 4'b1111;
    9'b0_xxxx_xxxx:Y_n <= 4'b0110;
    9'b1_0xxx_xxxx:Y_n <= 4'b0111;
    9'b1_10xx_xxxx:Y_n <= 4'b1000;
    9'b1_110x_xxxx:Y_n <= 4'b1001;
    9'b1_1110_xxxx:Y_n <= 4'b1010;
    9'b1_1111_0xxx:Y_n <= 4'b1011;
    9'b1_1111_10xx:Y_n <=4'b1100;
    9'b1_1111_110x:Y_n <= 4'b1101;
    9'b1_1111_1110:Y_n <= 4'b1110;
    default:       Y_n <= 4'b1111;
endcase
end
endmodule

VL14 用优先编码器①实现键盘编码电路

VL14 用优先编码器①实现键盘编码电路

`timescale 1ns/1ns
module encoder_0(
    input              [   8:0]         I_n                        ,
    output reg         [   3:0]         Y_n                         
);
always @(*)begin
   casex(I_n)
      9'b111111111 : Y_n = 4'b1111;
      9'b0xxxxxxxx : Y_n = 4'b0110;
      9'b10xxxxxxx : Y_n = 4'b0111;
      9'b110xxxxxx : Y_n = 4'b1000;
      9'b1110xxxxx : Y_n = 4'b1001;
      9'b11110xxxx : Y_n = 4'b1010;
      9'b111110xxx : Y_n = 4'b1011;
      9'b1111110xx : Y_n = 4'b1100;
      9'b11111110x : Y_n = 4'b1101;
      9'b111111110 : Y_n = 4'b1110;
      default      : Y_n = 4'b1111;
   endcase
end
endmodule
module key_encoder(
    input              [   9:0]         S_n                        ,
    output wire        [   3:0]         L                          ,
    output wire                         GS                          
);
wire                   [   3:0]         L_tmp                      ;
encoder_0 encoder_0(
    .I_n                               (S_n[9:1]                  ),
    .Y_n                               (L_tmp                     ) 
);
assign L = ~L_tmp;
assign GS = ((L_tmp == 4'b1111) && (S_n[0] == 1)) ? 0: 1;
endmodule

VL15 优先编码器Ⅰ

VL15 优先编码器Ⅰ

`timescale 1ns/1ns
module encoder_83(
   input      [7:0]       I   ,
   input                  EI  ,
   output wire [2:0]      Y   ,
   output wire            GS  ,
   output wire            EO    
);
assign Y[2] = EI & (I[7] | I[6] | I[5] | I[4]);
assign Y[1] = EI & (I[7] | I[6] | ~I[5]&~I[4]&I[3] | ~I[5]&~I[4]&I[2]);
assign Y[0] = EI & (I[7] | ~I[6]&I[5] | ~I[6]&~I[4]&I[3] | ~I[6]&~I[4]&~I[2]&I[1]);
assign EO = EI&~I[7]&~I[6]&~I[5]&~I[4]&~I[3]&~I[2]&~I[1]&~I[0];
assign GS = EI&(I[7] | I[6] | I[5] | I[4] | I[3] | I[2] | I[1] | I[0]);
//assign GS = EI&(| I);
endmodule

VL16 使用8线-3线优先编码器Ⅰ实现16线-4线优先编码器

VL16 使用8线-3线优先编码器Ⅰ实现16线-4线优先编码器

`timescale 1ns/1ns
module encoder_83(
   input      [7:0]       I   ,
   input                  EI  ,
   output wire [2:0]      Y   ,
   output wire            GS  ,
   output wire            EO    
);
assign Y[2] = EI & (I[7] | I[6] | I[5] | I[4]);
assign Y[1] = EI & (I[7] | I[6] | ~I[5]&~I[4]&I[3] | ~I[5]&~I[4]&I[2]);
assign Y[0] = EI & (I[7] | ~I[6]&I[5] | ~I[6]&~I[4]&I[3] | ~I[6]&~I[4]&~I[2]&I[1]);
assign EO = EI&~I[7]&~I[6]&~I[5]&~I[4]&~I[3]&~I[2]&~I[1]&~I[0];
assign GS = EI&(I[7] | I[6] | I[5] | I[4] | I[3] | I[2] | I[1] | I[0]);
//assign GS = EI&(| I);
endmodule
module encoder_164(
   input      [15:0]      A   ,  //分为高8位和低8位
   input                  EI  ,  //使能表示有无按键按下
   output wire [3:0]      L   ,
   output wire            GS  ,
   output wire            EO    
);
wire [2:0]      Y_0;
wire [2:0]      Y_1;
wire            GS_0;
wire            EO_0;    
wire            GS_1;
wire            EO_1;   
encoder_83 u_0(
    .I(A[7:0]),
    .EI(EO_1),
    .Y(Y_0),
    .GS(GS_0),
    .EO(EO)
);
encoder_83 u_1(
    .I(A[15:8]),
    .EI(EI),
    .Y(Y_1),
    .GS(GS_1),
    .EO(EO_1)
);
assign GS = GS_1 | GS_0;
assign L[3] = GS_1;
assign L[2] = Y_1[2] | Y_0[2];
assign L[1] = Y_1[1] | Y_0[1];
assign L[0] = Y_1[0] | Y_0[0];
endmodule
相关文章
|
NoSQL Redis
Kubernetes----部署单节点Redis
Kubernetes----部署单节点Redis
5552 1
|
11月前
|
存储 前端开发 Java
Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能
### SpringBoot3 + Vue3 前后端分离的Java快速开发框架更新 本次更新主要包含以下内容: 1. **端口修改**:为避免与Minio存储服务冲突,后端启动端口从9000改为9999。 2. **添加存储支持**:集成Minio和阿里云OSS对象存储服务,详细配置请参考相关文档。 3. **短信服务**:接入阿里云短信服务,并增加模拟发送功能,方便本地测试。 4. **邮件发送**:引入邮件发送功能,支持简单文本邮件和带附件邮件。 5. **完善个人中心**:优化个人中心页面,提升用户体验。
397 85
Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能
|
11月前
|
JSON 监控 API
获取1688商品SKU信息API接口及实战应用
在电商蓬勃发展的今天,数据成为宝贵的财富。1688作为国内知名批发采购平台,提供商品SKU信息API接口,可获取库存、价格、规格等关键数据,助力电商运营、市场分析和价格监控。本文介绍如何注册1688开放平台账号、创建应用并获取AppKey/AppSecret,申请API权限,使用Python实现接口调用,处理响应数据,并注意请求频率限制和错误处理。通过该接口,可为电商运营和数据分析提供有力支持。
547 2
|
Cloud Native Java Nacos
Spring Cloud Config、Apollo、Nacos和Archaius对比
这篇文章对比了Spring Cloud Config、Apollo、Nacos和Archaius这四种配置中心的适应场景、优缺点。文中讨论了它们的功能特点,例如Spring Cloud Config的集中化配置管理和动态刷新能力,Apollo的实时配置推送和权限治理,Nacos的服务发现和管理功能,以及Archaius的动态配置更新能力。文章指出选择配置中心应根据项目需求和架构来决定,并提供了一个对比图来帮助读者更直观地理解这些工具的差异。
613 1
Spring Cloud Config、Apollo、Nacos和Archaius对比
|
存储
Obsidian 与 Typora 图片兼容保存路径一致设置
Obsidian 与 Typora 图片兼容保存路径一致设置
1297 0
|
存储 Java Apache
Java“NoClassDefFoundError”解决
“Java NoClassDefFoundError”是运行时错误,表示JVM找不到某个类的定义。通常由类路径设置不当、依赖缺失或版本冲突引起。解决方法包括检查类路径、确保所有依赖正确添加及版本兼容。
2048 3
|
Android开发
Eclipse 视图
Eclipse 视图
130 0
|
网络协议 C# 开发者
WPF与Socket编程的完美邂逅:打造流畅网络通信体验——从客户端到服务器端,手把手教你实现基于Socket的实时数据交换
【8月更文挑战第31天】网络通信在现代应用中至关重要,Socket编程作为其实现基础,即便在主要用于桌面应用的Windows Presentation Foundation(WPF)中也发挥着重要作用。本文通过最佳实践,详细介绍如何在WPF应用中利用Socket实现网络通信,包括创建WPF项目、设计用户界面、实现Socket通信逻辑及搭建简单服务器端的全过程。具体步骤涵盖从UI设计到前后端交互的各个环节,并附有详尽示例代码,助力WPF开发者掌握这一关键技术,拓展应用程序的功能与实用性。
849 0
|
Java 数据库连接 数据库
【SpringBoot系列】微服务数据持久化方案
【4月更文挑战第8天】微服务数据持久化方案Spring Boot JPA + Hiberate
303 0
配电网三相不平衡潮流计算【隐式Zbus高斯法】【可设定变压器数量、位置、绕组方式】
配电网三相不平衡潮流计算【隐式Zbus高斯法】【可设定变压器数量、位置、绕组方式】

热门文章

最新文章