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
相关文章
|
2月前
|
存储 编译器 C语言
【C语言刷题每日一题#牛客网BC107】矩阵转置
【C语言刷题每日一题#牛客网BC107】矩阵转置
|
3月前
|
存储 算法 C语言
C语言初学者超详细习题库1(含题目以及代码讲解)
C语言初学者超详细习题库1(含题目以及代码讲解)
64 1
|
8月前
|
算法 C语言
C语言 每日一题 牛客网习题 10.20 day2
C语言 每日一题 牛客网习题 10.20 day2
40 0
|
9月前
|
人工智能 算法 机器人
迷宫问题(C语言实现)(牛客网百度笔试真题)
迷宫问题(C语言实现)(牛客网百度笔试真题)
82 0
|
C语言
牛客网Verilog刷题(1)
牛客网Verilog刷题(1)
68 0
|
芯片
牛客网Verilog刷题(2)
牛客网Verilog刷题(2)
90 0
|
存储 算法 C语言
[数据结构与算法(严蔚敏 C语言第二版)]第1章 绪论(课后习题+答案解析)
[数据结构与算法(严蔚敏 C语言第二版)]第1章 绪论(课后习题+答案解析)
|
前端开发
牛客网DAY2(编程题)
牛客网DAY2(编程题)
53 0
|
算法 C语言
想说说关于在刷题网站(牛客 、C语言网、力扣)上测试样例过了但是OJ判错这档子事
想说说关于在刷题网站(牛客 、C语言网、力扣)上测试样例过了但是OJ判错这档子事
|
存储 算法 异构计算
牛客网verilog刷题知识点盘点(75道题的版本)
还有几个坑没填,知识点整理总结自互联网,本人csdn博客搬运
544 0