Verilog从0到入门2-组合逻辑

  • 前言
  • Q1:4位数值比较器电路
  • Q2:4bit超前进位加法器电路
  • Q3:优先编码器电路①
  • Q4:用优先编码器①实现键盘编码电路
  • Q5:优先编码器Ⅰ
  • Q6:使用8线-3线优先编码器Ⅰ实现16线-4线优先编码器
  • 总结:小白跟大牛都在用的好平台!

前言

  • 硬件工程师近年来也开始慢慢吃香,校招进大厂年薪总包不下30-40w的人数一大把!而且大厂人数并没有饱和!
    - 本期是【Verilog刷题篇】硬件工程师从0到入门1|基础语法入门,有不懂的地方可以评论进行讨论!
  • 推荐给大家一款刷题、面试的神器,我也是用这一款神器进行学习Verilog硬件代码的!
  • ~链接如下:刷题面试神器跳转链接
  • 也欢迎大家去牛客查看硬件工程师招聘职位的各类资料,并进行提前批投递面试!
  • 小白新手可以通过该神器进行日常的刷题、看大厂面经、学习计算机基础知识、与大牛面对面沟通~ 刷题的图片已经放在下面了~

Q1:4位数值比较器电路

问题描述:某4位数值比较器的功能表如下。请用Verilog语言采用门级描述方式,实现此4位数值比较器。

输入描述:input [3:0] A ,input [3:0] B
输出描述:
output wire Y2 , //A>B
output wire Y1 , //A=B
output wire Y0 //A<B

示例代码:

`timescale 1ns/1ns
module comparator_4(input       [3:0]       A       ,input     [3:0]        B       ,output  wire       Y2    , //A>Boutput   wire        Y1    , //A=Boutput   wire        Y0      //A<B
);wire [3:0]y2;wire [3:0]y1;wire [3:0]y0;genvar i;generatefor(i=0;i<4;i=i+1)begin:my_lable//使用for进行模块例化bit_cmp cmp_1_u(.A(A[i]),.B(B[i]),.Y2(y2[i]),.Y1(y1[i]),.Y0(y0[i]));endendgenerateassign Y2=y2[3] || (y1[3] && y2[2]) || (y1[3] && y1[2] && y2[1]) || (y1[3] && y1[2] && y1[1] && y2[0]);assign Y1=y1[3] && y1[2] && y1 [1] && y1[0] ;assign Y0=y0[3] || (y1[3] && y0[2]) || (y1[3] && y1[2] && y0[1]) || (y1[3] && y1[2] && y1[1] && y0[0]);
endmodule
module bit_cmp(input A,input B,output Y2,//大于output Y1,//等于output Y0//小于
);//注意这里比较大小的方式,很经典********************************assign Y2=A&(!B);//门级表示,不能用大于等于异或同或assign Y1=!(Y2|Y0);assign Y0=(!A)&B;
endmodule

Q2:4bit超前进位加法器电路

问题描述:

输入描述:

输入信号:
A_in[3:0],
B_in[3:0]
C_1
类型:wire

输出描述:

输出信号:
S[3:0]
CO
类型:wire

示例代码:

`timescale 1ns/1ns
module lca_4(input      [3:0]       A_in  ,input        [3:0]       B_in  ,input                   C_1   ,output     wire           CO    ,output   wire [3:0]      S
);wire [3:0] G;wire [3:0] P;wire [3:0] C;assign G = A_in & B_in;assign P = A_in ^ B_in;assign C = G | (P & {C[2:0], C_1});assign S = P ^ {C[2:0], C_1};assign CO = C[3];
endmodule

Q3:优先编码器电路①

问题描述:

输入描述:input [8:0] I_n
输出描述:output reg [3:0] Y_n

示例代码:

`timescale 1ns/1ns
module encoder_0(input      [8:0]         I_n   ,output reg [3:0]         Y_n
);always @(*) begincasex(I_n)9'b 0xxxxxxxx : Y_n=4'b0110;9'b 10xxxxxxx : Y_n=4'b0110;9'b 110xxxxxx : Y_n=4'b1000;9'b 1110xxxxx : Y_n=4'b1001;9'b 11110xxxx : Y_n=4'b1010;9'b 111110xxx : Y_n=4'b1011;9'b 1111110xx : Y_n=4'b1100;9'b 11111110x : Y_n=4'b1101;9'b 111111110 : Y_n=4'b1110;9'b 111111111: Y_n=4'b1111;default: Y_n=4'bxxxx;endcaseend
endmodule

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

问题描述:

输入描述:input [9:0] S_n
输出描述:
output wire[3:0] L ,
output wire GS

示例代码:

`timescale 1ns/1ns
module encoder_0(input      [8:0]         I_n   ,output reg [3:0]         Y_n
);
always @(*)begincasex(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
);//11_1111_1111  L:0000   GS:0//11_1111_1110  L:0000   GS:1wire [3:0] L_tempencoder_0 encoder(S_n[9:1],L_temp);assign L = ~L_temp;assign GS = ~((S_n[0])&(&L_temp));
endmodule

Q5:优先编码器Ⅰ

问题描述:

输入描述:
input [7:0] I ,
input EI
输出描述:
output wire [2:0] Y ,
output wire GS ,
output wire EO

示例代码:

`timescale 1ns/1ns
module encoder_83(input      [7:0]       I   ,input                  EI  ,output wire [2:0]      Y   ,output wire            GS  ,output wire            EO
);reg [2:0] Y_reg;always@(*)begincasex(I)8'b1xxx_xxxx:Y_reg = 3'd7;8'b01xx_xxxx:Y_reg = 3'd6;8'b001x_xxxx:Y_reg = 3'd5;8'b0001_xxxx:Y_reg = 3'd4;8'b0000_1xxx:Y_reg = 3'd3;8'b0000_01xx:Y_reg = 3'd2;8'b0000_001x:Y_reg = 3'd1;8'b0000_0001:Y_reg = 3'd0;8'b0000_0000:Y_reg = 3'd0;default:Y_reg = 3'd0;endcaseendassign Y = (EI == 1'b1)?Y_reg:3'd0;assign GS = ((EI == 1'b1)&&(I != 8'b0000_0000))?1'b1:1'b0;assign EO = ((EI == 1'b1)&&(I == 8'b0000_0000))?1'b1:1'b0;
endmodule

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

问题描述:请使用2片该优先编码器Ⅰ及必要的逻辑电路实现16线-4线优先编码器。优先编码器Ⅰ的真值表和代码已给出。
可将优先编码器Ⅰ的代码添加到本题答案中,并例化。
优先编码器Ⅰ的代码如下:

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

输入描述:
input [15:0] A ,
input EI
输出描述:
output wire [3:0] L ,
output wire GS ,
output wire EO

示例代码:

`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);
endmodulemodule encoder_164(input      [15:0]      A   ,input                  EI  , output wire [3:0]      L   ,output wire            GS  ,output wire            EO
);wire E_conect;//定义中间量wire [2:0] Y1;wire [2:0] Y0;wire GS0;wire GS1;encoder_83 U0(//低位.I(A[7:0]),.EI(E_conect),.Y(Y0),.GS(GS0),.EO(EO));encoder_83 U1(//高位.I(A[15:8]),.EI(EI),//因为是从高位开始查找不为零的数,所以EI先给高位芯片.Y(Y1),.GS(GS1),.EO(E_conect));assign GS= GS1|| GS0;assign L[3]=GS1;assign L[2] = Y1[2] | Y0[2];assign L[1] = Y1[1] | Y0[1];assign L[0] = Y1[0] | Y0[0];endmodule

总结:小白跟大牛都在用的好平台!

  • 硬件工程师近年来也开始慢慢吃香,校招进大厂年薪总包不下30-40w的人数一大把!而且大厂人数并没有饱和!
    - 本期是【Verilog刷题篇】硬件工程师从0到入门1|基础语法入门,有不懂的地方可以评论进行讨论!

快来点击链接进行跳转注册,开始你的保姆级刷题之路吧!刷题打怪码神之路

另外这里不仅仅可以刷题,你想要的这里都会有,十分适合小白和初学者入门学习~
1、算法篇(398题):面试必刷100题、算法入门、面试高频榜单
2、数据结构篇(300题):都是非常经典的链表、树、堆、栈、队列、动态规划等
3、语言篇(500题):C/C++、java、python入门算法练习
4、SQL篇(82题):快速入门、SQL必知必会、SQL进阶挑战、面试真题
5、大厂笔试真题:字节跳动、美团、百度、腾讯…掌握经验不在惧怕面试!

【Verilog刷题篇】硬件工程师从0到入门2|组合逻辑相关推荐

  1. 【Python刷题篇】Python从0到入门3|循环、条件复习、元组入门、字典入门

    Python从0到入门3目录 前言 Q1:团队分组 Q2:禁止重复注册 Q3:元组-牛客运动会 Q4:字典-遍历字典 Q5:字典-毕业生就业调查 Q6:姓名与学号 总结 前言 - 本期是Python从 ...

  2. 【Python刷题篇】Python从0到入门4|字典复习、函数入门、综合实践

    Python从0到入门3目录 前言 Q1:字典复习-首都 Q2:函数入门-求差 Q3:函数入门-牛牛的朋友 Q4:综合案例:自动售卖饮料机 Q5:综合案例-被8整除的数字 Q6:综合案例-披萨店的订单 ...

  3. 【嵌入式入门篇】嵌入式0基础沉浸式刷题篇1

    嵌入式-入门沉浸式刷题篇 前言 Q1:嵌入式牛牛宏大小 Q2:嵌入式宏空间坐标数量 Q3:嵌入式牛牛疑惑的变量 Q4:嵌入式关键字const Q5:嵌入式机器的大小端 Q6:嵌入式不用排序找数字 Q7 ...

  4. 【Go语言刷题篇】Go完结篇|函数、结构体、接口、错误入门学习

    Go从0到入门6-Go完结篇 前言 Q1:函数-数字的阶乘 Q2:函数-绝对值 Q3:函数-加减乘除 Q4:结构体-学生信息1 Q5:结构体-学生信息2 Q6:接口-动物和老虎 Q7:错误-网络延迟 ...

  5. FPGA学习: Verilog刷题记录(15)

    FPGA学习: Verilog刷题记录(14-1) 刷题网站 : HDLBits 第三章 : Circuits 第二节 :Sequential Logic 第一节:Finite State Machi ...

  6. Verilog刷题HDLBits——Exams/ece241 2014 q7a

    Verilog刷题HDLBits--Exams/ece241 2014 q7a 题目描述 代码 结果 题目描述 Design a 1-12 counter with the following inp ...

  7. Verilog刷题HDLBits——Tb/tff

    Verilog刷题HDLBits--Tb/tff 题目描述 代码 结果 题目描述 You are given a T flip-flop module with the following decla ...

  8. FPGA学习: Verilog刷题记录(10)

    FPGA学习: Verilog刷题记录(10) 刷题网站 : HDLBits 第三章 : Circuits 第二节 :Sequential Logic 第一节:Latches and Flip-Flo ...

  9. 【刷题记录①】Java从0到1入门|基础知识巩固练习

    JAVA从0到1入门刷题记录 目录 一.类型转换 二.简单运算 三.四舍五入 四.交换变量值 五.计算商场折扣 六.判断体重指数 总结 我几乎每天都会刷题训练来使自己对各种算法随时保持一个清晰的状态. ...

最新文章

  1. 2021年大数据ELK(二十七):数据可视化(Visualize)
  2. Python使用问题汇总
  3. (0032) iOS 开发之Block 的基础用法及注意事项1
  4. 冷热分治,DT时代的数据存储必由之路
  5. 遇到多个构造器参数时要考虑使用Builder
  6. java的继承_java中的继承(一)
  7. c语言输出11258循环,c/c++内存机制(一)(转)
  8. 10条途径迅速提高你的生活
  9. java spi使用详解
  10. HDU 3441 Rotation
  11. 前端获取后台布尔类型_教育平台项目前端:视频讲解
  12. 泰坦尼克号的数据分析
  13. python dwg文件 读取_如何使用Python打开DWG文件扩展名?
  14. PHP打印九九乘法表
  15. 【常用表】三角函数基本公式
  16. 计算机英语词汇合成词有哪些,2018年12月英语四级词汇讲解丨考点归纳:合成词...
  17. 二十年后的回眸(3)——快乐的单身汉
  18. virtualbox 菜单栏不见了
  19. 神州信息与瀚华金控签署战略协议 共推数字普惠金融
  20. 兽医外科设备的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. SSOJ 2316 面积【DFS/Flood Fill】
  2. 近端梯度下降与软阈值迭代:PGD and ISTA
  3. html5自带文字转语音,原来电脑自带有文字转语音方法,只需一个键,再也不担心要配音了...
  4. matlab 单元质量矩阵,这样组装平面桁架的质量矩阵对不对呢?
  5. java删除文件下所有文件_用java实现删除文件夹里的所有文件
  6. cuBLAS矩阵乘法
  7. 《机械制造业智能工厂规划设计》——第3章 机械制造业智能工厂的总体框架 3.1 智能制造的通用定义和特征...
  8. Win7使用PQ误分区的修复
  9. 计算机网络 北京大学,北京大学
  10. 毕业设计 基于51单片机无线蓝牙APP控LED灯亮灭亮度设计